आनुपातिक बाधाओं की जाँच ध्रुवीय फ़ंक्शन का उपयोग करके एक क्रमिक लॉजिस्टिक रिग्रेशन में होती है


9

मैंने 15 निरंतर व्याख्यात्मक चर के साथ एक क्रमिक श्रेणीगत प्रतिक्रिया चर के लिए एक क्रमिक लॉजिस्टिक प्रतिगमन चलाने के लिए एमएएसएस पैकेज में 'पोलर' फ़ंक्शन का उपयोग किया है।

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

FGV1b <- data.frame(FG1_val_cat=factor(FGV1b[,"FG1_val_cat"]), 
                    scale(FGV1[,c("X","Y","Slope","Ele","Aspect","Prox_to_for_FG", 
                          "Prox_to_for_mL", "Prox_to_nat_border", "Prox_to_village", 
                          "Prox_to_roads", "Prox_to_rivers", "Prox_to_waterFG", 
                          "Prox_to_watermL", "Prox_to_core", "Prox_to_NR", "PCA1", 
                          "PCA2", "PCA3")]))
b     <- polr(FG1_val_cat ~ X + Y + Slope + Ele + Aspect + Prox_to_for_FG + 
                            Prox_to_for_mL + Prox_to_nat_border + Prox_to_village + 
                            Prox_to_roads + Prox_to_rivers + Prox_to_waterFG + 
                            Prox_to_watermL + Prox_to_core + Prox_to_NR, 
              data=FGV1b, Hess=TRUE)

मॉडल का सारांश देखें:

summary(b)
(ctableb <- coef(summary(b)))
q        <- pnorm(abs(ctableb[, "t value"]), lower.tail=FALSE) * 2
(ctableb <- cbind(ctableb, "p value"=q))

और अब हम पैरामीटर अनुमानों के लिए आत्मविश्वास अंतराल देख सकते हैं:

(cib <- confint(b)) 
confint.default(b)

लेकिन इन परिणामों की व्याख्या करना अभी भी काफी कठिन है, तो चलो गुणांक को बाधाओं अनुपात में परिवर्तित करते हैं

exp(cbind(OR=coef(b), cib))

धारणा की जाँच करना। तो निम्नलिखित कोड रेखांकन किए जाने वाले मूल्यों का अनुमान लगाएगा। पहले यह हमें लक्ष्य चर के प्रत्येक मूल्य से अधिक या उसके बराबर होने की संभावनाओं का लॉग रूपांतर दिखाता है

FG1_val_cat <- as.numeric(FG1_val_cat)
sf <- function(y) {
  c('VC>=1' = qlogis(mean(FG1_val_cat >= 1)),
    'VC>=2' = qlogis(mean(FG1_val_cat >= 2)),
    'VC>=3' = qlogis(mean(FG1_val_cat >= 3)),
    'VC>=4' = qlogis(mean(FG1_val_cat >= 4)),
    'VC>=5' = qlogis(mean(FG1_val_cat >= 5)),
    'VC>=6' = qlogis(mean(FG1_val_cat >= 6)),
    'VC>=7' = qlogis(mean(FG1_val_cat >= 7)),
    'VC>=8' = qlogis(mean(FG1_val_cat >= 8)))
}
(t <- with(FGV1b, summary(as.numeric(FG1_val_cat) ~ X + Y + Slope + Ele + Aspect + 
                             Prox_to_for_FG + Prox_to_for_mL + Prox_to_nat_border + 
                             Prox_to_village + Prox_to_roads + Prox_to_rivers + 
                             Prox_to_waterFG + Prox_to_watermL + Prox_to_core + 
                             Prox_to_NR, fun=sf)))

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

par(mfrow=c(1,1))
plot(t, which=1:8, pch=1:8, xlab='logit', main=' ', xlim=range(s[,7:8]))

polr धारणा की जाँच

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

उदाहरण के लिए, मैं कई मेलिंग सूचियों में पढ़ता हूं कि अन्य vglm फ़ंक्शन (VGAM पैकेज में) और lrm फ़ंक्शन (rms पैकेज में) का उपयोग करते हैं (उदाहरण के लिए यहां देखें: आनुपातिक बाधाओं को आर के पैकेज के साथ क्रमिक लॉजिकल रिग्रेशन में ग्रहण करना वीजीएएम और आरएमएस )। मैंने एक ही मॉडल चलाने की कोशिश की है लेकिन चेतावनी और त्रुटियों के खिलाफ लगातार आ रहा हूं।

उदाहरण के लिए, जब मैं 'समानांतर = FALSE' तर्क के साथ vglm मॉडल को फिट करने की कोशिश करता हूं (जैसा कि पिछले लिंक उल्लेख आनुपातिक बाधाओं धारणा के परीक्षण के लिए महत्वपूर्ण है), मैं निम्नलिखित त्रुटि का सामना करता हूं:

Lm.fit (X.vlm, y = z.vlm, ...) में त्रुटि: 'y'
में NA / NaN / Inf इसके अलावा: चेतावनी संदेश: Deviance.categorical.data.vgam (m_
= mu, y) में = y, w = w, अवशिष्ट = अवशिष्ट,: सज्जित मान 0 या 1 के करीब

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

नोट: एक पृष्ठभूमि के रूप में, यहां 1000 डेटा पॉइंट हैं, जो वास्तव में एक अध्ययन क्षेत्र में स्थान बिंदु हैं। मैं यह देखना चाह रहा हूं कि क्या श्रेणीगत प्रतिक्रिया चर और इन 15 व्याख्यात्मक चर के बीच कोई संबंध हैं। उन सभी 15 व्याख्यात्मक चर स्थानिक विशेषताएं हैं (उदाहरण के लिए, ऊंचाई, xy निर्देशांक, जंगल के निकटता)। 1000 डेटा पॉइंट्स को जीआईएस का उपयोग करके बेतरतीब ढंग से आवंटित किया गया था, लेकिन मैंने स्तरीकृत नमूनाकरण दृष्टिकोण लिया। मैंने यह सुनिश्चित किया कि प्रत्येक 8 अलग-अलग श्रेणीगत प्रतिक्रिया स्तरों में 125 अंक बेतरतीब ढंग से चुने गए हैं। मुझे उम्मीद है कि यह जानकारी भी मददगार होगी।

जवाबों:


1

आश्रित चर में 8 क्रमबद्ध स्तर होते हैं, इसलिए ग्राफ में आनुपातिक बाधाओं का परीक्षण करने के लिए आपको प्रत्येक स्वतंत्र चर के लिए 8 अलग-अलग प्रतीकों को देखना चाहिए। आप शायद हर स्वतंत्र चर के लिए केवल 2 प्रतीक देखते हैं क्योंकि आपने एक्स-अक्ष के मूल्यों के लिए बहुत कम अंतराल चुना है। यदि मेरा अनुमान सही है, तो आपको केवल एक्स-अक्ष के मूल्यों के लिए एक व्यापक अंतराल का उपयोग करने की आवश्यकता है। इस कोड को आज़माएं:

par(mfrow=c(1,1))
plot(t, which=1:8, pch=1:8, xlab='logit', main=' ', xlim=range(s[,3:9]))

5
यह हमारे मानकों द्वारा उत्तर देने के लिए पर्याप्त नहीं है। क्या आप विस्तार से समझा सकते हैं? यह कोड पीओ धारणा को जांचने के लिए क्या करता है / कैसे काम करता है? (उदाहरण के लिए, कैसे होगा कोई है जो विभिन्न सॉफ्टवेयर उपयोग यह एक ही दृष्टिकोण का उपयोग करता?)
गुंग - को पुनः स्थापित मोनिका

मैंने अभी अपने उत्तर में सुधार किया है। कृपया मुझे बताएं कि क्या यह संतोषजनक है
जॉन एम

1

इसलिए, मैंने इसे गुग्लिंग के माध्यम से पाया और मुझे लगता है कि एक उत्तर अभी भी उस कारण से उपयोगी हो सकता है। मुझे लगता है कि गलती अंदर है

sf <- function(y) {
  c('VC>=1' = qlogis(mean(FG1_val_cat >= 1)),
    'VC>=2' = qlogis(mean(FG1_val_cat >= 2)),
    'VC>=3' = qlogis(mean(FG1_val_cat >= 3)),
    'VC>=4' = qlogis(mean(FG1_val_cat >= 4)),
    'VC>=5' = qlogis(mean(FG1_val_cat >= 5)),
    'VC>=6' = qlogis(mean(FG1_val_cat >= 6)),
    'VC>=7' = qlogis(mean(FG1_val_cat >= 7)),
    'VC>=8' = qlogis(mean(FG1_val_cat >= 8)))
}

आप का उपयोग जहां FG1_val_catके बजाय y। हारेल के प्रतिगमन मॉडलिंग रणनीतियों से उदाहरण का उपयोग करना:

library(Hmisc)
getHdata(support)
support <- support[complete.cases(support[, c("sfdm2", "adlsc", "sex", "age", "meanbp")]), ]
sfdm <- as.integer (support$sfdm2 ) - 1

sf1 <- function (y) {
  c(' Y ≥ 1 ' = qlogis (mean(sfdm >= 1)), 
    ' Y ≥ 2 ' = qlogis (mean(sfdm >= 2)),
    ' Y ≥ 3 ' = qlogis (mean(sfdm >= 3))
  )
}

sf2 <- function (y) {
  c(' Y ≥ 1 ' = qlogis (mean(y >= 1)), 
    ' Y ≥ 2 ' = qlogis (mean(y >= 2)),
    ' Y ≥ 3 ' = qlogis (mean(y >= 3))
  )
}

s1 <- summary(sfdm ~ adlsc + sex + age + meanbp, fun=sf1,
              data = support)
s2 <- summary(sfdm ~ adlsc + sex + age + meanbp, fun=sf2,
              data = support)  

plot(s1, which =1:3, pch =1:3, xlab = ' logit ', main = ' ', width.factor = 1.4, cex.lab = 0.75)

plot(s2, which =1:3, pch =1:3, xlab = ' logit ', main = ' ', width.factor = 1.4, cex.lab = 0.75)

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

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

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