Giá trị p của NaN khi sử dụng goodfit của R trên dữ liệu nhị thức


8

Tôi đang cố gắng kiểm tra mức độ phù hợp của một vectơ dữ liệu đếm đến nhị thức. Để làm như vậy tôi đang sử dụng goodfit()chức năng trong vcdgói. Tuy nhiên, khi tôi chạy hàm, nó sẽ trả về NaNgiá trị p của phép thử Chi bình phương. Trong thiết lập của tôi, tôi có một vectơ dữ liệu đếm với 75 phần tử.

> library(vcd)
> counts <- c(32, 35, 44, 35, 41, 33, 42, 49, 36, 41, 42, 45, 38, 43, 36, 
35, 40, 40, 43, 34, 39, 31, 40, 39, 36, 37, 37, 37, 32, 48, 41, 
32, 37, 36, 49, 37, 41, 36, 34, 37, 41, 32, 36, 36, 30, 33, 33, 
42, 39, 36, 36, 29, 31, 41, 36, 39, 40, 37, 39, 39, 31, 39, 37, 
40, 33, 41, 34, 46, 35, 41, 44, 38, 44, 34, 42)
> test.gof <- goodfit(counts, type="binomial", 
+                     par=list(size=length(counts), prob=0.5))

Mọi thứ hoạt động tốt, nhưng khi tôi kiểm tra goodfit()đối tượng, tôi nhận được như sau:

> summary(test.gof)

 Goodness-of-fit test for binomial distribution

                      X^2 df  P(> X^2)
Pearson               NaN 75       NaN
Likelihood Ratio 21.48322 19 0.3107244
Warning message:
In summary.goodfit(test.gof) : Chi-squared approximation may be incorrect

Tôi nghi ngờ đó là một vấn đề kích thước mẫu nhỏ lúc đầu, nhưng tôi cũng có một bộ dữ liệu với 50 quan sát không trả về NaNgiá trị p. Tôi cũng đã cố gắng chuyển phương thức goodfit()sang ML với kết quả tương tự.

Tại sao chức năng này sẽ được sản xuất NaNtrong trường hợp này? Có một chức năng thay thế để tính toán GOF trên dữ liệu đếm?


@Gavin: nó nên được đóng lại hoặc nó có thể được di chuyển?
Joshua Ulrich

@Joshua Nếu nó có thể được di chuyển bằng một mod, di chuyển sẽ là tốt nhất vì @DrewConway đã thực hiện một công việc hợp lý với Q và độ tái tạo. Làm thế nào để chúng ta đạt được một di cư? Đánh dấu bài?
Gavin Simpson

Chết tiệt, tôi đã viết một câu trả lời và phải di chuyển trong 10 phút từ máy. Và bây giờ tôi đã trở lại và thấy ý kiến ​​của bạn. =)
aL3xa

Câu hỏi này đã được hợp nhất với gần trùng lặp của nó.
whuber

Câu trả lời:


5

Bạn có tần số bằng không trong số lượng quan sát. Điều đó giải thích NaNs trong dữ liệu của bạn. Nếu bạn nhìn vào test.gofđối tượng, bạn sẽ thấy rằng:

table(test.gof$observed)

 0  1  2  3  4  5  7  8 10 
56  5  3  2  5  1  1  2  1

bạn có 56 số không. Dù sao, IMHO câu hỏi này là dành cho http://stats.stackexchange.com .


1
Cảm ơn bạn đã đăng lại từ SO, nhưng làm thế nào để bạn khuyên tôi nên xử lý các số không cho rằng tôi vẫn muốn ước tính GOF?
DrewConway

Xin chào Drew, xin lỗi vì câu trả lời muộn của tôi. Chà, trong trường hợp tần số bằng 0, thì nên (ít nhất là tôi được dạy như vậy) cho các thể loại hợp nhất, vì Chi-vuông cho phép một số tần số 0 (tần số dưới 20% có thể là 0 khi hệ số có nhiều hơn 2 mức) , nếu điều đó hợp lý, hoặc bỏ Chi-vuông và chọn một kỹ thuật thay thế. Vì tôi thường bỏ điều này, vì vậy bạn có thể muốn hỏi một câu hỏi khác liên quan đến bài kiểm tra mức độ phù hợp.
aL3xa

3

Bạn sẽ hạnh phúc hơn với một đối tượng goodfit thay đổi phẫu thuật?

> idx <- which(test.gof$observed != 0)
> idx
 [1] 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50
> test.gof$par$size <- length(  idx-1)
> test.gof$fitted <- test.gof$fitted[idx]
> test.gof$count <- test.gof$count[idx]
> test.gof$observed <- test.gof$observed[idx]
> summary(test.gof)

     Goodness-of-fit test for binomial distribution

                      X^2 df  P(> X^2)
Pearson               Inf 75 0.0000000
Likelihood Ratio 21.48322 19 0.3107244
Warning message:
In summary.goodfit(test.gof) : Chi-squared approximation may be incorrect

Gian lận! / 10char :)
Brandon Bertelsen

0

Hãy thử vẽ nó. Bạn sẽ có một ý tưởng tốt hơn về những gì đang xảy ra. Như đã đề cập trước đây, bạn đang nhận NaN vì bạn truyền 0 tần số cho chisq.test ()

test.gof <- goodfit(counts, type="binomial", par=list(size=length(counts), prob=0.5)) 
plot(test.gof)
## doesn't look so good 
test.gof <- goodfit(counts, type="binomial", par=list(size=length(counts))) 
plot(test.gof)
## looks a little more clear
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.