एकाधिक रैखिक प्रतिगमन सिमुलेशन


14

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


ठीक है धन्यवाद।

मान लें कि मैं इस डेटा सेट के आधार पर डेटा का अनुकरण करना चाहता हूं:

y<-c(18.73,14.52,17.43,14.54,13.44,24.39,13.34,22.71,12.68,19.32,30.16,27.09,25.40,26.05,33.49,35.62,26.07,36.78,34.95,43.67)
x1<-c(610,950,720,840,980,530,680,540,890,730,670,770,880,1000,760,590,910,650,810,500)
x2<-c(1,1,3,2,1,1,3,3,2,2,1,3,3,2,2,2,3,3,1,2)

fit<-lm(y~x1+x2)
summary(fit)

तब मुझे आउटपुट मिलता है:

Call:
lm(formula = y ~ x1 + x2)

Residuals:
     Min       1Q   Median       3Q      Max 
-13.2805  -7.5169  -0.9231   7.2556  12.8209 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 42.85352   11.33229   3.782  0.00149 **
x1          -0.02534    0.01293  -1.960  0.06662 . 
x2           0.33188    2.41657   0.137  0.89238   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 8.679 on 17 degrees of freedom
Multiple R-squared:  0.1869,    Adjusted R-squared:  0.09127 
F-statistic: 1.954 on 2 and 17 DF,  p-value: 0.1722

मेरा सवाल यह है कि एक नए डेटा का अनुकरण कैसे किया जाए जो उपरोक्त मूल डेटा की नकल करता है?

जवाबों:


29
  1. यदि आपके पास पहले से नहीं है, तो कुछ भविष्यवक्ताओं, , , ...x 2x1x2

  2. अपने की जनसंख्या ('सही') गुणांक, का चयन करें, जिसमें , अवरोधन शामिल हैं।β βiβ0

  3. त्रुटि प्रसरण, या इसके वर्गमूल, σσ2σ

  4. त्रुटि शब्द, उत्पन्न करें , एक स्वतंत्र यादृच्छिक सामान्य वेक्टर के रूप में, जिसका अर्थ है 0 और विचरण σ 2εσ2

  5. चलोy=β0+β1x1+β2x2+...+βkxk+ε

तो आप पीछे की ओर हटाना कर सकते हैं अपने पर कीx yx

जैसे R में आप कुछ ऐसा कर सकते हैं:

x1 <- 11:30
x2 <- runif(20,5,95)
x3 <- rbinom(20,1,.5)

b0 <- 17
b1 <- 0.5
b2 <- 0.037
b3 <- -5.2
sigma <- 1.4

eps <- rnorm(x1,0,sigma)
y <- b0 + b1*x1  + b2*x2  + b3*x3 + eps

मॉडल से का एक एकल सिमुलेशन बनाता है । फिर दौड़ रहा हैy

 summary(lm(y~x1+x2+x3))

देता है

Call:
lm(formula = y ~ x1 + x2 + x3)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.6967 -0.4970  0.1152  0.7536  1.6511 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 16.28141    1.32102  12.325 1.40e-09 ***
x1           0.55939    0.04850  11.533 3.65e-09 ***
x2           0.01715    0.01578   1.087    0.293    
x3          -4.91783    0.66547  -7.390 1.53e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 1.241 on 16 degrees of freedom
Multiple R-squared:  0.9343,    Adjusted R-squared:  0.9219 
F-statistic: 75.79 on 3 and 16 DF,  p-value: 1.131e-09

आप इस प्रक्रिया को कई तरीकों से सरल कर सकते हैं, लेकिन मुझे लगा कि इसे बाहर वर्तनी में मदद मिलेगी।

आप एक नई यादृच्छिक अनुकरण करने के लिए चाहते हैं लेकिन एक ही आबादी गुणांक के साथ, बस ऊपर प्रक्रिया के अंतिम दो पंक्तियों (एक नई यादृच्छिक उत्पन्न को फिर से चलाएं और ,) चरण 3 और एल्गोरिथ्म के 4 के लिए इसी।yepsy


क्या अनुमानों की मानक त्रुटि को बदलना संभव है? मैंने थोड़ी संशोधित स्क्रिप्ट ( rnorm()इसके बजाय 11:30) का उपयोग किया, लेकिन चाहे मैं कितना भी त्रुटि (सिग्मा) बढ़ाऊं, अनुमान की मानक त्रुटियां लगभग समान हैं।
डैनियल

2

सामान्य वितरण का पालन करने में त्रुटियों के साथ कई रैखिक प्रतिगमन उत्पन्न करने के लिए यहां एक और कोड है:

sim.regression<-function(n.obs=10,coefficients=runif(10,-5,5),s.deviation=.1){

  n.var=length(coefficients)  
  M=matrix(0,ncol=n.var,nrow=n.obs)

  beta=as.matrix(coefficients)

  for (i in 1:n.var){
    M[,i]=rnorm(n.obs,0,1)
  }

  y=M %*% beta + rnorm(n.obs,0,s.deviation)

  return (list(x=M,y=y,coeff=coefficients))

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