जिस मुद्दे पर आपको चिंता करने की ज़रूरत है, उसे एंडोजेनिटी कहा जाता है । अधिक विशेष रूप से, यह इस बात पर निर्भर करता है कि x 1 या x 2 के साथ जनसंख्या में का संबंध है या नहीं । यदि यह है, तो संबंधित बी जे एस पक्षपाती होगा। ऐसा इसलिए है क्योंकि है OLS प्रतिगमन तरीकों बच मजबूर, यू मैं , अपने covariates साथ असहसंबद्ध होने के लिए, एक्स जे एस। हालांकि, अपने बच कुछ अलघुकरणीय अनियमितता, से बने होते हैं ε मैं , और अप्रत्यक्ष (लेकिन प्रासंगिक) चर, x 3 , जो शर्त सेx3x1x2bjuixjεix3है के साथ सहसंबद्ध और / या एक्स 2 । दूसरी ओर, यदि दोनों एक्स 1 और एक्स 2 के साथ uncorrelated हैं एक्स 3 आबादी में, तो उनके ख इस से (वे अच्छी तरह से जाहिर है, कुछ और द्वारा पक्षपातपूर्ण हो सकता है) पक्षपाती नहीं किया जाएगा। एक तरह से अर्थशास्त्री इस मुद्दे से निपटने की कोशिश करते हैं, जो इंस्ट्रूमेंटल वैरिएबल का उपयोग करते हैं । x1x2 x1x2x3b
अधिक से अधिक स्पष्टता रखने के लिए, मैं उस के नमूने वितरण दर्शाता आर में एक त्वरित अनुकरण लिखा है निष्पक्ष / के सही मूल्य पर केंद्रित है β 2 , जब इसके साथ असहसंबद्ध है एक्स 3 । इसके दूसरे भाग में, हालांकि, ध्यान दें कि x 3 के साथ असहसंबद्ध है एक्स 1 , लेकिन नहीं एक्स 2 । संयोग नहीं, ख 1 निष्पक्ष है, लेकिन ख 2 है पक्षपाती। b2β2x3x3x1x2b1b2
library(MASS) # you'll need this package below
N = 100 # this is how much data we'll use
beta0 = -71 # these are the true values of the
beta1 = .84 # parameters
beta2 = .64
beta3 = .34
############## uncorrelated version
b0VectU = vector(length=10000) # these will store the parameter
b1VectU = vector(length=10000) # estimates
b2VectU = vector(length=10000)
set.seed(7508) # this makes the simulation reproducible
for(i in 1:10000){ # we'll do this 10k times
x1 = rnorm(N)
x2 = rnorm(N) # these variables are uncorrelated
x3 = rnorm(N)
y = beta0 + beta1*x1 + beta2*x2 + beta3*x3 + rnorm(100)
mod = lm(y~x1+x2) # note all 3 variables are relevant
# but the model omits x3
b0VectU[i] = coef(mod)[1] # here I'm storing the estimates
b1VectU[i] = coef(mod)[2]
b2VectU[i] = coef(mod)[3]
}
mean(b0VectU) # [1] -71.00005 # all 3 of these are centered on the
mean(b1VectU) # [1] 0.8399306 # the true values / are unbiased
mean(b2VectU) # [1] 0.6398391 # e.g., .64 = .64
############## correlated version
r23 = .7 # this will be the correlation in the
b0VectC = vector(length=10000) # population between x2 & x3
b1VectC = vector(length=10000)
b2VectC = vector(length=10000)
set.seed(2734)
for(i in 1:10000){
x1 = rnorm(N)
X = mvrnorm(N, mu=c(0,0), Sigma=rbind(c( 1, r23),
c(r23, 1)))
x2 = X[,1]
x3 = X[,2] # x3 is correated w/ x2, but not x1
y = beta0 + beta1*x1 + beta2*x2 + beta3*x3 + rnorm(100)
# once again, all 3 variables are relevant
mod = lm(y~x1+x2) # but the model omits x3
b0VectC[i] = coef(mod)[1]
b1VectC[i] = coef(mod)[2] # we store the estimates again
b2VectC[i] = coef(mod)[3]
}
mean(b0VectC) # [1] -70.99916 # the 1st 2 are unbiased
mean(b1VectC) # [1] 0.8409656 # but the sampling dist of x2 is biased
mean(b2VectC) # [1] 0.8784184 # .88 not equal to .64