Box-Cox-ähnliche Transformation für unabhängige Variablen?


53

Gibt es eine Box-Cox-ähnliche Transformation für unabhängige Variablen? Das heißt, eine Transformation, die die Variable so optimiert , dass sie für ein lineares Modell angemessener ist?xy~f(x)

Wenn ja, gibt es eine Funktion, mit der dies durchgeführt werden kann R?


1
Ich kenne keine Möglichkeit, dies zu tun, Rund wenn ich einen Moment darüber nachdenke, bin ich mir nicht sicher, wie man das überhaupt tun würde. Welche Kriterien würden Sie optimieren, um die "linearste" Transformation sicherzustellen? ist verlockend, aber wie in meiner Antwort hier zu sehen ist , kann allein nicht verwendet werden, um festzustellen, ob die Linearitätsannahme eines Modells erfüllt ist. Hatten Sie einige Kriterien im Auge? R2R2
Makro

1
Ich habe den Eindruck, ich habe bereits eine Zeitung darüber gesehen. Vielleicht ist es vernünftiger, mit "Kovariate" anstelle von "Independent Variable" zu googeln.
Stéphane Laurent

Ich denke (aus dem Gedächtnis ...), dass es eine Implementierung davon im Autopaket (R) gibt. Aber du würdest auch Gams wie im Paket gmcv untersuchen.
kjetil b halvorsen

Unter stats.stackexchange.com/questions/60431/… wurde ein Thread veröffentlicht, in dem die automatische Inferenz von Box-Cox-Parametern (durch gleichzeitiges Transformieren aller unabhängigen Variablen zusammen mit der abhängigen Variablen) erläutert wird .
whuber

Antworten:


72

John Tukey sprach sich für seine " Drei-Punkte-Methode " aus, um Re-Ausdrücke von Variablen zur Linearisierung von Beziehungen zu finden.

Ich werde dies mit einer Übung aus seinem Buch Exploratory Data Analysis veranschaulichen . Dies sind Quecksilberdampfdruckdaten aus einem Experiment, bei dem die Temperatur variiert und der Dampfdruck gemessen wurde.

pressure <- c(0.0004, 0.0013, 0.006, 0.03, 0.09, 0.28, 0.8, 1.85, 4.4, 
              9.2, 18.3, 33.7, 59, 98, 156, 246, 371, 548, 790) # mm Hg
temperature <- seq(0, 360, 20) # Degrees C

Die Beziehung ist stark nichtlinear: siehe linkes Feld in der Abbildung.

Grundstücke

Da es sich um eine Erkundungsübung handelt , erwarten wir, dass sie interaktiv ist. Der Analytiker wird gebeten , zunächst drei "typische" Punkte in der Handlung zu identifizieren : einen in der Nähe jedes Endes und einen in der Mitte. Ich habe das hier getan und sie rot markiert. (Als ich diese Übung vor langer Zeit zum ersten Mal gemacht habe, habe ich einen anderen Satz von Punkten verwendet, bin aber zu den gleichen Ergebnissen gekommen.)

Bei der Dreipunktmethode wird nach einer Box-Cox-Transformation gesucht, die bei Anwendung auf eine der Koordinaten (y oder x) (a) die typischen Punkte ungefähr auf a platziert line und (b) verwenden eine "nette" Potenz, die normalerweise aus einer "Rangliste" von Potenzen ausgewählt wird, die vom Analytiker interpretiert werden können.

Aus Gründen, die sich später zeigen werden, habe ich die Box-Cox-Familie um einen "Versatz" erweitert, damit die Transformationen in der Form vorliegen

x(x+α)λ1λ.

Hier ist eine schnelle und schmutzige RImplementierung. Es findet zuerst eine optimale Lösung, rundet dann auf den nächsten Wert auf der Leiter und optimiert (innerhalb angemessener Grenzen) , vorbehaltlich dieser Einschränkung . Es ist unglaublich schnell, da alle Berechnungen nur auf diesen drei typischen Punkten des ursprünglichen Datensatzes basieren. (Sie könnten sie sogar mit Bleistift und Papier machen, genau das hat Tukey getan.)λ α(λ,α)λα

box.cox <- function(x, parms=c(1,0)) {
  lambda <- parms[1]
  offset <- parms[2]
  if (lambda==0) log(x+offset) else ((x+offset)^lambda - 1)/lambda
}
threepoint <- function(x, y, ladder=c(1, 1/2, 1/3, 0, -1/2, -1)) {
  # x and y are length-three samples from a dataset.
  dx <- diff(x)
  f <- function(parms) (diff(diff(box.cox(y, parms)) / dx))^2
  fit <- nlm(f, c(1,0))
  parms <- fit$estimate #$
  lambda <- ladder[which.min(abs(parms[1] - ladder))]
  if (lambda==0) offset = 0 else {
    do <- diff(range(y))
    offset <- optimize(function(x) f(c(lambda, x)), 
                       c(max(-min(x), parms[2]-do), parms[2]+do))$minimum    
  }
  c(lambda, offset)
}

Wenn die Dreipunktmethode auf die Druckwerte (y) im Quecksilberdampfdatensatz angewendet wird, erhalten wir das mittlere Feld der Diagramme.

data <- cbind(temperature, pressure)
n <- dim(data)[1]
i3 <- c(2, floor((n+1)/2), n-1)
parms <- threepoint(temperature[i3], pressure[i3])
y <- box.cox(pressure, parms)

In diesem Fall ergibt sich parmsgleich : Die Methode wählt die log-Transformation des Drucks.(0,0)

Wir sind an einem Punkt angelangt, der dem Kontext der Frage entspricht: Aus irgendeinem Grund (normalerweise zur Stabilisierung der Restvarianz) haben wir die abhängige Variable erneut ausgedrückt , aber wir stellen fest, dass die Beziehung zu einer unabhängigen Variablen nichtlinear ist. Um die Beziehung zu linearisieren, wenden wir uns nun der Umformulierung der unabhängigen Variablen zu. Dies geschieht auf die gleiche Weise, indem lediglich die Rollen von x und y vertauscht werden:

parms <- threepoint(y[i3], temperature[i3])
x <- box.cox(temperature, parms)

Die Werte parmsfür die unabhängige Variable (Temperatur) sind : Mit anderen Worten, wir sollten die Temperatur in Grad Celsius über C und ihren Kehrwert (die Potenz) verwenden. (Aus technischen Gründen fügt die Box-Cox-Transformation dem Ergebnis eine weitere hinzu .) Die resultierende Beziehung wird im rechten Bereich angezeigt.- 254 - 1 1(1,253.75)25411


Inzwischen hat jeder mit dem geringsten wissenschaftlichen Hintergrund erkannt, dass die Daten uns "auffordern", absolute Temperaturen zu verwenden - wobei der Offset statt beträgt -, da diese physikalisch bedeutsam sein werden. (Wenn der letzte Plot mit einem Versatz von anstelle von neu gezeichnet wird , gibt es kaum sichtbare Änderungen. Ein Physiker würde dann die x-Achse mit beschriften, dh mit der reziproken absoluten Temperatur.)254 273 254 1 / ( 1 - x )2732542732541/(1x)

Dies ist ein schönes Beispiel dafür, wie statistische Untersuchungen mit dem Verständnis des Untersuchungsgegenstands interagieren müssen . Tatsächlich zeigen sich gegenseitige absolute Temperaturen in physikalischen Gesetzen die ganze Zeit. Folglich allein mit einfachen EDA Methoden dieses jahrhundertealte, einfach, Daten - Set zu erkunden, haben wir die neu entdeckt Clapeyron-Beziehung : der Logarithmus des Dampfdruckes ist eine lineare Funktion der reziproken absoluten Temperatur. Nicht nur das, wir haben eine nicht sehr schlechte Schätzung des absoluten Nullpunkts (0254Grad C), aus der Steigung des rechten Diagramms können wir die spezifische Verdampfungsenthalpie berechnen, und - wie sich herausstellt - eine sorgfältige Analyse der Rückstände identifiziert einen Ausreißer (den Wert bei einer Temperatur von Grad C), zeigt uns, wie sich die Verdampfungsenthalpie (sehr geringfügig) mit der Temperatur ändert (wodurch das ideale Gasgesetz verletzt wird), und kann uns letztendlich genaue Informationen über den effektiven Radius der Quecksilbergasmoleküle geben! Das alles aus 19 Datenpunkten und einigen Grundkenntnissen in EDA.0


2
Hallo lieber Whuber. Was für eine interessante Antwort, ich habe sie gerne gelesen, danke! (und ich werde auch ein bisschen damit spielen, um zu sehen, wie es zu dem Problem passt, mit dem ich arbeite)
Tal Galili

3
@Andre Um den letzten Teil dieses Codes zu verwenden, müssen Sie die Variablen x und y wie in einer Matrix von mal binden . (Dies geschah, um der Art und Weise zu entsprechen, in der (x, y) Daten normalerweise entweder als Matrix oder als Datenrahmen gespeichert werden.) Ich entschuldige mich dafür, diesen Schritt weggelassen zu haben und habe die Antwort bearbeitet, um sie einzuschließen - sehen Sie, ob das funktioniert. 2n2data <- cbind(temperature, pressure)R
whuber

2
@landroni Integrale und kleine gebrochene Potenzen entstehen häufig in physikalischen, chemischen und biologischen Theorien sowie durch geometrische Überlegungen. (Wenn zum Beispiel eine Variable ein Volumen ist, ist ihre Kubikwurzel eine Länge - was interpretierbar ist - während beispielsweise ihre siebte Wurzel keine einfache geometrische Interpretation hat.) Andere Potenzen haben selten eine solche Interpretation.
whuber

3
@Frank Das stimmt; es ist ausdrücklich und unbefangen eine Erkundungstechnik. Beachten Sie, dass es nicht einmal behauptet, voraussagend zu sein. Die Erkundung kann nur Wege aufzeigen, um fortzufahren. Es ist jedoch vorstellbar, dass Sie vier df Ihres Modellbudgets für die Schätzung dieser Transformationen verwenden - und die Schätzung könnte automatisch in den Anpassungsalgorithmus mithilfe von Tukey's Ansatz oder auf andere Weise integriert werden (ML ist eine naheliegende Möglichkeit).
whuber

5
Sie berücksichtigen nicht die (sehr signifikante) Unsicherheit in der Transformation, es sei denn, die Zentrierung von und die Schätzung von sind explizite Teile der Informationsmatrix. Y λYYλ
Frank Harrell

11

Werfen Sie einen Blick auf diesen Folien auf „Regression Diagnose“ von John Fox (von hier , komplett mit Referenzen), die kurz auf die Frage der Umwandlung Nicht - Linearität diskutieren. Es behandelt Tukeys "Ausbauchungsregel" für die Auswahl von Leistungstransformationen (angesprochen durch die akzeptierte Antwort), erwähnt aber auch die Box-Cox- und Yeo-Johnson-Transformationsfamilien. Siehe Abschnitt 3.6 der Folien. Für eine formalere Darstellung desselben Autors siehe J. Fox, Applied Regression Analysis und Generalized Linear Models, Second Edition (Sage, 2008) .

Bezüglich der R-Pakete, die dabei helfen, schauen Sie sich unbedingt das von J. Fox und S. Weisberg verfasste Fahrzeugpaket an . Dieses Paket begleitet J. Fox und S. Weisberg, ein Begleiter der angewandten Regression, Second Edition, (Sage, 2011) , ein weiteres Muss. Mit diesem Paket können Sie mit basicPower()(einfachen Leistungstransformationen), bcPower()(Box-Cox-Transformationen) und yjPower()(Yeo-Johnson-Transformationen) beginnen. Es gibt auch powerTransform () :

Die Funktion powerTransform wird verwendet, um normalisierende Transformationen einer univariaten oder einer multivariaten Zufallsvariablen abzuschätzen.

In beiden Büchern finden Sie weitere Informationen zur Theorie hinter diesen Transformationen und zu rechnerischen Ansätzen.


9

Es hat viele Vorteile, die Schätzung kovariater Transformationen zu einem formalen Bestandteil des Schätzprozesses zu machen. Dies erkennt die Anzahl der beteiligten Parameter und führt zu einer guten Abdeckung des Konfidenzintervalls und einer Fehlererhaltung vom Typ I. Regressionssplines sind einige der besten Ansätze. Und Splines funktionieren im Gegensatz zu logarithmischen Ansätzen mit Null und negativen Werten vonX

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.