श्रेणीबद्ध चर के साथ लॉजिस्टिक प्रतिगमन के लिए डेटा का अनुकरण


9

मैं लॉजिस्टिक प्रतिगमन के लिए कुछ परीक्षण डेटा बनाने की कोशिश कर रहा था और मुझे यह पोस्ट मिला कि लॉजिस्टिक रिग्रेशन के लिए कृत्रिम डेटा का अनुकरण कैसे करें?

यह एक अच्छा जवाब है, लेकिन यह केवल निरंतर चर बनाता है। लिंक के समान उदाहरण के लिए y से जुड़े 5 स्तरों (ABCDE) के साथ एक श्रेणीगत चर x3 के बारे में क्या?


नमूना (एक्स = सी (1, 2, 3), आकार = 1, प्रोब = प्रतिनिधि (1/3, 3)) समान संभावना के साथ "1", "2", या "3" में से एक उत्पन्न करता है।
ओकराम

आपकी टिप्पणी के लिए धन्यवाद, लेकिन मैं जिस पद का उल्लेख कर रहा हूं उसके साथ मैं यहां संभावनाओं को कैसे जोड़ूं? मैं उस पोस्ट 'कोड'> set.seed (666)> X1 = rnorm (1000) # कुछ निरंतर चर> x2 = rnorm (1000)> z = 1 + 2 * X1 + 3 * x2 / रैखिक संयोजन से कुछ कोड की प्रतिलिपि बनाता हूं एक पूर्वाग्रह के साथ> pr = 1 / (1 + exp (-z)) # एक inv-logit फ़ंक्शन> y = rbinom (1000,1, pr) # bernoulli प्रतिक्रिया चर 'कोड' के माध्यम से पास
user1301294

जवाबों:


13

आदर्श

चलो xB=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,पी) साथ में n=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 
> #---------------------

1
@ocram - मापदंडों के अच्छे विकल्पों और घटकों की संभावनाओं की पसंद (भाग a) के लिए कुछ अंतर्ज्ञान दे सकता है? इन परिवर्तनों से व्यायाम पर क्या प्रभाव पड़ेगा?
d_a_c321

@dchandler: चित्रण के लिए, मापदंडों और संभावनाओं को मनमाने ढंग से चुना गया था।
ओकराम

2
@ocram - समझा। हालांकि, मैं इस बात पर अंतर्ज्ञान की तलाश कर रहा हूं कि क्या अच्छा गुणांक होगा ताकि मैं अधिक व्यापक सिमुलेशन चला सकूं। उदाहरण के लिए, यदि मैं लैस्सो रेजिस्ट्रेशन का अनुकरण करना चाहता था, तो मैं व्यर्थ चर (w / शून्य गुणांक) को जोड़ने में दिलचस्पी ले सकता हूं और यह देख सकता हूं कि कैसे अर्थहीन चर के # और सार्थक चर पर गैर-शून्य गुणांक के परिमाण सिमुलेशन को प्रभावित करते हैं।
d_a_c321 16
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.