आर में द्विपद चमक में प्रतिक्रिया के लिए इनपुट प्रारूप


13

में R, वहाँ तीन तरीकों एक रसद प्रतिगमन उपयोग करने के लिए इनपुट डेटा को स्वरूपित करने हैं glmसमारोह:

  1. डेटा प्रत्येक अवलोकन के लिए "बाइनरी" प्रारूप में हो सकता है (जैसे, प्रत्येक अवलोकन के लिए y = 0 या 1);
  2. डेटा "विल्किंसन-रोजर्स" प्रारूप में हो सकता है (जैसे, y = cbind(success, failure)) प्रत्येक पंक्ति में एक उपचार का प्रतिनिधित्व करने वाला; या
  3. डेटा प्रत्येक अवलोकन के लिए एक भारित प्रारूप में हो सकता है (उदाहरण के लिए, y = 0.3, वजन = 10)।

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

मेरा प्रश्न: क्या एक इनपुट प्रारूप का दूसरे पर उपयोग करने के लिए संख्यात्मक या सांख्यिकीय फायदे हैं? एकमात्र लाभ जो मुझे दिखाई दे रहा है Rवह मॉडल के साथ उपयोग करने के लिए किसी के डेटा को पुन: स्वरूपित करने के लिए नहीं है ।

मैंने glm प्रलेखन को देखा है , वेब पर और इस साइट पर खोजा है और एक स्पर्शनीय रूप से संबंधित पोस्ट पाया है , लेकिन इस विषय पर कोई मार्गदर्शन नहीं किया है।

यहाँ एक अनुकरणीय उदाहरण है जो इस व्यवहार को प्रदर्शित करता है:

# Write function to help simulate data
drc4 <- function(x, b =1.0, c = 0, d = 1, e = 0){
    (d - c)/ (1 + exp(-b * (log(x)  - log(e))))
}
# simulate long form of dataset
nReps = 20
dfLong <- data.frame(dose = rep(seq(0, 10, by = 2), each = nReps))
dfLong$mortality <-rbinom(n = dim(dfLong)[1], size = 1,
                              prob = drc4(dfLong$dose, b = 2, e = 5))

# aggregate to create short form of dataset
dfShort <- aggregate(dfLong$mortality, by = list(dfLong$dose), 
                     FUN = sum)
colnames(dfShort) <- c("dose", "mortality")
dfShort$survival <- nReps - dfShort$mortality 
dfShort$nReps <- nReps
dfShort$mortalityP <- dfShort$mortality / dfShort$nReps

fitShort <- glm( cbind(mortality, survival) ~ dose, 
                 data = dfShort, 
                 family = "binomial")
summary(fitShort)

fitShortP <- glm( mortalityP ~ dose, data = dfShort, 
                  weights = nReps,     
                  family = "binomial")
summary(fitShortP)

fitLong <- glm( mortality ~ dose, data = dfLong, 
                family = "binomial")
summary(fitLong)

1
आपके उदाहरण में, अशक्त और अवशिष्ट विचलन के बीच का अंतर सभी तीन मॉडलों के लिए बराबर है। यदि आप किसी पैरामीटर को जोड़ते या हटाते हैं, तो AIC में परिवर्तन भी तीनों के लिए समान होता है।
जॉनी लोमोंड

1
आपने स्वयं को उत्तर दिया: यदि एक ही डेटा, एक ही परिणाम का उपयोग करते हैं, तो वे कैसे भिन्न हो सकते हैं? इसके अलावा, यदि विधि अलग-अलग प्रारूप में डेटा प्रदान करने के कारण अलग-अलग परिणाम देगी, तो इसके साथ कुछ गलत होगा, या इसके कार्यान्वयन के साथ।
टिम

डब्ल्यूआर प्रारूप अंततः एक भारित संभावना है। भार के साथ समस्या यह है कि वे आवृत्ति भार, प्रायिकता भार या अन्य नहीं बता सकते हैं। सर्वेक्षण भार के साथ, उदाहरण के लिए, आपके पास केवल n अवलोकन हो सकते हैं, लेकिन वे जनसंख्या / नमूने के फ्रेम के खंडों का प्रतिनिधित्व करते हैं। तो स्वतंत्रता की डिग्री वास्तव में 100 svyglmहै। सर्वेक्षण पैकेज से आपको वजन तर्क को संभालने के बेहतर तरीके मिलते हैं।
एडमों

लेकिन अगर आप कोडिंग के सभी तीन तरीकों का उपयोग करके एक क्वैसिबिनोमियल मॉडल फिट करेंगे, तो वे अलग-अलग परिणाम देंगे, सही, क्योंकि एक सकारात्मक अतिसूक्ष्मता हो सकती है जब द्विपद डेटा के रूप में कोडित किया जाता है लेकिन जब लॉजिस्टिक / बाइनरी डेटा के रूप में कोडित नहीं किया जाता है। या मैं इस पर गलत हूं?
टॉम वेन्सलेर्स

जवाबों:


9

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

मुझे लगता है कि स्पष्ट अवमूल्यन गणना के माध्यम से जाना उपयोगी है।

iniipiiyijji

लंबा फार्म

ij(log(pi)yij+log(1pi)(1yij))

ij(log(yij)yij+log(1yij)(1yij)).
yijlog(0)0log(0)limx0+xlog(x)

संक्षिप्त रूप (भारित)

ध्यान दें कि एक द्विपद वितरण वास्तव में गैर-पूर्णांक मान नहीं ले सकता है, लेकिन हम फिर भी प्रत्येक सेल में प्रतिक्रिया के रूप में देखे गए सफलताओं के अंश का उपयोग करके "लॉग संभावना" की गणना कर सकते हैं, और लॉग-संभावना गणना में प्रत्येक सारांश को भारित कर सकते हैं। उस सेल में टिप्पणियों की संख्या।

ini(log(pi)jyij/ni+log(1pi)(1j(yij/ni))

यह हमारे द्वारा ऊपर गणना की गई मॉडल डिविज़न के बराबर है, जिसे आप जहाँ तक संभव हो लंबे फॉर्म समीकरण में पर देख सकते हैं ।j

इस बीच संतृप्त विचलन अलग है। चूंकि अब हमारे पास 0-1 प्रतिक्रियाएं हैं, यहां तक ​​कि प्रति अवलोकन एक पैरामीटर के साथ भी हम ठीक से 0. प्राप्त नहीं कर सकते हैं। इसके बजाय संतृप्त मॉडल लॉग-समानता है

ini(log(jyij/ni)jyij/ni+log(1jyij/ni)(1jyij/ni)).

अपने उदाहरण में, आप यह सत्यापित कर सकते हैं कि दो बार यह राशि दोनों मॉडलों के लिए रिपोर्ट किए गए अशक्त और अवशिष्ट विचलन मूल्यों के बीच का अंतर है।

ni = dfShort$nReps
yavg = dfShort$mortalityP
sum.terms <-ni*(log(yavg)*yavg + log(1 - yavg)*(1 - yavg))
# Need to handle NaN when yavg is exactly 0
sum.terms[1] <- log(1 - yavg[1])*(1 - yavg[1])

2*sum(sum.terms)
fitShortP$deviance - fitLong$deviance

मुझे लगता है कि आपको संतृप्त मॉडल के विचलन के लिए अभिव्यक्ति को स्पष्ट करना होगा। 0 का लॉग इतनी अच्छी तरह से काम नहीं करता है।
एडमों

धन्यवाद, मुझे स्पष्ट करना चाहिए कि मेरा क्या मतलब था। मैंने यह स्पष्ट करने के लिए एक संपादन जोड़ा कि 0log (0) से मेरा मतलब इस संदर्भ में 0 है।
जॉनी लोमोंड

ठीक है, लेकिन मैं ठीक से उलझन में हूँ (मुझे माफ करें कि मैंने कभी भी किसी भी महान विस्तार में भटकाव को कवर नहीं किया है): यदि आपके पास संतृप्त मॉडल विचलन के रूप में लॉग (y) y - लॉग (1-y) (1-y) है, तो हर नहीं है अवलोकन केवल 0?
एडमों

2
"संतृप्त मॉडल" एक कल्पना मॉडल है जिसका अवलोकन प्रति एक पैरामीटर है। तो हर अवलोकन के लिए इसकी अनुमानित संभावना 1 या 0 है, जो वास्तविक अवलोकन मूल्य के आधार पर है। तो इस मामले में संतृप्त मॉडल की लॉग संभावना वास्तव में 0 है, डेटा एकमात्र डेटा है जो संतृप्त मॉडल द्वारा उत्पन्न किया जा सकता है।
जॉनी लोमोंड

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