फिशर का सटीक परीक्षण गैर-समान पी-मान देता है


12

मैं एक नकली आनुवांशिकी समस्या में फिशर के सटीक परीक्षण को लागू करने की कोशिश कर रहा हूं, लेकिन पी-मान सही करने के लिए तिरछा दिखाई देते हैं। एक जीवविज्ञानी होने के नाते, मुझे लगता है कि मैं हर सांख्यिकीविद् के लिए कुछ स्पष्ट याद कर रहा हूं, इसलिए मैं आपकी मदद की बहुत सराहना करूंगा।

मेरा सेटअप यह है: (सेटअप 1, मार्जिन तय नहीं)
0s और 1s के दो नमूने बेतरतीब ढंग से R. में उत्पन्न होते हैं। प्रत्येक नमूना n = 500, नमूना 0 और 1 की संभावनाएं बराबर हैं। मैं फ़िशर के सटीक परीक्षण के साथ प्रत्येक नमूने में 0/1 के अनुपात की तुलना करता हूं (बस fisher.test, इसी तरह के परिणाम के साथ अन्य सॉफ़्टवेयर की भी कोशिश की)। नमूनाकरण और परीक्षण 30 000 बार दोहराया जाता है। परिणामी पी-मान इस तरह वितरित किए जाते हैं: पी-मूल्य वितरण

सभी पी-वैल्यू का मतलब लगभग ०.५५ है, ५.० प्रतिशत ०.०५--पर। यहां तक ​​कि वितरण दाईं ओर बंद दिखाई देता है।

मैं वह सब कुछ पढ़ रहा हूं जो मैं कर सकता हूं, लेकिन मुझे ऐसा कोई संकेत नहीं मिला है कि यह व्यवहार सामान्य है - दूसरी ओर, यह सिर्फ नकली डेटा है, इसलिए मुझे किसी भी पूर्वाग्रह के लिए कोई स्रोत नहीं दिख रहा है। क्या कोई समायोजन मुझे याद आया? बहुत छोटा नमूना आकार? या शायद इसे समान रूप से वितरित नहीं किया जाना चाहिए, और पी-मानों की अलग-अलग व्याख्या की जाती है?
या क्या मुझे इसे एक लाख बार दोहराना चाहिए, 0.05 मात्रात्मक मिल जाए, और जब मैं इसे वास्तविक डेटा पर लागू करता हूं तो इसका उपयोग कटऑफ के रूप में करना चाहिए?

धन्यवाद!


अपडेट करें:

माइकल एम ने 0 और 1. के सीमांत मूल्यों को ठीक करने का सुझाव दिया। अब पी-वैल्यू एक बहुत अच्छे वितरण को प्रदान करते हैं - दुर्भाग्य से, यह एक समान नहीं है, और न ही किसी अन्य आकार की पहचान करता हूं:

p-vals ने निश्चित मार्जिन तय किया

वास्तविक R कोड जोड़ना: (सेटअप 2, मार्जिन तय)

samples=c(rep(1,500),rep(2,500))
alleles=c(rep(0,500),rep(1,500))
p=NULL
for(i in 1:30000){
  alleles=sample(alleles)
  p[i]=fisher.test(samples,alleles)$p.value
}
hist(p,breaks=50,col="grey",xlab="p-values",main="")

अंतिम संपादन:
जैसा कि टिप्पणी में व्हॉबर बताते हैं, क्षेत्र केवल द्विपद के कारण विकृत दिखते हैं। मैं सेटअप 1 (मुक्त मार्जिन) और सेटअप 2 (निश्चित मार्जिन) के लिए क्यूक्यू-प्लॉट संलग्न कर रहा हूं। इसी तरह के प्लॉट नीचे ग्लेन के सिमुलेशन में देखे जाते हैं, और वास्तव में ये सभी परिणाम एक जैसे लगते हैं। सहायता के लिए धन्यवाद!

pval-qqplot


2
न केवल समूह आकारों (500 प्रत्येक) को पकड़े हुए अपने सिमुलेशन को दोहराने की कोशिश करें, बल्कि "1" (पूल किए गए नमूने पर) का योग भी रखें। फिशर के सटीक परीक्षण का पी मान इस "निर्धारित सीमांत वितरण" सेटिंग के तहत प्राप्त होता है। क्या तस्वीर बेहतर दिखती है? Btw। आप नमूना वितरण (यानी हाइपरोमेट्रिक) की असतत प्रकृति से पी-मूल्य वितरण के बिल्कुल समान होने की उम्मीद नहीं कर सकते।
माइकल एम।

1
आपके R कोड को देखना उपयोगी हो सकता है।
संयुक्ताक्षरी

1
@ मुझे यह कोड से लगता है कि प्रत्येक पुनरावृत्ति में दोनों नमूनों में 0s और 1s की समान संख्या है (यानी अशक्त परिकल्पना को पकड़ना चाहिए) या क्या मैं गलत हूं?
बोदोनोविक

5
ये हिस्टोग्राम मुझे उल्लेखनीय रूप से एक जैसे लगते हैं। आपको याद रखना होगा कि हिस्टोग्राम्स क्षेत्र के माध्यम से प्रायिकता (या आवृत्ति) प्रदर्शित करते हैं । दाईं ओर बढ़ते अंतराल (असतत डेटा के किसी भी गैर-आयामी परीक्षण के पी-मूल्य वितरण की अपरिहार्य विसंगति के कारण) बार ऊंचाइयों को बढ़ाते हैं, लेकिन उनके क्षेत्र लगभग स्थिर लगते हैं। एकरूपता का आकलन करने के लिए एक हिस्टोग्राम का उपयोग करने के बजाय, अनुभवजन्य सीडीएफ का ग्राफ़ बनाएं।
whuber

2
विशिष्ट वितरण के अलावा, इस सवाल का पूरी तरह से यहाँ
Glen_b -Reinstate Monica

जवाबों:


10

समस्या यह है कि डेटा असतत हैं इसलिए हिस्टोग्राम को धोखा दिया जा सकता है। मैंने qqplots के साथ एक सिमुलेशन को कोडित किया है जो अनुमानित समान वितरण को दर्शाता है।

library(lattice)
set.seed(5545)
TotalNo=300
TotalYes=450

pvalueChi=rep(NA,10000)
pvalueFish=rep(NA,10000)

for(i in 1:10000){
  MaleAndNo=rbinom(1,TotalNo,.3)
  FemaleAndNo=TotalNo-MaleAndNo
  MaleAndYes=rbinom(1,TotalYes,.3)
  FemaleAndYes=TotalYes-MaleAndYes
  x=matrix(c(MaleAndNo,FemaleAndNo,MaleAndYes,FemaleAndYes),nrow=2,ncol=2)
  pvalueChi[i]=chisq.test(x)$p.value
  pvalueFish[i]=fisher.test(x)$p.value
}

dat=data.frame(pvalue=c(pvalueChi,pvalueFish),type=rep(c('Chi-Squared','Fishers'),each=10000))
histogram(~pvalue|type,data=dat,breaks=10)
qqmath(~pvalue|type,data=dat,distribution=qunif,
       panel = function(x, ...) {
         panel.qqmathline(x, ...)
         panel.qqmath(x, ...)
       })

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें


5
हिस्टोग्राम्स और असतत डेटा के बार चार्ट में ऐसे स्पाइक्स और डिप्स अक्सर बिनिंग प्रक्रिया की कलाकृतियां होती हैं। उन पर भरोसा न करें: वितरण के अधिक समझदार भूखंडों का उपयोग करें, जैसे कि क्यूसीडी भूखंड या ईसीडीएफ के रेखांकन। यहां तक ​​कि अगर वे वास्तविक हैं, तो कोई भी परवाह नहीं करेगा बशर्ते कि पी-मूल्यों के वितरण लगभग एक समान हों और सही घनत्व के हों जहां यह निर्णय लेने के लिए मायने रखता है: अंतराल में शून्य के करीब (और निश्चित रूप से 0.5 से कम)।
whuber

उत्कृष्ट बिंदु @whuber, मैं qqplots के साथ अद्यतन करूँगा।
ग्लेन

2
@whuber, ग्लेन, बहुत बहुत धन्यवाद! वास्तव में बायनिंग भ्रामक थी, जैसा कि ग्लेन के हिस्टोग्राम को अधिक विराम में विभाजित करना मेरा एक समान पैटर्न था। और मुझे अपने सिमुलेशन के साथ रैखिक अनुभवजन्य सीडीएफ / क्यूक्यू भी मिलता है, इसलिए समस्या हल हो गई लगती है।
जूड 22:15

@ जूद: यदि आप चित्रण के लिए qqplot जोड़ सकते हैं, तो यह बहुत सराहना की जाएगी, शायद दोनों सिमुलेशन के लिए भी?
माइकल एम।

Qq प्लॉट वास्तव में मदद करते हैं - धन्यवाद। क्या आप अपने उत्तर के पहले पैराग्राफ को बदलना नहीं चाहते हैं? क्या आप अभी भी अनुरक्षण के साथ एक समस्या है और यह है कि पी-मूल्य वितरण में "स्पाइक" है?
whuber
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.