Kiểm tra xem hai phân phối nhị thức có khác nhau về mặt thống kê không


37

Tôi có ba nhóm dữ liệu, mỗi nhóm có phân phối nhị thức (tức là mỗi nhóm có các yếu tố là thành công hoặc thất bại). Tôi không có xác suất dự đoán thành công, nhưng thay vào đó chỉ có thể dựa vào tỷ lệ thành công của từng người như một xấp xỉ cho tỷ lệ thành công thực sự. Tôi chỉ tìm thấy câu hỏi này , rất gần nhưng dường như không giải quyết chính xác với kịch bản này.

Để đơn giản hóa bài kiểm tra, hãy nói rằng tôi có 2 nhóm (3 nhóm có thể được mở rộng từ trường hợp cơ sở này).

  • Thử nghiệm nhóm 1: = 2455n1
  • Thử nghiệm nhóm 2: = 2730n2

  • Thành công của nhóm 1: = 1556k1
  • Nhóm 2 thành công: = 1671k2

Tôi không có xác suất thành công như mong đợi, chỉ những gì tôi biết từ các mẫu. Vì vậy, tỷ lệ thành công ngụ ý của tôi cho hai nhóm là:

  • Tỷ lệ thành công của nhóm 1: = 1556/2455 = 63,4%p1
  • Tỷ lệ thành công của nhóm 2: = 1671/2730 = 61,2%p2

Tỷ lệ thành công của từng mẫu khá gần nhau. Tuy nhiên kích thước mẫu của tôi cũng khá lớn. Nếu tôi kiểm tra CDF của phân phối nhị thức để xem nó khác với lần đầu tiên như thế nào (trong đó tôi giả sử lần đầu tiên là kiểm tra null) tôi có một xác suất rất nhỏ rằng lần thứ hai có thể đạt được.

Trong Excel:

1-BINOM.DIST (1556,2455,61,2%, THẬT) = 0,012

Tuy nhiên, điều này không tính đến bất kỳ phương sai nào của kết quả đầu tiên, nó chỉ giả sử kết quả đầu tiên là xác suất thử nghiệm.

Có cách nào tốt hơn để kiểm tra xem hai mẫu dữ liệu này có thực sự khác biệt về mặt thống kê với nhau không?


Một câu hỏi khác mà tôi đã gặp không thực sự giúp ích nhiều: stats.stackexchange.com/questions/82059/iêu
Scott

Câu hỏi này có giúp được gì không? stats.stackexchange.com/questions/25299/ Mạnh
Eric

2
Trong R, bạn có thể sử dụng prop.test: prop.test(c(1556, 1671), c(2455, 2730)).
COOLSerdash

1
Có thể được thực hiện dưới dạng thử nghiệm tỷ lệ hai mẫu (nhị thức) hoặc hình vuông chi 2x2
Glen_b -Reinstate Monica

1
Việc mở rộng trường hợp cơ sở từ hai nhóm thành ba có thể có vấn đề, bởi vì các bài kiểm tra sẽ phụ thuộc lẫn nhau: bạn sẽ cần một phiên bản nhị phân của ANOVA để xử lý điều đó.
whuber

Câu trả lời:


36

Giải pháp là một google đơn giản: http://en.wikipedia.org/wiki/Statistic_hypothesis_testing

Vì vậy, bạn muốn kiểm tra giả thuyết null sau đây chống lại sự thay thế đã cho

H A : p 1p 2H0:p1= =p2 so vớiHMột:p1p2

Vì vậy, bạn chỉ cần tính toán thống kê kiểm tra đó là

z= =p^1-p^2p^(1-p^)(1n1+1n2)

trong đó . p^= =n1p^1+n2p^2n1+n2

Vì vậy, bây giờ, trong vấn đề của bạn, , , và p 2=0,612n1=2455n2=2730.p^1= =.634p^2= =.612n1= =2455n2= =2730.

Khi bạn tính toán thống kê kiểm tra, bạn chỉ cần tính giá trị khu vực quan trọng tương ứng để so sánh thống kê kiểm tra của bạn. Ví dụ: nếu bạn đang kiểm tra giả thuyết này ở mức độ tin cậy 95% thì bạn cần so sánh thống kê kiểm tra của mình với giá trị khu vực quan trọng của (đối với thử nghiệm hai đuôi này).zα/2= =1,96

Bây giờ, nếu thì bạn có thể từ chối giả thuyết null, nếu không bạn phải từ chối giả thuyết null. z>zα/2

Vâng, giải pháp này hoạt động cho trường hợp khi bạn so sánh hai nhóm, nhưng nó không khái quát cho trường hợp bạn muốn so sánh 3 nhóm.

Tuy nhiên, bạn có thể sử dụng bài kiểm tra Chi Squared để kiểm tra xem cả ba nhóm có tỷ lệ bằng nhau như được đề xuất bởi @Eric trong nhận xét của anh ấy ở trên không: "Câu hỏi này có giúp ích gì không?


6
Cảm ơn @Dan. Như nhiều lần với Google, biết thuật ngữ phù hợp để tìm kiếm là trở ngại đầu tiên. Tôi đã xem xét bài kiểm tra chi bình phương. Vấn đề ở đó, như lần đầu tiên tôi gặp khó khăn, đó là tính toán dự kiến ​​của tôi dựa trên mẫu. Do đó tôi không thể cung cấp một giá trị mong đợi, bởi vì các mẫu của tôi được sử dụng để xác định giá trị mong đợi đó.
Scott

@ Hủy bỏ, nếu tỷ lệ giả thuyết của bạn cho ba nhóm là tất cả đều bằng nhau thì giá trị mong đợi sẽ là 1/3 cho mỗi nhóm.
Dan

1
Có thể tìm thấy lời giải thích liên quan đến việc sử dụng thử nghiệm này tại đây: itl.nist.gov/div898/handbook/prc/section3/prc33.htm (hiện tại, trang Wikipedia không cung cấp ví dụ hướng dẫn).
wwwilliam

Ai đó có thể giúp tôi chứng minh độ lệch chuẩn của chênh lệch giữa hai phân phối nhị thức không, nói cách khác chứng minh rằng:
p^(1p^)(1n1+1n2)=p^1(1p^1)n1+p^2(1p^2)n2
Tanguy

câu trả lời cho câu hỏi của tôi có thể được tìm thấy ở đây: stats.stackexchange.com/questions/361015/iêu
Tanguy

11

Trong R, câu trả lời được tính như sau:

fisher.test(rbind(c(1556,2455-1556), c(1671,2730-1671)), alternative="less")

8
Bạn có xem xét việc viết nhiều hơn một chút so với việc cung cấp hàm R không? Đặt tên hàm không giúp ích trong việc hiểu vấn đề và không phải ai cũng sử dụng R, vì vậy nó sẽ không giúp ích gì cho họ.
Tim

1
Đây là câu trả lời thống kê chính xác nhất và hoạt động cho một số lượng nhỏ các quan sát (xem phần sau: itl.nist.gov/div898/handbook/prc/section3/prc33.htm ).
Andrew Mao

1
Kiểm tra chính xác người câu cá en.wikipedia.org/wiki/Fisher's_exact_test
Keith

3

Chỉ là một bản tóm tắt:

Câu trả lời của Dan và Abaumann đề nghị thử nghiệm theo mô hình nhị thức trong đó giả thuyết null là mô hình nhị thức đơn thống nhất với giá trị trung bình ước tính từ dữ liệu thực nghiệm. Câu trả lời của họ là đúng trong lý thuyết nhưng họ cần xấp xỉ bằng phân phối chuẩn vì phân phối thống kê kiểm tra không chính xác theo phân phối chuẩn. Do đó, nó chỉ đúng với kích thước mẫu lớn.

Nhưng câu trả lời của David chỉ ra một bài kiểm tra không tham số bằng cách sử dụng bài kiểm tra của Fisher. Thông tin có tại đây: https://en.wikipedia.org/wiki/Fisher%27s_exact_test Và nó có thể được áp dụng cho các cỡ mẫu nhỏ nhưng khó tính cho các cỡ mẫu lớn.

Thử nghiệm nào để sử dụng và mức độ bạn tin tưởng giá trị p của bạn là một bí ẩn. Nhưng luôn có sự thiên vị trong bất kỳ thử nghiệm nào để lựa chọn.


2
1/2

1
Trong trường hợp này, tôi nghĩ bạn có thể sử dụng phương pháp của Dan nhưng tính giá trị p theo cách chính xác (nhị thức) và cách xấp xỉ (Z bình thường> 1 Φ 1 (1 − α / 2) Z> − 1 (1 − α / 2) và Z <Φ 1 (α / 2)) để so sánh xem chúng có đủ gần không.
Dr_ITH

1

Z=p1^p2^p^(1p^)(1/n1+1/n2)p^=n1p1^+n2p2^n1+n2

Z>Φ1(1α/2)Z<Φ1(α/2)


1

Trong Python, statsmodels có một hàm được gọi là proportions_ztest. Đây là một ví dụ về việc sử dụng nó:

import statsmodels.api as sm
import numpy as np
import rpy2.robjects.packages as rpackages
import rpy2.robjects as robjects
rstats = rpackages.importr('stats')

s1 = 1556
n1 = 2455

s2 = 1671
n2 = 2730

# manual calculation
p1 = s1 / n1
p2 = s2 / n2
p = (s1 + s2) / (n1 + n2)

z = (p1 - p2) / (p*(1-p)*((1/n1)+(1/n2)))**0.5

# using R in Python with rpy2
rmatrix = robjects.r.matrix(robjects.IntVector([s1, n1-s1, s2,n2-s2]), nrow=2)
fisher_test = rstats.fisher_test(rmatrix, alternative="two.sided")

zscore, pval = sm.stats.proportions_ztest([s1, s2], [n1, n2], alternative='two-sided')

print('Manual calculation of z: {:.6f}'.format(z))
print('Z-score from statsmodels: {:.6f}'.format(zscore))
print('R pvalue from fisher.test: {:.6f}'.format(fisher_test[0][0]))
print('Statsmodels pvalue: {:.6f}'.format(pval))

Điều này in ra:

Manual calculation of z: 1.610825
Z-score from statsmodels: 1.610825
R pvalue from fisher.test: 0.108268
Statsmodels pvalue: 0.107218

-1

Bài gốc: Câu trả lời của Dan thực sự không chính xác, không xúc phạm bất cứ ai. Kiểm tra z chỉ được sử dụng nếu dữ liệu của bạn tuân theo phân phối chuẩn thông thường. Trong trường hợp này, dữ liệu của bạn tuân theo phân phối nhị thức, do đó, hãy sử dụng phép thử chi bình phương nếu mẫu của bạn lớn hoặc thử nghiệm của ngư dân nếu mẫu của bạn nhỏ.

Chỉnh sửa: Lỗi của tôi, xin lỗi @Dan. Kiểm tra z có giá trị ở đây nếu các biến của bạn độc lập. Nếu giả định này không được đáp ứng hoặc không xác định, kiểm tra z có thể không hợp lệ.


3
χ2

Nếu bạn tin vào CLT, thì phân phối bình thường không tồn tại.
Ryan

2
@Ryan Vâng, tôi tin vào CLT nhưng nó không nói gì về n = 30 hoặc n = 300 hoặc n = 5000. Bạn không thực sự có được tính quy tắc trừ khi bạn bằng cách nào đó quản lý để có kích thước mẫu vô hạn hoặc bằng cách nào đó bạn bắt đầu với tính quy tắc. Các câu hỏi về mức độ gần gũi với tính quy tắc khi lấy trung bình không được CLT giải quyết .. (Chúng tôi có thể xem xét những câu hỏi đó nhưng chúng tôi không sử dụng CLT để tìm hiểu xem phép tính gần đúng có tốt không.)
Glen_b -Reinstate Monica
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.