आदर्श
चलो एक्सबी= 1 यदि किसी के पास "बी" श्रेणी है, और एक्सबी= 0अन्यथा। परिभाषित करेंएक्ससी, एक्सडी, तथा एक्सइsimilary। अगरएक्सबी=एक्ससी=एक्सडी=एक्सइ= 0, तो हमारे पास "ए" श्रेणी है (यानी, "ए" संदर्भ स्तर है)। आपका मॉडल तब लिखा जा सकता है
logit (π)) =β0+βबीएक्सबी+βसीएक्ससी+βडीएक्सडी+βइएक्सइ
साथ में
β0 एक अवरोधन।
आर में डेटा पीढ़ी
(ए)
x <- sample(x=c("A","B", "C", "D", "E"),
size=n, replace=TRUE, prob=rep(1/5, 5))
x
वेक्टर है n
घटकों (प्रत्येक व्यक्ति के लिए एक)। प्रत्येक घटक या तो "ए", "बी", "सी", "डी", या "ई" है। "ए", "बी", "सी", "डी", और "ई" में से प्रत्येक समान रूप से संभावना है।
(ख)
library(dummies)
dummy(x)
dummy(x)
n
पंक्तियों के साथ एक मैट्रिक्स है (प्रत्येक व्यक्ति के लिए एक) और इसके अनुरूप 5 कॉलमएक्सए, एक्सबी, एक्ससी, एक्सडी, तथा एक्सइ। रैखिक भविष्यवक्ता (प्रत्येक व्यक्ति के लिए एक) को तब लिखा जा सकता है
linpred <- cbind(1, dummy(x)[, -1]) %*% c(beta0, betaB, betaC, betaD, betaE)
(सी)
सफलता की संभावनाएं लॉजिस्टिक मॉडल से हैं:
pi <- exp(linpred) / (1 + exp(linpred))
(घ)
अब हम बाइनरी प्रतिक्रिया चर उत्पन्न कर सकते हैं। मैंवें प्रतिक्रिया एक द्विपद यादृच्छिक चर से आती है बिन (n,p) साथ में एन = 1 तथा पी = pi[i]
:
y <- rbinom(n=n, size=1, prob=pi)
यह जाँचने के लिए कुछ त्वरित सिमुलेशन ठीक है
> #------ parameters ------
> n <- 1000
> beta0 <- 0.07
> betaB <- 0.1
> betaC <- -0.15
> betaD <- -0.03
> betaE <- 0.9
> #------------------------
>
> #------ initialisation ------
> beta0Hat <- rep(NA, 1000)
> betaBHat <- rep(NA, 1000)
> betaCHat <- rep(NA, 1000)
> betaDHat <- rep(NA, 1000)
> betaEHat <- rep(NA, 1000)
> #----------------------------
>
> #------ simulations ------
> for(i in 1:1000)
+ {
+ #data generation
+ x <- sample(x=c("A","B", "C", "D", "E"),
+ size=n, replace=TRUE, prob=rep(1/5, 5)) #(a)
+ linpred <- cbind(1, dummy(x)[, -1]) %*% c(beta0, betaB, betaC, betaD, betaE) #(b)
+ pi <- exp(linpred) / (1 + exp(linpred)) #(c)
+ y <- rbinom(n=n, size=1, prob=pi) #(d)
+ data <- data.frame(x=x, y=y)
+
+ #fit the logistic model
+ mod <- glm(y ~ x, family="binomial", data=data)
+
+ #save the estimates
+ beta0Hat[i] <- mod$coef[1]
+ betaBHat[i] <- mod$coef[2]
+ betaCHat[i] <- mod$coef[3]
+ betaDHat[i] <- mod$coef[4]
+ betaEHat[i] <- mod$coef[5]
+ }
> #-------------------------
>
> #------ results ------
> round(c(beta0=mean(beta0Hat),
+ betaB=mean(betaBHat),
+ betaC=mean(betaCHat),
+ betaD=mean(betaDHat),
+ betaE=mean(betaEHat)), 3)
beta0 betaB betaC betaD betaE
0.066 0.100 -0.152 -0.026 0.908
> #---------------------