아직 예측하기 위해 데이터를 유지하려고 시도하지 않았지만 내 직감은 모델에서 공분산을 0으로 고정하는 것은 일련의 개별 단일 IV 선형 회귀 방정식을 결합하여 DV를 예측하는 것과 유사하다는 것입니다. 이 접근법과 달리, 다중 회귀는 DV를 예측하기 위해 방정식 모델을 생성 할 때 IV의 공분산을 설명합니다. 이것은 포함 된 IV 세트 내에서 전적으로 발생하는 간접 효과와 직접 효과를 분리하여 해석 성을 향상시킵니다. 솔직히 이것이 DV 예측을 향상시키는 지 확실하지 않습니다. 통계학자가 아닌 통계 사용자이기 때문에 필자는 다음과 같은 시뮬레이션 테스트 기능을 함께 사용하여 불완전한 답변을 제공했습니다 ( "예, 모형에 IV 공분산을 통합하면 예측 정확도가 향상됩니다").
simtestit=function(Sample.Size=100,Iterations=1000,IV.r=.3,DV.x.r=.4,DV.z.r=.4) {
require(psych); output=matrix(NA,nrow=Iterations,ncol=6); for(i in 1:Iterations) {
x=rnorm(Sample.Size); z=rnorm(Sample.Size)+x*IV.r
y=rnorm(Sample.Size)+x*DV.x.r+z*DV.z.r
y.predicted=x*lm(y~x+z)$coefficients[2]+z*lm(y~x+z)$coefficients[3]
bizarro.y.predicted=x*lm(y~x)$coefficients[2]+z*lm(y~z)$coefficients[2]
output[i,]=c(cor(y.predicted,y)^2,cor(bizarro.y.predicted,y)^2,
cor(y.predicted,y)^2>cor(bizarro.y.predicted,y)^2,cor(x,z),cor(x,y),cor(y,z))}
list(output=output,percent.of.predictions.improved=100*sum(output[,3])/Iterations,
mean.improvement=fisherz2r(mean(fisherz(output[,1])-fisherz(output[,2]))))}
# Wrapping the function in str( ) gives you the gist without filling your whole screen
str(simtestit())
엔= Iterations
엔Sample.Size
z
= x
+y
= x
+ z
+ 랜덤 노이즈 합니다. 사용자는 마지막 세 개의 인수에 대한 기본값을 재정 의하여 상관 관계에 어느 정도 영향을 줄 수 있지만 랜덤 노이즈는 샘플 상관 관계에도 영향을 미치므로 샘플링 오류가 실제 상관 매개 변수의 추정치에 영향을 미치는 방식을 시뮬레이션합니다. 함수는 예측 연산 y
을위한 회귀 계수에 기초 x
하고 z
도출을 행 :
(1y.predicted
(2bizarro.y.predicted
output
Iterations
아르 자형2121 > 2아르 자형x
y
z
output
simtestit()
str( )
아르 자형21) IV의 공분산을 설명하기위한 다중 회귀 및 반복 전반에 걸친 이러한 개선의 평균 ( 아르 자형psych
아르 자형2아르 자형2IV.r
)이 더 큽니다. 나보다 GLM 기능에 익숙 할 것이므로 (아직 아님)이 기능을 변경하거나 기본 아이디어를 사용하여 너무 많은 어려움없이 원하는 IV를 통해 GLM 예측을 비교할 수 있습니다. 그것이 같은 방식으로 나타날 것이라고 가정하면, 두 번째 질문에 대한 기본적인 대답은 아마도 그렇습니다. 그러나 IV가 얼마나 강한 지에 따라 얼마나 달라지는가에 달려 있습니다. 홀드 아웃 데이터와 모델에 적합하게 사용 된 데이터 사이의 샘플링 오차의 차이는 후자의 데이터 세트 내에서 예측 정확도의 향상을 압도 할 수 있습니다. 두 개의 IV 만있는 최대 기본 사례).