Vấn đề bạn cần lo lắng được gọi là nội sinh . Cụ thể hơn, nó phụ thuộc vào việc có tương quan trong dân số với x 1 hay x 2 hay không . Nếu có, thì b j s liên quan sẽ bị sai lệch. Đó là bởi vì các phương pháp hồi quy OLS buộc các phần dư, u i , không được tương quan với các đồng biến của bạn, x j s. Tuy nhiên, dư của bạn được cấu tạo của một số ngẫu nhiên không thể rút gọn, ε i , và các biến không quan sát được (nhưng có liên quan), x 3 làx3x1x2bjuixjεix3 , mà theo quy định tương quan với và / hoặc x 2 . Mặt khác, nếu cả x 1 và x 2 không tương thích với x 3 trong dân số, thì b của họ sẽ không bị thiên vị bởi điều này (tất nhiên họ cũng có thể bị thiên vị bởi một thứ khác). Một nhà kinh tế lượng học cố gắng giải quyết vấn đề này là sử dụng các biến công cụ . x1x2 x1x2x3b
Để rõ ràng hơn, tôi đã viết một mô phỏng nhanh trong R cho thấy phân phối lấy mẫu của là không thiên vị / tập trung vào giá trị thực của β 2 , khi nó không tương thích với x 3 . Tuy nhiên, trong lần chạy thứ hai, lưu ý rằng x 3 không tương thích với x 1 , nhưng không phải là x 2 . Không phải ngẫu nhiên, b 1 là không thiên vị, nhưng b 2 là sai lệch. 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