Làm thế nào để tính p.value của tỷ lệ cược trong R?


8

Tôi có bảng giá trị sau:

25  75
38  162

Tỷ lệ cược là 0,7037 và log (OR) là -0,3514. Đối với bảng dự phòng có các giá trị a, b, c và d, phương sai của log (OR) được đưa ra bởi

(1/a + 1/b + 1/c + 1/d)

Làm cách nào tôi có thể tính p.value của log (OR) từ dữ liệu này trong R (cho dù nó khác 0 đáng kể)?

Câu trả lời:


9

Bạn có thể sử dụng thử nghiệm chính xác của Fisher, đầu vào bảng dự phòng và đưa ra giá trị p, với giả thuyết không có tỷ lệ chênh lệch là 1 và giả thuyết thay thế là tỷ lệ chênh lệch không bằng 1.

(tab <- matrix(c(38, 25, 162, 75), nrow=2))
#      [,1] [,2]
# [1,]   38  162
# [2,]   25   75
fisher.test(tab)
# 
#   Fisher's Exact Test for Count Data
# 
# data:  tab
# p-value = 0.2329
# alternative hypothesis: true odds ratio is not equal to 1
# 95 percent confidence interval:
#  0.3827433 1.3116294
# sample estimates:
# odds ratio 
#  0.7045301 

Trong trường hợp này giá trị p là 0,23.


Cảm ơn cho một cách thông minh để xác định giá trị p. Kiểm tra chi bình phương cũng có thể được sử dụng theo cách tương tự.
rnso

@rnso chắc chắn, mặc dù thử nghiệm chính xác của Fisher được ưa thích hơn Chi-vuông khi bạn có kích thước ô nhỏ trong bảng dự phòng.
josliber

4
Đây là một huyền thoại lâu đời nhưng rất tiếc là không đúng sự thật. Pearson thông thường cung cấp giá trị chính xác hơn so với thử nghiệm được gọi là "chính xác" của Fisher ngay cả khi tần số dự kiến ​​thấp đến 1.0. Pχ2P
Frank Harrell

bạn có thể nói thêm một chút về điều này @FrankHarrell không? Tôi biết sẽ là kết quả tiệm cận, trong khi thử nghiệm chính xác của Fisher dựa vào phân phối chính xác, làm thế nào giá trị "chính xác" hơn bằng cách sử dụng phương pháp tiệm cận? pχ2p
bdeonovic

1
Xem ý kiến ​​rộng rãi về điều này trên trang web. Tóm lại, giá trị P từ thử nghiệm của Fisher quá lớn. Lỗi tuyệt đối trung bình trong các giá trị P từ thử nghiệm của Pearson nhỏ hơn. Fisher chỉ "chính xác" theo nghĩa là giá trị P được "đảm bảo" không quá nhỏ.
Frank Mitchell

9

Một cách khác để làm điều đó (ngoài thử nghiệm chính xác của Fisher) là đưa các giá trị vào GLM nhị thức:

d <- data.frame(g=factor(1:2),
                s=c(25,75),
                f=c(38,162))
g <- glm(s/(s+f)~g,weights=s+f,data=d,
    family="binomial")
coef(summary(g))["g2",c("Estimate","Pr(>|z|)")]
##   Estimate   Pr(>|z|) 
## -0.3513979  0.2303337 

Để có được thử nghiệm tỷ lệ khả năng (chính xác hơn một chút so với giá trị Wald được hiển thị ở trên), hãy làmp

anova(g,test="Chisq")

cái nào cho

##      Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL                     1     1.4178         
## g     1   1.4178         0     0.0000   0.2338

(LRT Wald Fisher trong trường hợp này vì mẫu khá lớn)p = 0,2303337 p = 0,2329p=0.2338p=0.2303337p=0.2329


4

Tốt hơn là nên khái quát hóa giải pháp và sử dụng thử nghiệm tỷ lệ khả năng từ một mô hình thống kê, chẳng hạn như mô hình logistic. Thử nghiệm LR cung cấp giá trị khá chính xác . Điều này cũng xử lý các trường hợp bạn cần kiểm tra nhiều hơn một tham số, ví dụ: các vấn đề 3 nhóm, các hiệu ứng liên tục là phi tuyến, v.v. Thử nghiệm LR cho mô hình tổng thể (tất cả những gì cần thiết trong ví dụ này vì không có điều chỉnh các biến) có thể dễ dàng thu được trong cơ sở R hoặc sử dụng gói, ví dụ Pχ2Prms

f <- lrm(y ~ groups, weights=freqs)
f  # prints LR chi-sq, d.f., P, many other quantities

Ở đây các mô hình lồng nhau là mô hình này và một mô hình chỉ đánh chặn.


Tôi có thể thấy rằng thử nghiệm LR (lrtest) được sử dụng để so sánh các mô hình lồng nhau. Làm thế nào chúng ta có thể sử dụng nó ở đây? Bạn có thể viết một dòng mã R cho nó?
rnso

đối với những gì đáng giá thì đây ít nhiều là cách tiếp cận thống kê tương tự (mặc dù với lời giải thích tốt hơn) như trong câu trả lời của tôi ở trên. lrm()có các giá trị mặc định, định dạng đầu ra khác nhau, v.v., nhưng mô hình thống kê (IIUC) giống nhưglm(...,family="binomial")
Ben Bolker
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.