나는 Breiman의 설명에 답할 수있는 시뮬레이션을 만들었고 명백한 것만 발견 했습니다. 결과는 상황과 "극단적"의 의미에 달려 있습니다.
끔찍한 일이 많지만 R
관심있는 독자가 자신의 조사에 사용할 수 있도록 쉽게 수정 된 코드를 사용하여 수행 된 하나의 예제로 제한하겠습니다 . 이 코드는 대략 직교 인 대략 균일하게 분포 된 독립 값으로 구성된 설계 행렬을 설정하는 것으로 시작합니다 (따라서 다중 공선 성 문제가 발생하지 않음). 처음 두 변수 사이의 단일 2 차 (즉, 비선형) 상호 작용을 계산합니다. 이는 연구 할 수있는 많은 종류의 "비선형 성"중 하나 일 뿐이지 만, 일반적으로 잘 이해되고있는 것입니다. 그런 다음 계수를 비교할 수 있도록 모든 것을 표준화합니다.
set.seed(41)
p <- 7 # Dimensions
n <- 2^p # Observations
x <- as.matrix(do.call(expand.grid, lapply(as.list(1:p), function(i) c(-1,1))))
x <- x + runif(n*p, min=-1, max=1)
x <- cbind(x, x.12 = x[,1]*x[,2]) # The nonlinear part
x <- apply(x, 2, function(y) (y - mean(y))/sd(y)) # Standardization
비선형 성이없는 기본 OLS 모델의 경우 잔차 오차의 일부 계수와 표준 편차를 지정해야합니다. 다음은 단위 계수 세트와 이에 상응하는 SD입니다.
beta <- rep(c(1,-1), p)[1:p]
sd <- 1
상황을 설명하기 위해 시뮬레이션의 하드 코딩 된 반복이 있습니다. 종속 변수를 생성하고 값을 요약하며 모든 변수 (상호 작용 포함)의 전체 상관 행렬을 표시하고 산점도 행렬을 표시합니다. 그런 다음 OLS 회귀를 수행합니다. 다음에서, 상호 작용 계수 는 다른 계수들 (모두 또는 과 동일)보다 실질적으로 작으므로 이를 "익스트림"이라고 부르기가 어렵습니다.1 - 11 / 41− 1
gamma = 1/4 # The standardized interaction term
df <- data.frame(x)
df$y <- x %*% c(beta, gamma) + rnorm(n, sd=sd)
summary(df)
cor(df)*100
plot(df, lower.panel=function(x,y) lines(lowess(y~x)),
upper.panel=function(x,y) points(x,y, pch=".", cex=4))
summary(lm(df$y ~ x))
여기에서 모든 출력을 살펴 보지 말고 plot
명령 출력을 사용하여 이러한 데이터를 살펴 보겠습니다 .
아래쪽 삼각형의 lowess 트레이스는 본질적으로 교호 작용 ( x.12
)과 종속 변수 ( y
) 사이에 선형 관계가 없으며 다른 변수와와 사이에 적당한 선형 관계를 보여줍니다 y
. OLS 결과는 다음을 확인합니다. 상호 작용은 거의 중요하지 않습니다.
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.0263 0.0828 0.32 0.751
xVar1 0.9947 0.0833 11.94 <2e-16 ***
xVar2 -0.8713 0.0842 -10.35 <2e-16 ***
xVar3 1.0709 0.0836 12.81 <2e-16 ***
xVar4 -1.0007 0.0840 -11.92 <2e-16 ***
xVar5 1.0233 0.0836 12.24 <2e-16 ***
xVar6 -0.9514 0.0835 -11.40 <2e-16 ***
xVar7 1.0482 0.0835 12.56 <2e-16 ***
xx.12 0.1902 0.0836 2.27 0.025 *
비선형 성의 테스트로 교호 작용 항의 p- 값을 사용할 것입니다.이 p- 값이 충분히 낮은 경우 (얼마나 낮을지를 선택할 수 있는지) 비선형 성을 감지합니다.
(우리가 정확히 찾고있는 것에 대해서는 미묘한 부분이 있습니다. 실제로 우리는 단일 항에 초점을 맞추기보다는 7 * 6/2 = 21 가능한 2 차 상호 작용뿐만 아니라 7 개의 2 차 항을 검토해야 할 수도 있습니다. 우리는이 28 개의 상호 관련 테스트에 대한 수정을 원할 것입니다 p- 값의 시뮬레이트 된 분포를 표시하기 때문에 여기서는이 수정을 명시 적으로 작성하지 않습니다. 가에 따라 마지막에 히스토그램 당신의 중요성 임계 값.)
그러나이 분석을 한 번만 수행하지 마십시오. y
동일한 모델과 동일한 디자인 매트릭스에 따라 각 반복에서 새로운 값을 생성하여 여러 번 수행합시다 . 이를 달성하기 위해 함수를 사용하여 한 번의 반복을 수행하고 교호 작용 항의 p- 값을 반환합니다.
test <- function(gamma, sd=1) {
y <- x %*% c(beta, gamma) + rnorm(n, sd=sd)
fit <- summary(lm(y ~ x))
m <- coef(fit)
n <- dim(m)[1]
m[n, 4]
}
시뮬레이션 결과를 p- 값의 히스토그램으로 제시 gamma
하고 상호 작용 항의 표준화 된 계수 를 변경합니다 . 먼저 히스토그램 :
h <- function(g, n.trials=1000) {
hist(replicate(n.trials, test(g, sd)), xlim=c(0,1),
main=toString(g), xlab="x1:x2 p-value")
}
par(mfrow=c(2,2)) # Draw a 2 by 2 panel of results
이제 작업을 수행하십시오. 시뮬레이션 당 1000 회 시행 (몇 번의 상호 작용 항 값에서 시작하여 매번 연속적으로 절반 씩 중단)하는 데 몇 초가 걸립니다.
temp <- sapply(2^(-3:0) * gamma, h)
결과 :
오른쪽 아래부터 거꾸로 읽기, 이러한 플롯에 대한 것을 보여 이 디자인 매트릭스 x
에 대해 이 오류의 표준 편차 sd
, 그리고에 대한 이러한 표준화 계수 beta
, OLS가의 표준화 된 상호 작용을 검출 할 수있다 (한 분기 다른 계수의 크기를 ) 안정적으로 시간의 80 % 이상 (p- 값에 5 % 임계 값 사용) (현재 무시하고있는 다중 비교 수정에 대한 간단한 설명을 기억하십시오); 그것은 종종 (시간의 약 20 %)의 상호 작용 크기를 탐지 할 수 있습니다 . 때로는 크기의 상호 작용을 감지합니다1 / 8 1 / 16 1 / 21 / 41 / 81 / 16더 작은 상호 작용을 식별 할 수 없습니다. 에 gamma
해당 하는 히스토그램은 여기에 표시되어 있지 않습니다 . 이는 여러 비교를 수정하더라도 2 차 상호 작용이 거의 확실하게 감지됨을 보여줍니다.1 / 2
당신 여부에서 크기가 다양 이러한 상호 작용 취할 에 "극단적 인"으로, 또는하지 (표현으로 회귀 상황에, 당신의 관점에 따라 달라집니다 , 그리고 얼마나 많은 독립적 인 테스트에) 비선형 성의 당신은 행동 을 상상하고, 내가 크게 존경하는 Breiman에게 페이스를 맞출 것입니다. OLS가 비선형 성을 감지하는 것을 확실히 어렵게 만들 수 있습니다. 팽창 하여 비선형 성을 늪으로 돌리고 동시에 적합도에 대한 다양한 테스트를 수행합니다.1 / 41 / 321 / 4x
sd
beta
sd
요컨대, 이와 같은 시뮬레이션은 방금 설정하고 올바르게 해석하면 원하는 것을 증명할 수 있습니다. 그것은 통계 학자들이 그들이 사용하고있는 절차의 능력과 약점에 대한 개인적이고 깊은 이해를 얻기 위해 그들이 직면 한 특정 문제에 적합한 자체 탐사를 수행해야 함을 시사한다.