2015-10-24 6 views
14

मैं एक mutinomial मॉडल का उपयोग कर nnet के multinom समारोह का उपयोग कर लगाया बहुपद वितरण में मतभेद इस मामले में के लिए परीक्षण करने के लिए विभिन्न झीलों में घड़ियाल के वर्ग):आर: nnet multinom बहुपद फिट करने के लिए Tukey posthoc परीक्षण समग्र (पुरुष और महिला और अलग अलग आकार के आहार वरीयता देने के आंकड़ों पर

data=read.csv("https://www.dropbox.com/s/y9elunsbv74p2h6/alligator.csv?dl=1") 
head(data) 
    id size sex lake food 
1 1 <2.3 male hancock fish 
2 2 <2.3 male hancock fish 
3 3 <2.3 male hancock fish 
4 4 <2.3 male hancock fish 
5 5 <2.3 male hancock fish 
6 6 <2.3 male hancock fish 

library(nnet) 
fit=multinom(food~lake+sex+size, data = data, Hess = TRUE) 

मेरी कारकों के समग्र महत्व मैं

library(car) 
Anova(fit, type="III") # type III tests 
Analysis of Deviance Table (Type III tests) 

Response: food 
    LR Chisq Df Pr(>Chisq)  
lake 50.318 12 1.228e-06 *** 
sex  2.215 4 0.696321  
size 17.600 4 0.001477 ** 

और प्रभाव भूखंडों मुझे मिल गया जैसे का उपयोग कर प्राप्त कर सकते हैं कारक "झील"

library(effects) 
plot(effect(fit,term="lake"),ylab="Food",type="probability",style="stacked",colors=rainbow(5)) 

enter image description here

का उपयोग कर समग्र Anova परीक्षण के अलावा के लिए मैं भी हालांकि बहुपद वितरण में समग्र अंतर के लिए परीक्षण करने के लिए भी जोड़ो में Tukey posthoc परीक्षण बाहर ले जाने के लिए करना चाहते हैं जो शिकार के वस्तुओं को खाया जाता है, उदाहरण के लिए झीलों के विभिन्न जोड़े में।

मैंने पहले पैकेज glht पैकेज multcomp में फ़ंक्शन का उपयोग करने के बारे में सोचा था, लेकिन यह काम नहीं करता है, उदा। कारक lake के लिए:

library(multcomp) 
summary(glht(fit, mcp(lake = "Tukey"))) 
Error in summary(glht(fit, mcp(lake = "Tukey"))) : 
    error in evaluating the argument 'object' in selecting a method for function 'summary': Error in glht.matrix(model = list(n = c(6, 0, 5), nunits = 12L, nconn = c(0, : 
    ‘ncol(linfct)’ is not equal to ‘length(coef(model))’ 

वैकल्पिक इस के लिए पैकेज lsmeans का इस्तेमाल किया गया है, जिसके लिए मैंने कोशिश की

lsmeans(fit, pairwise ~ lake | food, adjust="tukey", mode = "prob") 
$contrasts 
food = bird: 
contrast    estimate   SE df t.ratio p.value 
george - hancock -0.04397388 0.05451515 24 -0.807 0.8507 
george - oklawaha 0.03680712 0.03849268 24 0.956 0.7751 
george - trafford -0.02123255 0.05159049 24 -0.412 0.9760 
hancock - oklawaha 0.08078100 0.04983303 24 1.621 0.3863 
hancock - trafford 0.02274133 0.06242724 24 0.364 0.9831 
oklawaha - trafford -0.05803967 0.04503128 24 -1.289 0.5786 

food = fish: 
contrast    estimate   SE df t.ratio p.value 
george - hancock -0.02311955 0.09310322 24 -0.248 0.9945 
george - oklawaha 0.19874095 0.09273047 24 2.143 0.1683 
george - trafford 0.32066789 0.08342262 24 3.844 0.0041 
hancock - oklawaha 0.22186050 0.09879102 24 2.246 0.1396 
hancock - trafford 0.34378744 0.09088119 24 3.783 0.0047 
oklawaha - trafford 0.12192695 0.08577365 24 1.421 0.4987 

food = invert: 
contrast    estimate   SE df t.ratio p.value 
george - hancock  0.23202865 0.06111726 24 3.796 0.0046 
george - oklawaha -0.13967425 0.08808698 24 -1.586 0.4053 
george - trafford -0.07193252 0.08346283 24 -0.862 0.8242 
hancock - oklawaha -0.37170290 0.07492749 24 -4.961 0.0003 
hancock - trafford -0.30396117 0.07129577 24 -4.263 0.0014 
oklawaha - trafford 0.06774173 0.09384594 24 0.722 0.8874 

food = other: 
contrast    estimate   SE df t.ratio p.value 
george - hancock -0.12522495 0.06811177 24 -1.839 0.2806 
george - oklawaha 0.03499241 0.05141930 24 0.681 0.9035 
george - trafford -0.08643898 0.06612383 24 -1.307 0.5674 
hancock - oklawaha 0.16021736 0.06759887 24 2.370 0.1103 
hancock - trafford 0.03878598 0.08135810 24 0.477 0.9635 
oklawaha - trafford -0.12143138 0.06402725 24 -1.897 0.2560 

food = rep: 
contrast    estimate   SE df t.ratio p.value 
george - hancock -0.03971026 0.03810819 24 -1.042 0.7269 
george - oklawaha -0.13086622 0.05735022 24 -2.282 0.1305 
george - trafford -0.14106384 0.06037257 24 -2.337 0.1177 
hancock - oklawaha -0.09115595 0.06462624 24 -1.411 0.5052 
hancock - trafford -0.10135358 0.06752424 24 -1.501 0.4525 
oklawaha - trafford -0.01019762 0.07161794 24 -0.142 0.9989 

Results are averaged over the levels of: sex, size 
P value adjustment: tukey method for comparing a family of 4 estimates 

यह हालांकि खाद्य वस्तु में से प्रत्येक के विशिष्ट प्रकार के अनुपात में अंतर के लिए परीक्षण किया जाता है।

मैं सोच रहा था कि क्या यह एक तरह से या दूसरे में तुकी पोस्टहोक परीक्षण प्राप्त करने के लिए भी संभव होगा जिसमें समग्र बहुराष्ट्रीय वितरण की तुलना विभिन्न झीलों से की जाती है, यानी जहां किसी भी शिकार के अनुपात में अंतर का परीक्षण किया जाता है खाया आइटम?

$contrasts 
contrast     estimate   SE df t.ratio p.value 
george - hancock  3.252607e-19 1.879395e-10 24  0 1.0000 
george - oklawaha -8.131516e-19 1.861245e-10 24  0 1.0000 
george - trafford -1.843144e-18 2.504062e-10 24  0 1.0000 
hancock - oklawaha -1.138412e-18   NaN 24  NaN  NaN 
hancock - trafford -2.168404e-18   NaN 24  NaN  NaN 
oklawaha - trafford -1.029992e-18   NaN 24  NaN  NaN 

किसी भी विचार: मैं काम करने के लिए

lsmeans(fit, pairwise ~ lake, adjust="tukey", mode = "prob") 

लेकिन यह प्रतीत नहीं होता है के साथ की कोशिश की?

या किसी को भी पता होगा कि multinom मॉडल के लिए काम करने के लिए कैसे बनाया जा सकता है?

+1

तथ्य के अलावा आपने स्पष्ट रूप से दो बार एक ही प्रश्न पूछा, इन सवालों पर बहुत अधिक जानकारी दिखाई देती है। क्या आप अब तक की गई सब कुछ पोस्ट करने की बजाय विशिष्ट समस्या को सीमित नहीं कर सकते? – Molx

+0

मैंने दो बार एक ही सवाल नहीं पूछा - यह प्रश्न नेटिन के बहुपद का उपयोग करके एक बहुआयामी मॉडल फिट के बारे में है और एमएएसएस के ध्रुवीय का उपयोग करके आनुपातिक विचित्र संचयी लॉगिट मॉडल फिट के बारे में अन्य प्रश्न - ये दो पूरी तरह से अलग चीजें हैं! हालांकि मैंने अपना प्रश्न थोड़ा छोटा कर दिया है ....(बस सोचा था कि अन्य जानकारी lsmeans के साथ समस्या का निदान करने के लिए उपयोगी हो सकती है) –

+0

आखिरी हिस्से के बारे में, मैंने पहले से ही आपको एक व्यक्तिगत संचार में समझाया है कि केवल 'झील' के टुकड़े 'भोजन' पर औसत शामिल हैं, जो आपकी बहुआयामी प्रतिक्रिया है। उन बहुराष्ट्रीय संभावनाएं अन्य कारकों की किसी भी निश्चित सेटिंग के लिए आवश्यक रूप से 1 से अधिक भोजन के बराबर होती हैं, इसलिए जब आप भोजन पर औसत करते हैं तो आपको हमेशा $ 0.2 मिलेंगे। तो flaky दिखने की तुलना बस गलती त्रुटि के सभी हैं। झीलों की तुलना करने का कोई तरीका नहीं है। यदि आप जोड़ों की तुलना करना चाहते हैं, तो प्रत्येक झील के लिए संभावनाओं के किसी प्रकार के रैखिक संयोजन को तैयार करें और उन स्कोर की तुलना करें। – rvl

उत्तर

2

बस रस Lenth का एक प्रकार संदेश प्राप्त हुआ है, और वह वाक्य रचना क्या खाद्य पदार्थों घड़ियाल खाने का बहुपद वितरण में मतभेद के लिए परीक्षण करने के लिए किया जाएगा झीलों के बीच इन जोड़ो में तुलना करने के लिए

lsm = lsmeans(fit, ~ lake|food, mode = "latent") 
cmp = contrast(lsm, method="pairwise", ref=1) 
test = test(cmp, joint=TRUE, by="contrast") 
There are linearly dependent rows - df are reduced accordingly 
test 
contrast   df1 df2  F p.value 
george - hancock  4 24 3.430 0.0236 
george - oklawaha  4 24 2.128 0.1084 
george - trafford  4 24 3.319 0.0268 
hancock - oklawaha 4 24 5.820 0.0020 
hancock - trafford 4 24 5.084 0.0041 
oklawaha - trafford 4 24 1.484 0.2383 

धन्यवाद सोचा रस!

+0

ये tukey सही पी मान हैं? – WCMC

+0

अच्छा बिंदु - मुझे वास्तव में ऐसा नहीं लगता है ... लेकिन आप अभी भी multcomp पैकेज में p.adjust का उपयोग करके एकाधिक परीक्षण के लिए कुछ सुधार लागू कर सकते हैं ... –

+0

'lsmeans' के बजाय' emmeans' के साथ अब इसे आजमाएं। क्या आपने पहले 'emmeans' के साथ 'nnet :: multinom()' मॉडल में एक इंटरैक्शन की जांच की है? यह मुझे कुछ त्रुटियों को फेंक रहा है। –

संबंधित मुद्दे