구성에 의해 OLS 모델의 오차 항은 X 공변량의 관측 값과 상관이 없습니다. 모형의 가정이 위반 되었기 때문에 (모형이 생략되거나 역 인과 관계가있는 문제와 같이) 모수의 실제 값을 반영하지 않는 치우친 추정치를 산출하는 경우에도 관측 된 데이터에 대해서는 항상 적용됩니다. 예측 된 값은 전적으로 이러한 공변량의 함수이므로 오류 항과 상관이 없습니다. 따라서 예측 된 값에 대해 잔차를 플로팅 할 때는 추정값 구성과 실제로 관련이 없으므로 항상 무작위로 표시되어야합니다. 대조적으로, 모델의 에러 항이 실제로 Y와 상관 될 수있는 것은 전적으로 가능합니다. 예를 들어, 이분법적인 X 변수를 사용하면 실제 Y는E(Y | X = 1)
또는 E(Y | X = 0)
잔차가 커질 것입니다. 다음은 R에서 시뮬레이션 된 데이터와 동일한 직관입니다. 여기서 데이터 생성 프로세스를 제어하기 때문에 모델이 편향되어 있지 않습니다.
rm(list=ls())
set.seed(21391209)
trueSd <- 10
trueA <- 5
trueB <- as.matrix(c(3,5,-1,0))
sampleSize <- 100
# create independent x-values
x1 <- rnorm(n=sampleSize, mean = 0, sd = 4)
x2 <- rnorm(n=sampleSize, mean = 5, sd = 10)
x3 <- 3 + x1 * 4 + x2 * 2 + rnorm(n=sampleSize, mean = 0, sd = 10)
x4 <- -50 + x1 * 7 + x2 * .5 + x3 * 2 + rnorm(n=sampleSize, mean = 0, sd = 20)
X = as.matrix(cbind(x1,x2,x3,x4))
# create dependent values according to a + bx + N(0,sd)
Y <- trueA + X %*% trueB +rnorm(n=sampleSize,mean=0,sd=trueSd)
df = as.data.frame(cbind(Y,X))
colnames(df) <- c("y", "x1", "x2", "x3", "x4")
ols = lm(y~x1+x2+x3+x4, data = df)
y_hat = predict(ols, df)
error = Y - y_hat
cor(y_hat, error) #Zero
cor(Y, error) #Not Zero
우리는 예를 들어 생략 된 모델과의 상관 관계가 0 인 것과 동일한 결과를 얻습니다. x1.
ols2 = lm(y~x2+x3+x4, data = df)
y_hat2 = predict(ols2, df)
error2 = Y - y_hat2
cor(y_hat2, error2) #Still zero
cor(Y, error2) #Not Zero