आरएल में एक जीएलएम के बाद कारकों के स्तर की तुलना करना


25

यहाँ मेरी स्थिति के बारे में एक छोटी पृष्ठभूमि है: मेरा डेटा एक शिकारी द्वारा सफलतापूर्वक खाए गए शिकार की संख्या को संदर्भित करता है। जैसा कि प्रत्येक परीक्षण में शिकार की संख्या सीमित (25 उपलब्ध) होती है, मेरे पास एक कॉलम "नमूना" उपलब्ध शिकार की संख्या का प्रतिनिधित्व करता था (इसलिए, प्रत्येक परीक्षण में 25), और दूसरे को "गणना" कहा जाता है जो सफलता की संख्या थी ( कितने शिकार खाए गए)। मैंने अनुपात डेटा पर आर किताब से उदाहरण पर अपना विश्लेषण आधारित किया (पृष्ठ 578)। व्याख्यात्मक चर तापमान (4 स्तर, जिसे मैंने कारक के रूप में माना), और शिकारी का सेक्स (जाहिर है, पुरुष या महिला)। इसलिए मैं इस मॉडल को समाप्त करता हूं:

model <- glm(y ~ Temperature+Sex+Temperature*Sex data=predator, family=quasibinomial) 

डीविंस टेबल का विश्लेषण प्राप्त करने के बाद, यह पता चलता है कि तापमान और सेक्स (लेकिन बातचीत नहीं) का शिकार की खपत पर महत्वपूर्ण प्रभाव पड़ता है। अब, मेरी समस्या: मुझे यह जानना होगा कि कौन से तापमान में अंतर है, अर्थात, मुझे 4 तापमान की एक दूसरे से तुलना करनी होगी। अगर मेरे पास एक लीनियर मॉडल था, तो मैं TukeyHSD फ़ंक्शन का उपयोग करूंगा, लेकिन जैसा कि मैं एक GLM का उपयोग कर रहा हूं मैं नहीं कर सकता। मैं पैकेज एमएएस के माध्यम से देख रहा हूं और एक विपरीत मैट्रिक्स स्थापित करने की कोशिश कर रहा हूं, लेकिन किसी कारण से यह काम नहीं करता है। कोई सुझाव या संदर्भ?

यहाँ सारांश मैं अपने मॉडल से मिलता है, अगर यह स्पष्ट करने में मदद करता है ...

y <- cbind(data$Count, data$Sample-data$Count)
model <- glm(y ~ Temperature+Sex+Temperature*Sex data=predator, family=quasibinomial) 
> summary(model)

# Call:
# glm(formula = y ~ Temperature + Sex + Temperature * Sex, family=quasibinomial, data=data)

# Deviance Residuals: 
#     Min       1Q   Median       3Q      Max  
# -3.7926  -1.4308  -0.3098   0.9438   3.6831  

# Coefficients:
#                                        Estimate Std. Error t value Pr(>|t|)    
# (Intercept)                             -1.6094     0.2672  -6.024 3.86e-08 ***
# Temperature8                             0.3438     0.3594   0.957   0.3414    
# Temperature11                           -1.0296     0.4803  -2.144   0.0348 *  
# Temperature15                           -1.2669     0.5174  -2.449   0.0163 *  
# SexMale                                    0.3822     0.3577   1.069   0.2882    
# Temperature8:SexMale                    -0.2152     0.4884  -0.441   0.6606    
# Temperature11:SexMale                    0.4136     0.6093   0.679   0.4990    
# Temperature15:SexMale                    0.4370     0.6503   0.672   0.5033    
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

# (Dispersion parameter for quasibinomial family taken to be 2.97372)    
#     Null deviance: 384.54  on 95  degrees of freedom
# Residual deviance: 289.45  on 88  degrees of freedom
# AIC: NA   
# Number of Fisher Scoring iterations: 5

2
glhtmultcompglht(my.glm, mcp(Temperature="Tukey"))model<-glm(y ~ Temperature*Sex data=predator, family=quasibinomial)

नमस्ते, आपके त्वरित उत्तर के लिए धन्यवाद! हालाँकि मुझे कुछ गलत करना चाहिए क्योंकि मुझे केवल एक त्रुटि संदेश मिलता है ... मुझे लगता है कि my.glm वह चमक है जिसे मैंने पहले किया था (इसलिए, मामले में "मॉडल")। Mcp किसको संदर्भित करता है? मुझे यह कहते हुए एक त्रुटि संदेश मिलता है कि गुणांक और सहसंयोजक मैट्रिक्स के आयाम मेल नहीं खाते ...?
ऐनी

यदि आप अपने प्रश्न को संपादित करते हैं और मॉडल आउटपुट शामिल करते हैं तो यह उपयोगी होगा।
COOLSerdash

3
आपने Temperatureएक कारक के रूप में मॉडलिंग क्यों की ? क्या आपके पास वास्तविक संख्यात्मक मान नहीं हैं? मैं उन्हें एक निरंतर परिवर्तनशील के रूप में उपयोग करूंगा और फिर यह पूरा मुद्दा मूट है।
गूँज - मोनिका

3
यह जानना पूरी तरह से उचित है कि यह कैसे करना है; आपका सवाल खड़ा है। हालाँकि, आपकी विशिष्ट स्थिति के संबंध में, मैं एक सतत चर के रूप में अस्थायी का उपयोग करूंगा, भले ही आपने मूल रूप से एक कारक के रूप में सोचा था। W / एकाधिक तुलना के मुद्दों को अलग करना, एक कारक के रूप में अस्थायी मॉडलिंग करना आपके पास मौजूद जानकारी का एक अक्षम उपयोग है।
गूँग - मोनिका

जवाबों:


15

ऐनी, मैं समझाऊंगा कि सामान्य रूप से इस तरह की कई तुलनाएँ कैसे की जाती हैं। यह आपके विशिष्ट मामले में काम क्यों नहीं करता, मुझे नहीं पता; मुझे माफ कर दो।

लेकिन आम तौर पर, आप इसे multcompपैकेज और फ़ंक्शन के साथ कर सकते हैं glht। यहाँ एक उदाहरण है:

mydata      <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank)
my.mod      <- glm(admit~gre+gpa*rank, data=mydata, family=quasibinomial)

summary(my.mod)
# 
# Coefficients:
#              Estimate Std. Error t value Pr(>|t|)  
# (Intercept) -4.985768   2.498395  -1.996   0.0467 *
# gre          0.002287   0.001110   2.060   0.0400 *
# gpa          1.089088   0.731319   1.489   0.1372  
# rank2        0.503294   2.982966   0.169   0.8661  
# rank3        0.450796   3.266665   0.138   0.8903  
# rank4       -1.508472   4.202000  -0.359   0.7198  
# gpa:rank2   -0.342951   0.864575  -0.397   0.6918  
# gpa:rank3   -0.515245   0.935922  -0.551   0.5823  
# gpa:rank4   -0.009246   1.220757  -0.008   0.9940  
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

यदि आप rankTukey के HSD का उपयोग करने के बीच जोड़ी की तुलना की गणना करना चाहते हैं , तो आप इस तरह से कर सकते हैं:

library(multcomp)
summary(glht(my.mod, mcp(rank="Tukey")))
# 
#    Simultaneous Tests for General Linear Hypotheses
# 
# Multiple Comparisons of Means: Tukey Contrasts
# 
# Fit: glm(formula = admit ~ gre + gpa * rank, family = quasibinomial, data = mydata)   
# 
# Linear Hypotheses:
#            Estimate Std. Error z value Pr(>|z|)
# 2 - 1 == 0   0.5033     2.9830   0.169    0.998
# 3 - 1 == 0   0.4508     3.2667   0.138    0.999
# 4 - 1 == 0  -1.5085     4.2020  -0.359    0.984
# 3 - 2 == 0  -0.0525     2.6880  -0.020    1.000
# 4 - 2 == 0  -2.0118     3.7540  -0.536    0.949
# 4 - 3 == 0  -1.9593     3.9972  -0.490    0.960
# (Adjusted p values reported -- single-step method)
# 
# Warning message:
# In mcp2matrix(model, linfct = linfct) :
#   covariate interactions found -- default contrast might be inappropriate

p

नोट: जैसा कि @gung ने टिप्पणियों में उल्लेख किया है, आपको - जब भी संभव हो - तापमान को एक श्रेणीगत चर के बजाय एक निरंतर के रूप में शामिल करना चाहिए। इंटरैक्शन के बारे में: आप यह जांचने के लिए संभावना अनुपात परीक्षण कर सकते हैं कि इंटरेक्शन शब्द से मॉडल फिट में काफी सुधार होता है या नहीं। आपके मामले में, कोड कुछ इस तरह दिखाई देगा:

# Original model
model <- glm(y ~ Temperature+Sex+Temperature*Sex, data=predator, family=quasibinomial) 

# Model without an interaction
model2 <- glm(y ~ Temperature+Sex data=predator, family=quasibinomial) 

# Likelihood ratio test
anova(model, model2, test="LRT")

यदि यह परीक्षण महत्वपूर्ण नहीं है, तो आप अपने मॉडल से सहभागिता हटा सकते हैं। शायद glhtफिर काम करेंगे?


1
हे भगवान, बहुत बहुत धन्यवाद !! मैं इस बार सही ढंग से कमांड लिखने में सक्षम हूं और इसने काम किया! एक बार फिर धन्यवाद !
ऐनी

1
अतिरिक्त प्रश्न: क्या इंटरैक्शन पर कई तुलनाएं प्राप्त करने का एक तरीका है? मुझे एक जैसा डेटा मिला है, जहां इंटरैक्शन (प्रारंभिक प्रश्न से, जो कि तापमान * सेक्स होगा) महत्वपूर्ण है, और मैं सोच रहा था कि क्या उन लोगों की एक साथ तुलना करना संभव है ...
ऐनी

1
क्या आप बातचीत के प्रत्येक स्तर के लिए कई तुलना का मतलब है? यदि हाँ, तो आपको यह साइट दिलचस्प लग सकती है (अंतिम पैराग्राफ दिखाता है कि सभी संभावित जोड़ीदार संयोजनों का परीक्षण कैसे करें)।
21

आप एक वैरिएबल बना सकते हैं जो एक वैरिएबल के लिए इंटरैक्शन से मेल खाता है और इस वैरिएबल का उपयोग mcp को पूरा करने के लिए करता है। आप इसे ऐसे करें। mydata $ gparank <- इंटरैक्शन (mydata $ gpa, mydata $ रैंक)
Notquitesure

1
@ नोवा आपको किस लिंक से मतलब है? टिप्पणियों में एक? यहाँ उस साइट का नया लिंक दिया गया है।
COOLSerdash
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.