Regressione multipla: due binari ind. vars. - Un termine di interazione può essere significativo, quando gli effetti principali non lo sono?

Aug 24 2020

Penso che questa sia una domanda semplice, ma ho difficoltà a trovare un test o un esempio per questo.

Considera lm(A ~ B*C, data=D)dove A è continuo; B e C sono binari; e le ipotesi di regressione lineare sono soddisfatte.

Può esistere una situazione in cui né B né C influenzano in modo significativo la pendenza (0,05 - il coefficiente t-test), ma il termine di interazione è significativo (il coefficiente t-test)? Quello che ho immaginato durante il brainstorming è la possibilità che l'interazione possa indebolire o contrastare gli effetti individuali.

Per situazione intendo popolazioni realistiche che danno questo effetto. Ciò significa che il campionamento ripetuto produrrebbe prevalentemente questo risultato: B: C è significativo con p = 0,05 e sia B che C non lo sono. Pertanto, le soluzioni che giocano con il solo attraversamento del limite p = 0,05 per ottenere un "successo" limitato una frazione del tempo, o utilizzano campioni molto piccoli, o sono basate sui gradi di libertà sono escluse.

La risposta non deve essere trovata con queste popolazioni del mondo reale (anche se sarebbe fantastico): una simulazione va bene. Lo trovo facile se un fattore ha 3 livelli, ma non sto ancora trovando una soluzione per questa situazione 2x2.

Risposte

8 whuber Aug 24 2020 at 02:28

Per intuizione, considera che il file $F$test valuta se tutte e tre le variabili B, Ce l'interazione B:Ccollettivamente "spiegano" la varianza della risposta, mentre il t-test per ogni singolo coefficiente considera solo quel coefficiente (dopo che sono stati considerati gli effetti degli altri coefficienti). Il test F deve tenere conto della presenza di Be Cinsieme a B:C(e lo fa avendo$3,$ piuttosto che $1,$numeratore gradi di libertà). Pertanto, quando i coefficienti reali di Be Csono relativamente piccoli, dovrebbe essere possibile che la situazione che descrivi valga. In effetti, questo potrebbe anche essere abbastanza comune.

L'intuizione suggerisce una stupida ma efficace ricerca di un esempio: creare un piccolo set di dati con B, Ce B:Cvariabili; utilizzare un modello in cui l'unico coefficiente diverso da zero è l'interazione; aggiungi un po 'di rumore gaussiano; e vedere cosa succede. Fai alcune prove con diverse varianze per gli errori, cercando una situazione in cui i valori p non siano estremi: né molto piccoli né troppo vicini a$1.$ Quindi continua ad aggiungere termini di rumore diversi al modello finché non ottieni un esempio.

Al terzo tentativo ho trovato questo con otto osservazioni (equilibrate).

Call:
lm(formula = A ~ B * C, data = X)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)   0.7597     0.4766   1.594   0.1861  
B            -1.0211     0.6740  -1.515   0.2044  
C            -0.8084     0.6740  -1.199   0.2966  
B:C           3.2233     0.9532   3.381   0.0277 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.674 on 4 degrees of freedom
Multiple R-squared:  0.7981,    Adjusted R-squared:  0.6466 
F-statistic:  5.27 on 3 and 4 DF,  p-value: 0.07109

Non c'è niente di strano nei dati: puoi eseguire il codice seguente e tracciare la diagnostica del modello se lo desideri ( plot(fit)); stanno bene.


Ecco i dettagli della ricerca, eseguita con R.

X <- expand.grid(B=0:1, C=0:1)
X <- rbind(X, X)                # A small dataset of 8 observations
M <- model.matrix(~ B*C, X)     # Useful for computing predicted values

beta <- c(0,0,0,1)              # The model: only the `B:C` term is nonzero
sigma <- 1                      # The SD of the noise terms

set.seed(17)
n.tries <- 100
for (i in 1:5) {
  X$A <- M %*% beta + rnorm(nrow(X), 0, sigma) s <- summary(fit <- lm(A ~ B*C, X)) p <- coefficients(s)["B:C", 4] if (p < 0.05 && pf(s$fstatistic[1], s$fstatistic[2], s$fstatistic[3], lower.tail=FALSE) > 0.05) break
}
if (i < n.tries) print(s) else print("No example found.")
```