Chciałbym zasugerować, że to zjawisko (nieistotnego testu ogólnego pomimo znaczącej zmiennej indywidualnej) może być rozumiane jako rodzaj zagregowanego „efektu maskującego” i że, chociaż możliwe, że może wynikać z wielokoliniowych zmiennych objaśniających, nie musi tego robić to w ogóle. Okazuje się również, że nie wynika to z wielu korekt porównawczych. Tak więc odpowiedź ta dodaje pewne kwalifikacje do odpowiedzi, które już się pojawiły, co wręcz przeciwnie sugeruje, że winowajcami powinny być wielokliniowość lub wielokrotne porównania.
Aby ustalić wiarygodność tych twierdzeń, wygenerujmy zbiór idealnie ortogonalnych zmiennych - możliwie jak najbardziej nieliniowych - i zmienną zależną, która jest wyraźnie określona wyłącznie przez pierwsze objaśnienie (plus duża liczba błędów losowych niezależne od wszystkiego innego). W R
tym można zrobić (odtwarzalnie, jeśli chcesz eksperymentować) jak
set.seed(17)
p <- 5 # Number of explanatory variables
x <- as.matrix(do.call(expand.grid, lapply(as.list(1:p), function(i) c(-1,1))))
y <- x[,1] + rnorm(2^p, mean=0, sd=2)
Nie ma znaczenia, że zmienne objaśniające są binarne; liczy się ich ortogonalność, którą możemy sprawdzić, aby upewnić się, że kod działa zgodnie z oczekiwaniami, co można zrobić, sprawdzając ich korelacje. Rzeczywiście, macierz korelacji jest interesująca : sugeruje, że małe współczynniki y
mają niewiele wspólnego z dowolną zmienną, z wyjątkiem pierwszej (która jest z założenia), a zerowe przekątne potwierdzają ortogonalność zmiennych objaśniających:
> cor(cbind(x,y))
Var1 Var2 Var3 Var4 Var5 y
Var1 1.00 0.000 0.000 0.000 0.00 0.486
Var2 0.00 1.000 0.000 0.000 0.00 0.088
Var3 0.00 0.000 1.000 0.000 0.00 0.044
Var4 0.00 0.000 0.000 1.000 0.00 -0.014
Var5 0.00 0.000 0.000 0.000 1.00 -0.167
y 0.49 0.088 0.044 -0.014 -0.17 1.000
Uruchommy serię regresji , używając tylko pierwszej zmiennej, a następnie pierwszych dwóch i tak dalej. Dla zwięzłości i łatwego porównania, w każdym pokazuję tylko linię dla pierwszej zmiennej i ogólny test F:
>temp <- sapply(1:p, function(i) print(summary(lm(y ~ x[, 1:i]))))
# Estimate Std. Error t value Pr(>|t|)
1 x[, 1:i] 0.898 0.294 3.05 0.0048 **
F-statistic: 9.29 on 1 and 30 DF, p-value: 0.00478
2 x[, 1:i]Var1 0.898 0.298 3.01 0.0053 **
F-statistic: 4.68 on 2 and 29 DF, p-value: 0.0173
3 x[, 1:i]Var1 0.8975 0.3029 2.96 0.0062 **
F-statistic: 3.05 on 3 and 28 DF, p-value: 0.0451
4 x[, 1:i]Var1 0.8975 0.3084 2.91 0.0072 **
F-statistic: 2.21 on 4 and 27 DF, p-value: 0.095
5 x[, 1:i]Var1 0.8975 0.3084 2.91 0.0073 **
F-statistic: 1.96 on 5 and 26 DF, p-value: 0.118
Zobacz, jak (a) znaczenie pierwszej zmiennej prawie się nie zmienia, (a ') pierwsza zmienna pozostaje znacząca (p <0,05), nawet przy korekcie dla wielu porównań ( np. Zastosuj Bonferroni, mnożąc nominalną wartość p przez liczba zmiennych objaśniających), (b) współczynnik pierwszej zmiennej prawie się nie zmienia, ale (c) ogólne znaczenie rośnie wykładniczo, szybko zwiększając się do nieistotnego poziomu.
Interpretuję to jako wykazanie, że uwzględnienie zmiennych objaśniających, które są w dużej mierze niezależne od zmiennej zależnej, może „maskować” ogólną wartość p regresji. Gdy nowe zmienne są prostopadłe do istniejących i do zmiennej zależnej, nie zmienią poszczególnych wartości p. (Widoczne tutaj niewielkie zmiany są spowodowane tym, że dodany błąd losowy y
jest przypadkowo skorelowany ze wszystkimi pozostałymi zmiennymi.) Jedną z lekcji, którą należy wyciągnąć z tego, jest to, że parsimony jest wartościowe : użycie tak małej liczby zmiennych, jak to konieczne, może wzmocnić znaczenie wyniki.
Ja nie mówiąc, że to niekoniecznie dzieje się na zbiorze danych w kwestii, o której niewiele zostało ujawnione. Ale wiedza, że ten efekt maskowania może się zdarzyć, powinna stanowić podstawę naszej interpretacji wyników, a także naszych strategii wyboru zmiennych i budowy modelu.