Wszystkie moje zmienne są ciągłe. Nie ma poziomów. Jest to możliwe nawet mieć interakcji między zmiennymi?
źródło
Wszystkie moje zmienne są ciągłe. Nie ma poziomów. Jest to możliwe nawet mieć interakcji między zmiennymi?
Tak, czemu nie? W takim przypadku zastosowanie miałaby taka sama uwaga, jak w przypadku zmiennych kategorialnych: Wpływ na wynik nie jest taki sam w zależności od wartości . Aby pomóc w wizualizacji, możesz pomyśleć o wartościach pobranych przez gdy przyjmuje wysokie lub niskie wartości. W przeciwieństwie do zmiennych kategorialnych, tutaj interakcja jest reprezentowana przez iloczyn i . Warto zauważyć, że lepiej najpierw wyśrodkować dwie zmienne (aby współczynnik dla powiedzmy odczytywał efekt gdy jest na swojej średniej próbki).
Jak uprzejmie sugeruje @whuber, łatwym sposobem na sprawdzenie, w jaki sposób zmienia się z jako funkcją gdy uwzględniony jest termin interakcji, należy zapisać model .
Następnie można zauważyć, że efekt jednostronnego wzrostu gdy jest utrzymywany na stałym poziomie, można wyrazić jako:
Podobnie efekt, gdy zostanie zwiększony o jedną jednostkę przy jednoczesnym utrzymaniu stałej to . To pokazuje, dlaczego trudno jest interpretować działanie ( ) i ( ) w oderwaniu. Będzie to nawet bardziej skomplikowane, jeśli oba predyktory będą silnie skorelowane. Ważne jest również, aby pamiętać o założeniu liniowości przyjętym w takim modelu liniowym.X 1 β 1 X 2 β 2
Możesz zapoznać się z regresją wielokrotną: testowaniem i interpretacją interakcji , autorstwa Leony S. Aiken, Stephena G. Westa i Raymonda R. Reno (Sage Publications, 1996), dla przeglądu różnych rodzajów efektów interakcji w regresji wielokrotnej . (To prawdopodobnie nie jest najlepsza książka, ale jest dostępna za pośrednictwem Google)
Oto przykład zabawki w R:
library(mvtnorm)
set.seed(101)
n <- 300 # sample size
S <- matrix(c(1,.2,.8,0,.2,1,.6,0,.8,.6,1,-.2,0,0,-.2,1),
nr=4, byrow=TRUE) # cor matrix
X <- as.data.frame(rmvnorm(n, mean=rep(0, 4), sigma=S))
colnames(X) <- c("x1","x2","y","x1x2")
summary(lm(y~x1+x2+x1x2, data=X))
pairs(X)
gdzie wynik faktycznie brzmi:
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.01050 0.01860 -0.565 0.573
x1 0.71498 0.01999 35.758 <2e-16 ***
x2 0.43706 0.01969 22.201 <2e-16 ***
x1x2 -0.17626 0.01801 -9.789 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.3206 on 296 degrees of freedom
Multiple R-squared: 0.8828, Adjusted R-squared: 0.8816
F-statistic: 743.2 on 3 and 296 DF, p-value: < 2.2e-16
A oto jak wyglądają symulowane dane:
Aby zilustrować drugi komentarz @ whubera, zawsze możesz spojrzeć na odmiany jako funkcję przy różnych wartościach (np. Tercile lub decyle); W tym przypadku przydatne są wyświetlacze kratowe. W przypadku powyższych danych postępowalibyśmy w następujący sposób:X 2 X 1
library(Hmisc)
X$x1b <- cut2(X$x1, g=5) # consider 5 quantiles (60 obs. per group)
coplot(y~x2|x1b, data=X, panel = panel.smooth)
n
(11 KB) i używam MiniTab do wykonania wykresu interakcji, a jego obliczenie trwa wieczność, ale niczego nie pokazuje. Ja po prostu nie wiem, jak widzę, jeśli istnieje interakcja ze zbioru danych.