Làm cách nào để kiểm tra xem dữ liệu của tôi có phù hợp với phân phối theo cấp số nhân không?


22

Làm cách nào tôi có thể kiểm tra xem dữ liệu của mình, ví dụ tiền lương là từ phân phối theo cấp số nhân liên tục trong R?

Đây là biểu đồ mẫu của tôi:

nhập mô tả hình ảnh ở đây

. Chúng tôi rất trân trọng bất kỳ sự giúp đỡ nào!


1
là biến của bạn rời rạc hay liên tục? Phân phối theo cấp số nhân được định nghĩa là liên tục .
Tò mò

liên tục. Tôi tự hỏi nếu có bất kỳ thử nghiệm nào trong R để kiểm tra điều đó
nghiêm túc

1
Chào mừng bạn Tìm hàm fitdistrtrong R. Nó điều chỉnh các hàm mật độ xác suất (pdf) dựa trên phương pháp ước tính khả năng tối đa (MLE). Cũng tìm kiếm trong các điều khoản trang web này như pdf, fitdistr, mle và các câu hỏi tương tự sẽ xuất hiện. Nghĩ rằng những câu hỏi như vậy hầu như đòi hỏi ví dụ có thể lặp lại để thu thập những câu trả lời hay. Ngoài ra, nó có ích nếu câu hỏi không hoàn toàn là về lập trình (điều này có thể khiến nó bị hoãn lại ngoài chủ đề).
Andre Silva

8
Phân phối theo cấp số nhân sẽ vẽ đồ thị theo đường thẳng so với vị trí vẽ) trong đó vị trí vẽ là (thứ hạng , thứ hạng là cho giá trị thấp nhất, là cỡ mẫu và lựa chọn phổ biến cho bao gồm . Điều đó mang lại một bài kiểm tra không chính thức có thể hữu ích hơn bất kỳ bài kiểm tra chính thức nào. ln(11 n một 1 / 2a)/(n2a+1)1na1/2
Nick Cox

@Berkan đã phát triển ý tưởng cốt truyện lượng tử trong bài viết của mình.
Nick Cox

Câu trả lời:


29

Tôi sẽ làm điều đó bằng cách ước tính tham số phân phối duy nhất ratebằng cách sử dụng fitdistr. Điều này sẽ không cho bạn biết nếu phân phối phù hợp hay không, do đó bạn phải sử dụng mức độ phù hợp của kiểm tra sự phù hợp . Đối với điều này, bạn có thể sử dụng ks.test:

require(vcd)
require(MASS)

# data generation
ex <- rexp(10000, rate = 1.85) # generate some exponential distribution
control <- abs(rnorm(10000)) # generate some other distribution

# estimate the parameters
fit1 <- fitdistr(ex, "exponential") 
fit2 <- fitdistr(control, "exponential")

# goodness of fit test
ks.test(ex, "pexp", fit1$estimate) # p-value > 0.05 -> distribution not refused
ks.test(control, "pexp", fit2$estimate) #  significant p-value -> distribution refused

# plot a graph
hist(ex, freq = FALSE, breaks = 100, xlim = c(0, quantile(ex, 0.99)))
curve(dexp(x, rate = fit1$estimate), from = 0, col = "red", add = TRUE)

nhập mô tả hình ảnh ở đây

Từ kinh nghiệm cá nhân của tôi (mặc dù tôi chưa bao giờ tìm thấy nó chính thức ở bất cứ đâu, vui lòng xác nhận hoặc sửa lỗi cho tôi), ks.testsẽ chỉ chạy nếu bạn cung cấp ước tính tham số trước. Bạn không thể để nó ước tính các tham số tự động như ví dụ goodfit. Đó là lý do tại sao bạn cần thủ tục hai bước này với fitdistr.

Để biết thêm thông theo hướng dẫn tuyệt vời của Ricci: NỐI VỚI phân phối R .


2
+1. Là ks.test là thử nghiệm tốt nhất để kiểm tra mức độ phù hợp trong các tình huống như vậy? Tôi nghĩ bạn cũng đã trả lời một câu hỏi của tôi .
Andre Silva

4
chỉ cần ngẩng cao đầu, bạn nên cẩn thận nếu bạn ước tính các tham số từ chính dữ liệu. Trong trường hợp đó, một bài kiểm tra như anderson yêu có thể là tốt nhất, vì nó mạnh mẽ chống lại các tình huống như vậy.
JPC

Trong bài kiểm tra KS về tính hàm mũ khi tham số tỷ lệ được ước tính từ dữ liệu: xem Một câu hỏi ngây thơ về bài kiểm tra Kolmogorov Smirnov .
Scortchi - Phục hồi Monica

8

Mặc dù tôi thường khuyên bạn nên kiểm tra số mũ bằng cách sử dụng các ô chẩn đoán (chẳng hạn như các ô QQ), tôi sẽ thảo luận về các thử nghiệm, vì mọi người thường muốn chúng:

Như Tomas gợi ý, thử nghiệm Kolmogorov - Smirnov không phù hợp để thử nghiệm hàm mũ với một tham số không xác định.

Tuy nhiên, nếu bạn điều chỉnh các bảng để ước tính tham số, bạn sẽ nhận được thử nghiệm của Lilliefors cho phân phối theo cấp số nhân.

Lilliefors, H. (1969), "Trong bài kiểm tra KolmogorovTHER Smirnov cho phân bố theo cấp số nhân với ẩn số trung bình", Tạp chí của Hiệp hội Thống kê Hoa Kỳ , Tập. 64. trang 387 bóng389.

Việc sử dụng thử nghiệm này được thảo luận trong phần Thống kê phi trắc nghiệm thực tế của Conover .

Tuy nhiên, trong Goodness of Fit Techn kỹ thuật của D'Agostino & Stephens , họ thảo luận về một sửa đổi tương tự của bài kiểm tra Anderson-Darling (hơi khó hiểu nếu tôi nhớ đúng, nhưng tôi nghĩ tất cả thông tin cần thiết về cách tiếp cận nó cho trường hợp theo cấp số nhân là được tìm thấy trong cuốn sách), và điều đó gần như chắc chắn sẽ có nhiều sức mạnh hơn trước những lựa chọn thay thế thú vị.

Tương tự, người ta có thể ước tính một cái gì đó giống như thử nghiệm Shapiro-Francia (gần giống với Shapiro-Wilk), bằng cách dựa vào thử nghiệm trên trong đó là mối tương quan giữa thống kê đơn hàng và điểm số mũ ( thống kê đơn hàng theo cấp số nhân dự kiến). Điều này tương ứng với việc kiểm tra mối tương quan trong cốt truyện QQ.rn(1r2)r

Cuối cùng, người ta có thể thực hiện phương pháp thử nghiệm trơn tru , như trong cuốn sách của Rayner & Best ( Smooth Test of Goodness of Fit , 1990 - mặc dù tôi tin rằng có một phương pháp gần đây hơn, với Thas và " in R " được thêm vào tiêu đề). Trường hợp hàm mũ cũng được đề cập trong:

JCW Rayner và DJ Best (1990), "Những thử nghiệm suôn sẻ về sự phù hợp: Tổng quan", Tạp chí thống kê quốc tế , Tập. 58, số 1 (tháng 4 năm 1990), trang 9-17

Cosma Shalizi cũng thảo luận về các bài kiểm tra suôn sẻ trong một chương của ghi chú bài giảng Phân tích dữ liệu nâng cao đại học của mình , hoặc xem Ch15 của cuốn sách Phân tích dữ liệu nâng cao từ quan điểm cơ bản .

Đối với một số điều trên, bạn có thể cần mô phỏng phân phối thống kê kiểm tra; đối với các bảng khác có sẵn (nhưng trong một số trường hợp, có thể mô phỏng dễ dàng hơn, hoặc thậm chí chính xác hơn để mô phỏng chính bạn, như với thử nghiệm Lilliefors, do kích thước mô phỏng hạn chế trong bản gốc).

Trong tất cả những thứ đó, tôi nghiêng về việc thực hiện một thứ tương đương với cấp số nhân với Shapiro-Francia (nghĩa là tôi sẽ kiểm tra mối tương quan trong cốt truyện QQ [hoặc nếu tôi đang tạo bảng, có thể sử dụng , sẽ từ chối các trường hợp tương tự] - nó đủ mạnh để cạnh tranh với các thử nghiệm tốt hơn, nhưng rất dễ thực hiện và có sự tương ứng dễ chịu với sự xuất hiện trực quan của âm mưu QQ (thậm chí có thể chọn thêm tương quan và giá trị p vào cốt truyện, nếu muốn).n(1r2)


5

Bạn có thể sử dụng biểu đồ qq , đây là một phương pháp đồ họa để so sánh hai phân phối xác suất bằng cách vẽ các lượng tử của chúng với nhau.

Trong R, không có hàm qq-lô ngoài luồng nào cho phân bố hàm mũ cụ thể (ít nhất là trong số các hàm cơ sở). Tuy nhiên, bạn có thể sử dụng điều này:

qqexp <-  function(y, line=FALSE, ...) { 
    y <- y[!is.na(y)]
    n <- length(y)
    x <- qexp(c(1:n)/(n+1))
    m <- mean(y)
    if (any(range(y)<0)) stop("Data contains negative values")
    ylim <- c(0,max(y))
    qqplot(x, y, xlab="Exponential plotting position",ylim=ylim,ylab="Ordered sample", ...)
    if (line) abline(0,m,lty=2)
    invisible()
  }

Trong khi diễn giải kết quả của bạn: Nếu hai phân phối được so sánh là tương tự nhau, các điểm trong biểu đồ qq sẽ nằm xấp xỉ trên dòng y = x. Nếu các bản phân phối có liên quan tuyến tính, các điểm trong biểu đồ qq sẽ nằm xấp xỉ trên một dòng, nhưng không nhất thiết phải trên dòng y = x.


2
Trong Stata, qexptừ SSC là một thực hiện đóng hộp.
Nick Cox
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.