Variablen für multiple Regression in R transformieren

26

Ich versuche, eine multiple Regression in durchzuführen R. Meine abhängige Variable hat jedoch das folgende Diagramm:

DV

Hier ist eine Streudiagramm-Matrix mit allen meinen Variablen ( WARist die abhängige Variable):

SPLOM

Ich weiß, dass ich eine Transformation für diese Variable (und möglicherweise für die unabhängigen Variablen?) Durchführen muss, bin mir jedoch nicht sicher, welche Transformation genau erforderlich ist. Kann mich jemand in die richtige Richtung weisen? Gerne gebe ich zusätzliche Informationen zum Zusammenhang zwischen unabhängigen und abhängigen Variablen.

Die Diagnosegrafiken aus meiner Regression sehen folgendermaßen aus:

Diagnoseplots

BEARBEITEN

Nach der Transformation der abhängigen und unabhängigen Variablen mithilfe von Yeo-Johnson-Transformationen sehen die Diagnosediagramme folgendermaßen aus:

Nach der Umwandlung

Wenn ich ein GLM mit einer Protokollverknüpfung verwende, sind die Diagnosegrafiken:

GLM mit Log-Link

zgall1
quelle
3
Hi @ zglaa1 und willkommen. Warum denkst du, dass du die Variablen transformieren musst? Der erste Schritt wäre, die Regression an die ursprünglichen Varibalen anzupassen und dann die Anpassung (Residuen usw.) zu überprüfen. Die Residuen sollten ungefähr normalverteilt sein, nicht die Variablen. Vielleicht findest du diesen Beitrag interessant.
COOLSerdash
Vielen Dank für den Link und den Vorschlag. Ich habe meine Regression ausgeführt und weiß, dass die Variablen basierend auf der folgenden Darstellung transformiert werden müssen: i.imgur.com/rbmu14M.jpg Ich kann Unparteilichkeit und das Fehlen einer konstanten Variabilität in den Residuen feststellen. Sie sind auch nicht normal.
zgall1
@COOLSerdash Ich habe mir den Link angesehen. Ich habe einen grundlegenden Hintergrund in der Statistik, damit ich die Diskussion verstehe. Mein Problem ist jedoch, dass ich nur begrenzte Erfahrung mit der tatsächlichen Anwendung der von mir erlernten Techniken habe. Daher habe ich Mühe, herauszufinden, was genau ich mit meinen Daten tun muss (entweder in Excel oder R), um die erforderlichen Transformationen tatsächlich durchzuführen.
zgall1
Danke für die Grafik. Sie haben vollkommen recht, wenn Sie sagen, dass diese Passform nicht optimal ist. Könnten Sie bitte eine Streudiagramm-Matrix mit den DV- und IV-Werten in der Regression erstellen? Dies kann Rmit dem Befehl ausgeführt werden, pairs(my.data, lower.panel = panel.smooth)bei dem my.dataes sich um Ihren Datensatz handelt.
COOLSerdash
2
Ein allgemeiner Ansatz zur Transformation sind Box-Cox-Transformationen . Sie können Folgendes tun: 1. Passen Sie Ihr Regressionsmodell mit lmden nicht transformierten Variablen an. 2. Verwenden Sie die Funktion boxcox(my.lm.model)aus dem MASSPaket, um zu schätzen . Der Befehl erzeugt auch eine Grafik, die Sie für unsere Bequemlichkeit hochladen können. λ
COOLSerdash

Antworten:

30

John Fox 'Buch Ein R-Begleiter zur angewandten Regression ist eine hervorragende Ressource zur angewandten Regressionsmodellierung R. Das Paket, cardas ich in dieser Antwort durchgehend verwende, ist das Begleitpaket. Das Buch hat auch eine Website mit zusätzlichen Kapiteln.


Transformieren der Antwort (auch als abhängige Variable oder Ergebnis bezeichnet)

RlmboxCoxcarλfamily="yjPower"

boxCox(my.regression.model, family="yjPower", plotit = TRUE)

Dies erzeugt ein Diagramm wie das folgende:

Box-Cox Lambdaplot

λλ

Verwenden Sie die Funktion yjPoweraus dem carPaket , um Ihre abhängige Variable jetzt zu transformieren :

depvar.transformed <- yjPower(my.dependent.variable, lambda)

lambdaλboxCox

Wichtig: Anstatt nur die abhängige Variable zu log-transformieren, sollten Sie in Betracht ziehen, eine GLM mit einem Log-Link auszustatten. Nachfolgend einige Referenzen, die weitere Informationen enthalten: erste , zweite , dritte . Um dies zu tun in R, Verwendung glm:

glm.mod <- glm(y~x1+x2, family=gaussian(link="log"))

wo yist die abhängige Variable und x1, x2usw. sind Ihre unabhängigen Variablen.


Transformationen von Prädiktoren

Transformationen von streng positiven Prädiktoren können nach maximaler Wahrscheinlichkeit nach der Transformation der abhängigen Variablen geschätzt werden. Verwenden Sie dazu die Funktion boxTidwellaus der carPackung (das Originalpapier finden Sie hier ). Verwenden Sie es wie folgt aus: boxTidwell(y~x1+x2, other.x=~x3+x4). Wichtig ist hierbei, dass diese Option other.xdie Terme der Regression angibt, die nicht transformiert werden sollen. Dies wären alle Ihre kategorialen Variablen. Die Funktion erzeugt eine Ausgabe der folgenden Form:

boxTidwell(prestige ~ income + education, other.x=~ type + poly(women, 2), data=Prestige)

          Score Statistic   p-value MLE of lambda
income          -4.482406 0.0000074    -0.3476283
education        0.216991 0.8282154     1.2538274

incomeλincomeEinkommennew=1/EinkommenOld

Ein weiterer sehr interessanter Beitrag auf der Website über die Transformation der unabhängigen Variablen ist dieser .


Nachteile von Transformationen

1/yλλ


Modellierung nichtlinearer Beziehungen

Zwei recht flexible Methoden zur Anpassung nichtlinearer Beziehungen sind Bruchpolynome und Splines . Diese drei Artikel bieten eine sehr gute Einführung in beide Methoden: Erstens , zweitens und drittens . Es gibt auch ein ganzes Buch über Bruchpolynome und R. Das R Paketmfp implementiert multivariable fraktionale Polynome. Diese Darstellung kann in Bezug auf fraktionelle Polynome informativ sein. Um Splines anzupassen, können Sie die Funktion gam(verallgemeinerte additive Modelle, siehe hier für eine hervorragende Einführung mit R) aus dem Paketmgcv oder den Funktionen verwendenns(natürliche kubische Splines) und bs(kubische B-Splines) aus dem Paket splines(siehe hier für ein Beispiel für die Verwendung dieser Funktionen). Mit gamder s()Funktion können Sie festlegen, welche Prädiktoren mithilfe von Splines angepasst werden sollen :

my.gam <- gam(y~s(x1) + x2, family=gaussian())

hier x1würde unter Verwendung eines Splines und x2linear wie bei einer normalen linearen Regression angepasst . Innerhalb können gamSie die Distributionsfamilie und die Verknüpfungsfunktion wie in angeben glm. Um ein Modell mit einer Protokollverknüpfungsfunktion auszustatten, können Sie die Option family=gaussian(link="log")in gamals in angeben glm.

Schauen Sie sich diesen Beitrag von der Seite an.

COOLSerdash
quelle
1
Gute Erklärung. Ich weiß nicht, dass explizites Box-Cox die häufigste Methode zur Auswahl einer Transformation ist. Wenn Sie Leute zählen, die sich nur für Protokolle entscheiden, kann ich nur vermuten, dass dies eine Minderheitsmethode ist. Dieser wählerische Punkt beeinflusst natürlich nichts anderes.
Nick Cox
@ NickCox Danke (+1 für deine Antwort, übrigens). Die Aussage, dass Box-Cox die häufigste Methode ist, stammt aus John Fox 'Buch. Ich habe es zum Nennwert genommen, da ich nicht genug Erfahrung habe, um die Aussage zu beurteilen. Ich werde die Aussage entfernen.
COOLSerdash
Vielen Dank für die ausführliche Erklärung. Ich werde versuchen, es jetzt auf meine Daten anzuwenden.
zgall1
@COOLSerdash Mit Ihrer detaillierten exemplarischen Vorgehensweise habe ich die Box Cox-Transformation auf meine abhängigen und dann unabhängigen Variablen angewendet und die folgende grafische Darstellung meiner Diagnosevariablen erstellt: i.imgur.com/eO01djl.jpg Es gibt eindeutig eine Verbesserung, aber es scheint immer noch eine zu geben Es gibt Probleme mit ständiger Variabilität und Unparteilichkeit, und es gibt definitiv ein Problem mit der Normalität. Wohin kann ich von hier aus gehen?
zgall1
1
@ zgall1 Danke für dein Feedback, ich weiß es zu schätzen. Hm, ja, die Transformationen schienen nicht viel geholfen zu haben :). An dieser Stelle würde ich wahrscheinlich versuchen, Splines für die Prädiktoren zu verwenden, indem ich generalisierte additive Modelle (GAMs) mit dem mgcvPaket und verwende gam. Wenn das nicht hilft, bin ich am Ende meines Witzes, fürchte ich. Es gibt Leute hier, die viel erfahrener sind als ich und die Ihnen vielleicht weitere Ratschläge geben können. Ich kenne mich auch nicht mit Baseball aus. Vielleicht gibt es ein logischeres Modell, das mit diesen Daten Sinn macht.
COOLSerdash
8

Sie sollten uns mehr über die Art Ihrer Antwortvariablen (Ergebnis, abhängige Variable) erzählen. Ab Ihrem ersten Diagramm ist es stark positiv verzerrt, mit vielen Werten nahe Null und einigen negativen. Daher ist es möglich, aber nicht unvermeidlich, dass Ihnen diese Transformation hilft, aber die wichtigste Frage ist, ob die Transformation Ihre Daten einer linearen Beziehung näher bringen würde.

Beachten Sie, dass negative Werte für die Antwort eine gerade logarithmische Transformation ausschließen, nicht jedoch log (Antwort + Konstante) und kein verallgemeinertes lineares Modell mit logarithmischer Verknüpfung.

Auf dieser Website gibt es viele Antworten zum Thema Protokoll (Antwort + Konstante), das statistische Personen aufteilt: Einige mögen es nicht als ad hoc und schwierig, damit zu arbeiten, während andere es als legitimes Gerät betrachten.

Ein GLM mit Loglink ist weiterhin möglich.

Alternativ kann es sein, dass Ihr Modell einen gemischten Prozess widerspiegelt. In diesem Fall ist ein angepasstes Modell, das den Datenerzeugungsprozess genauer widerspiegelt, eine gute Idee.

(SPÄTER)

Das OP hat eine abhängige Variable WAR mit Werten im Bereich von ungefähr 100 bis -2. Um Probleme mit der Verwendung von Logarithmen mit Null oder negativen Werten zu lösen, schlägt OP eine Fudge von Nullen und Negativen auf 0,000001 vor. Auf einer logarithmischen Skala (Basis 10) reichen diese Werte von etwa 2 (100 oder so) bis -6 (0,000001). Die Minderheit der verfälschten Punkte auf einer logarithmischen Skala ist jetzt eine Minderheit der massiven Ausreißer. Plotten Sie log_10 (fudged WAR) gegen irgendetwas anderes, um dies zu sehen.

Nick Cox
quelle
Wie Sie möglicherweise anhand des oben angegebenen Streudiagramms erkennen können, verwende ich einen Baseball-Statistikdatensatz. Die unabhängige Variable WAR ist im Wesentlichen ein kumulatives Maß für den Wert, den ein Spieler im Laufe seiner Karriere in der Hauptliga beigetragen hat. Die unabhängigen Variablen AdjSLG, SOPct und BBPct sind Statistiken für kleinere Ligen, von denen allgemein angenommen wird, dass sie den Erfolg auf der Ebene der großen Ligen vorhersagen. Die Altersvariable ist das Alter, in dem der Spieler die Statistik für die Nebenliga erstellt hat. Die Dummy-Variablen geben an, auf welcher Nebenliga-Ebene die Statistiken erstellt wurden.
zgall1
In Bezug auf das Problem der negativen unabhängigen Variablen (WAR) ist es aus Gründen, die etwas komplex sind, sinnvoll, diese als Nullen neu zu codieren, wenn dies den Transformationsprozess erleichtert. Dies ist im Rahmen dieses Datensatzes ein vertretbares Verfahren. Wenn Sie möchten, dass ich näher darauf eingehen kann (Warnung - Baseball-Jargon erforderlich), mache ich das gerne.
zgall1
1
Es scheint, dass WAR Ihre abhängige Variable ist. Sie liefern Beweise für meine Behauptung, die an anderer Stelle auf dieser Website bestritten wurde, dass die beiden Begriffe häufig verwechselt werden. Mein Rat ist, negative Werte nicht in Nullen umzuwandeln (die Daten werden falsch behandelt), sondern einen GLM mit Protokollverknüpfung zu verwenden. Bitte nehmen Sie an, dass kein Interesse an oder Wissen über Baseball-Minutien auf meiner Seite besteht.
Nick Cox
Sie haben Recht, dass WAR meine abhängige Variable ist. Ich werde in ein GLM mit Log-Link schauen. Danke für den Hinweis.
zgall1
1
Könnte hilfreich sein zu wissen, wie Karriere-WAR dann berechnet wird (auch bekannt als Datenerzeugungsprozess).
Affine