Wie kann ein linearer und ein quadratischer Term eingeschlossen werden, wenn auch die Interaktion mit diesen Variablen einbezogen wird?


9

Wenn Sie einen numerischen Prädiktor mit kategorialen Prädiktoren und deren Wechselwirkungen hinzufügen, wird es normalerweise als notwendig angesehen, die Variablen vorher auf 0 zu zentrieren. Der Grund dafür ist, dass die Haupteffekte ansonsten schwer zu interpretieren sind, da sie mit dem numerischen Prädiktor bei 0 bewertet werden.

Meine Frage ist nun, wie man zentriert, wenn man nicht nur die ursprüngliche numerische Variable (als linearen Term), sondern auch den quadratischen Term dieser Variablen enthält. Hier sind zwei verschiedene Ansätze notwendig:

  1. Zentrieren beider Variablen auf ihren individuellen Mittelwert. Dies hat den unglücklichen Nachteil, dass sich die 0 jetzt für beide Variablen unter Berücksichtigung der ursprünglichen Variablen an einer anderen Position befindet.
  2. Zentrieren beider Variablen auf den Mittelwert der ursprünglichen Variablen (dh Subtrahieren des Mittelwerts von der ursprünglichen Variablen für den linearen Term und Subtrahieren des Quadrats des Mittelwerts der ursprünglichen Variablen vom quadratischen Term). Bei diesem Ansatz würde die 0 den gleichen Wert der ursprünglichen Variablen darstellen, aber die quadratische Variable würde nicht auf 0 zentriert sein (dh der Mittelwert der Variablen wäre nicht 0).

Ich denke, dass Ansatz 2 angesichts des Grundes für die Zentrierung doch vernünftig erscheint. Ich kann jedoch nichts darüber finden (auch nicht in den verwandten Fragen: a und b ).

Oder ist es im Allgemeinen eine schlechte Idee, lineare und quadratische Terme und ihre Wechselwirkungen mit anderen Variablen in ein Modell aufzunehmen?


Diese Themen klingen nach stilistischen Bedenken. Das heißt nicht, dass die Fragen unwichtig sind, aber dass die Antworten mehr von Ihren genauen Zielen für die Analyse abhängen können. Ich sehe nicht ein, wie einer der von Ihnen erwähnten Ansätze "allgemein schlecht" wäre. Es ist möglicherweise einfacher, die gesuchte Antwort mit etwas mehr Hintergrundinformationen zum wissenschaftlichen Problem zu erhalten, und insbesondere, welche Art von interpretativer Aussage Sie aus dem Modell ziehen möchten.
Zkurtz

Ich würde vorschlagen, orthogonale Polynome zu verwenden.
Glen_b -State Monica

@Glen_b Kannst du noch ein paar Details geben?
Henrik

Details enthalten. Entschuldigung, es hat einige Tage gedauert.
Glen_b -Reinstate Monica

Antworten:


8

Wenn Polynome und Wechselwirkungen zwischen ihnen einbezogen werden, kann Multikollinearität ein großes Problem sein. Ein Ansatz besteht darin, orthogonale Polynome zu betrachten.

Im Allgemeinen sind orthogonale Polynome eine Familie von Polynomen, die in Bezug auf ein inneres Produkt orthogonal sind.

So ist beispielsweise im Fall von Polynomen über einen Bereich mit der Gewichtsfunktion das innere Produkt - Orthogonalität macht dieses innere Produkt sei denn, .b a w ( x ) p m ( x ) p n ( x ) d x 0 m = nwabw(x)pm(x)pn(x)dx0m=n

Das einfachste Beispiel für kontinuierliche Polynome sind die Legendre-Polynome, die über ein endliches reales Intervall (üblicherweise über ) eine konstante Gewichtsfunktion haben .[1,1]

In unserem Fall ist der Raum (die Beobachtungen selbst) diskret, und unsere Gewichtsfunktion ist (normalerweise) ebenfalls konstant, sodass die orthogonalen Polynome eine Art diskretes Äquivalent zu Legendre-Polynomen sind. Mit der in unseren Prädiktoren enthaltenen Konstante ist das innere Produkt einfach .pm(x)Tpn(x)=ipm(xi)pn(xi)

Betrachten Sie zum Beispielx=1,2,3,4,5

Beginnen Sie mit der konstanten Spalte . Das nächste Polynom hat die Form , aber wir machen uns im Moment keine Gedanken über die Skalierung, also ist . Das nächste Polynom hätte die Form ; es stellt sich heraus, dass orthogonal zu den beiden vorhergehenden ist:a x - b p 1 ( x ) = x - ˉ x = x - 3 a x 2 + b x + c p 2 ( x ) = ( x - 3 ) 2 - 2 = x 2 - 6 x + 7p0(x)=x0=1axbp1(x)=xx¯=x3ax2+bx+cp2(x)=(x3)22=x26x+7

x         p0  p1  p2   
1          1  -2   2   
2          1  -1  -1
3          1   0  -2
4          1   1  -1
5          1   2   2

Häufig wird auch die Basis normalisiert (wodurch eine orthonormale Familie erzeugt wird) - das heißt, die Quadratsummen jedes Terms werden auf eine Konstante gesetzt (z. B. auf oder auf , so dass die Standardabweichung 1 oder 1 beträgt vielleicht am häufigsten zu ).n - 1 1nn11

Zu den Möglichkeiten zur Orthogonalisierung einer Reihe von Polynomprädiktoren gehören die Gram-Schmidt-Orthogonalisierung und die Cholesky-Zerlegung, obwohl es zahlreiche andere Ansätze gibt.


Einige der Vorteile orthogonaler Polynome:

1) Multikollinearität ist kein Problem - diese Prädiktoren sind alle orthogonal.

2) Die Koeffizienten niedriger Ordnung ändern sich nicht, wenn Sie Terme hinzufügen . Wenn Sie ein Polynom vom Grad über orthogonale Polynome anpassen, kennen Sie die Koeffizienten einer Anpassung aller Polynome niedrigerer Ordnung, ohne sie erneut anzupassen.k


Beispiel in R ( carsDaten, Bremswege gegen Geschwindigkeit): Geben Sie hier die Bildbeschreibung ein

Hier betrachten wir die Möglichkeit, dass ein quadratisches Modell geeignet sein könnte:

R verwendet die polyFunktion, um orthogonale Polynomprädiktoren einzurichten:

> p <- model.matrix(dist~poly(speed,2),cars)
> cbind(head(cars),head(p))
  speed dist (Intercept) poly(speed, 2)1 poly(speed, 2)2
1     4    2           1      -0.3079956      0.41625480
2     4   10           1      -0.3079956      0.41625480
3     7    4           1      -0.2269442      0.16583013
4     7   22           1      -0.2269442      0.16583013
5     8   16           1      -0.1999270      0.09974267
6     9   10           1      -0.1729098      0.04234892

Sie sind orthogonal:

> round(crossprod(p),9)
                (Intercept) poly(speed, 2)1 poly(speed, 2)2
(Intercept)              50               0               0
poly(speed, 2)1           0               1               0
poly(speed, 2)2           0               0               1

Hier ist eine Darstellung der Polynome: Geben Sie hier die Bildbeschreibung ein

Hier ist die lineare Modellausgabe:

> summary(carsp)

Call:
lm(formula = dist ~ poly(speed, 2), data = cars)

Residuals:
    Min      1Q  Median      3Q     Max 
-28.720  -9.184  -3.188   4.628  45.152 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)       42.980      2.146  20.026  < 2e-16 ***
poly(speed, 2)1  145.552     15.176   9.591 1.21e-12 ***
poly(speed, 2)2   22.996     15.176   1.515    0.136    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 15.18 on 47 degrees of freedom
Multiple R-squared:  0.6673,    Adjusted R-squared:  0.6532 
F-statistic: 47.14 on 2 and 47 DF,  p-value: 5.852e-12

Hier ist ein Diagramm der quadratischen Anpassung: Geben Sie hier die Bildbeschreibung ein


7

Ich bin nicht der Meinung, dass die Zentrierung die Mühe wert ist, und die Zentrierung macht die Interpretation von Parameterschätzungen komplexer. Wenn Sie eine moderne Matrixalgebra-Software verwenden, ist die algebraische Kollinearität kein Problem. Ihre ursprüngliche Motivation, sich zu zentrieren, um die Haupteffekte bei Vorhandensein von Interaktion interpretieren zu können, ist nicht stark. Die Haupteffekte, wenn sie auf einen automatisch gewählten Wert eines kontinuierlichen Wechselwirkungsfaktors geschätzt werden, sind etwas willkürlich, und es ist am besten, dies als einfaches Schätzproblem zu betrachten, indem vorhergesagte Werte verglichen werden. Im R- rmsPaketcontrast.rmsMit dieser Funktion können Sie beispielsweise einen beliebigen interessierenden Kontrast unabhängig von variablen Codierungen erhalten. Hier ist ein Beispiel für eine kategoriale Variable x1 mit den Ebenen "a" "b" "c" und einer kontinuierlichen Variablen x2, die mit einem eingeschränkten kubischen Spline mit 4 Standardknoten angepasst wird. Unterschiedliche Beziehungen zwischen x2 und y sind für unterschiedliche x1 zulässig. Zwei der Ebenen von x1 werden bei x2 = 10 verglichen.

require(rms)
dd <- datadist(x1, x2); options(datadist='dd')
f <- ols(y ~ x1 * rcs(x2,4))
contrast(f, list(x1='b', x2=10), list(x1='c', x2=10))
# Now get all comparisons with c:
contrast(f, list(x1=c('a','b'), x2=10), list(x1='c', x2=10))
# add type ='joint' to get a 2 d.f. test, or conf.type='simultaneous'
# to get simultaneous individual confidence intervals

Mit diesem Ansatz können Sie Kontraste auch leicht bei mehreren Werten der Interaktionsfaktoren abschätzen, z

contrast(f, list(x1='b', x2=10:20), list(x1='c', x2=10:20))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.