लॉजिस्टिक रिग्रेशन, संख्यात्मक अभेद्यता तक होगा, सारणीबद्ध प्रतिशत के समान बिल्कुल फिट बैठता है। इसलिए, यदि आपके स्वतंत्र चर कारक वस्तुएं factor1आदि हैं, और आश्रित परिणाम (0 और 1) हैं x, तो आप अभिव्यक्ति के साथ प्रभाव प्राप्त कर सकते हैं जैसे
aggregate(x, list(factor1, <etc>), FUN=mean)
इसकी तुलना करें
glm(x ~ factor1 * <etc>, family=binomial(link="logit"))
एक उदाहरण के रूप में, चलो कुछ यादृच्छिक डेटा उत्पन्न करते हैं:
set.seed(17)
n <- 1000
x <- sample(c(0,1), n, replace=TRUE)
factor1 <- as.factor(floor(2*runif(n)))
factor2 <- as.factor(floor(3*runif(n)))
factor3 <- as.factor(floor(4*runif(n)))
सारांश के साथ प्राप्त किया जाता है
aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results
इसके आउटपुट में शामिल हैं
Group.1 Group.2 Group.3 x
1 0 0 0 0.5128205
2 1 0 0 0.4210526
3 0 1 0 0.5454545
4 1 1 0 0.6071429
5 0 2 0 0.4736842
6 1 2 0 0.5000000
...
24 1 2 3 0.5227273
भविष्य के संदर्भ के लिए, उत्पादन की पंक्ति 6 में स्तरों (1,2,0) पर कारकों के लिए अनुमान 0.5 है।
लॉजिस्टिक प्रतिगमन इस तरह से अपने गुणांक देता है:
model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients
उनका उपयोग करने के लिए, हमें लॉजिस्टिक फ़ंक्शन की आवश्यकता है:
logistic <- function(x) 1 / (1 + exp(-x))
उदाहरण के लिए, स्तरों (1,2,0) पर कारकों के लिए अनुमान, गणना
logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])
(ध्यान दें कि मॉडल में सभी इंटरैक्शन को कैसे शामिल किया जाना चाहिए और एक सही अनुमान प्राप्त करने के लिए सभी संबद्ध गुणांकों को लागू करना होगा।) आउटपुट है
(Intercept)
0.5
के परिणामों से सहमत aggregate। (आउटपुट में "" (अवरोधन) "शीर्षक इनपुट का एक समूह है और इस गणना के लिए प्रभावी रूप से अर्थहीन है।"
के उत्पादन में एक और रूप में एक ही जानकारी दिखाई देती हैtable । जैसे, (लंबा) का आउटपुट
table(x, factor1, factor2, factor3)
इस पैनल में शामिल हैं:
, , factor2 = 2, factor3 = 0
factor1
x 0 1
0 20 21
1 18 21
factor121 / ( 21 + 21 ) = 0.5x1aggregateglm
अंत में, डेटासेट के उच्चतम अनुपात में पैदावार देने वाले कारकों का एक संयोजन आसानी से आउटपुट से प्राप्त होता है aggregate:
> aggregate.results[which.max(aggregate.results$x),]
Group.1 Group.2 Group.3 x
4 1 1 0 0.6071429