Ich bin relativ neu in R und versuche, ein Modell an Daten anzupassen, die aus einer kategorialen Spalte und einer numerischen (ganzzahligen) Spalte bestehen. Die abhängige Variable ist eine fortlaufende Zahl.
Die Daten haben das folgende Format:
predCateg, predIntNum, ResponseVar
Die Daten sehen ungefähr so aus:
ranking, age_in_years, wealth_indicator
category_A, 99, 1234.56
category_A, 21, 12.34
category_A, 42, 234.56
....
category_N, 105, 77.27
Wie würde ich dies (vermutlich mit einem GLM) in R modellieren?
[[Bearbeiten]]
Mir ist gerade eingefallen (nachdem ich die Daten gründlicher analysiert habe), dass die kategoriale unabhängige Variable tatsächlich geordnet ist. Ich habe daher die zuvor gegebene Antwort wie folgt geändert:
> fit2 <- glm(wealth_indicator ~ ordered(ranking) + age_in_years, data=amort2)
>
> fit2
Call: glm(formula = wealth_indicator ~ ordered(ranking) + age_in_years,
data = amort2)
Coefficients:
(Intercept) ordered(ranking).L ordered(ranking).Q ordered(ranking).C age_in_years
0.0578500 -0.0055454 -0.0013000 0.0007603 0.0036818
Degrees of Freedom: 39 Total (i.e. Null); 35 Residual
Null Deviance: 0.004924
Residual Deviance: 0.00012 AIC: -383.2
>
> fit3 <- glm(wealth_indicator ~ ordered(ranking) + age_in_years + ordered(ranking)*age_in_years, data=amort2)
> fit3
Call: glm(formula = wealth_indicator ~ ordered(ranking) + age_in_years +
ordered(ranking) * age_in_years, data = amort2)
Coefficients:
(Intercept) ordered(ranking).L ordered(ranking).Q
0.0578500 -0.0018932 -0.0039667
ordered(ranking).C age_in_years ordered(ranking).L:age_in_years
0.0021019 0.0036818 -0.0006640
ordered(ranking).Q:age_in_years ordered(ranking).C:age_in_years
0.0004848 -0.0002439
Degrees of Freedom: 39 Total (i.e. Null); 32 Residual
Null Deviance: 0.004924
Residual Deviance: 5.931e-05 AIC: -405.4
Ich bin ein bisschen verwirrt darüber ordered(ranking).C
, was ordered(ranking).Q
und was ordered(ranking).L
in der Ausgabe bedeutet, und würde mich über Hilfe beim Verständnis dieser Ausgabe und deren Verwendung zur Vorhersage der Antwortvariablen freuen.
quelle
factor(ranking)
nichtas.factor(ranking)
?factor(x)
es gewöhnlich, damit ich daslevels
Argument aufnehmen kann, wenn ich möchte. Sie können es auch verwenden,as.factor(x)
wenn Sie möchten, und es kann tatsächlich schneller sein, aber ich denke, Sie würden einen ziemlich großen Datensatz benötigen, damit die Geschwindigkeit dieser Funktionen eine Rolle spielt.ordered(ranking).C
,ordered(ranking).Q
undordered(ranking).L
- was sie bedeuten und wie verwende ich , dass die Antwortvariable vorhersagen?) - jede Hilfe wird sehr geschätzt werden. Danke.L
,,.Q
und.C
sind jeweils die Koeffizienten für den geordneten Faktor, der mit linearen, quadratischen und kubischen Kontrasten codiert ist. Der Befehlcontr.poly(4)
zeigt Ihnen die Kontrastmatrix für einen geordneten Faktor mit 4 Ebenen (3 Freiheitsgrade, weshalb Sie bis zu einem Polynom dritter Ordnung erhalten).contr.poly(4)[2, '.L']
Hier erfahren Sie, was Sie für die zweite geordnete Ebene linear anschließen müssen. Beachten Sie, dass dies voraussetzt, dass es sinnvoll ist, die Ebenen als gleichmäßig verteilt zu betrachten. Wenn dies nicht der Fall ist, codieren Sie Ihre eigene Kontrastmatrix.Ich habe kürzlich die kontinuierliche abhängige Variable mit der ordinalen unabhängigen Variablen beantwortet und die
ordSmooth
Funktion imordPens
Paket empfohlen . Dies verwendet eine bestrafte Regression, um Dummy-Koeffizienten über Ebenen einer Ordnungsvariablen hinweg zu glätten, damit sie nicht zu stark von einer Ebene zur nächsten variieren.category_A
Zum Beispiel möchten Sie wahrscheinlich nicht, dass der Koeffizient viel anders istcategory_B
als der voncategory_N
. Sie möchten wahrscheinlich, dass die Koeffizienten monoton steigen oder fallen oder sich zumindest allmählich über die Ränge hinweg ändern. Meine Antwort auf die verknüpfte Frage enthält Referenzen für weitere Informationen.ordSmooth
kann auch kontinuierliche (und nominale) Variablen aufnehmen; In Ihrem Fall könnte der Code sein:ordSmooth
erfordert eine numerische Eingabe für Ordnungsdaten, daher dieas.numeric(ordered())
Neuformatierung.z
ist für einen numerischen Vektor / eine Matrix /data.frame
von kontinuierlichen Prädiktoren.lambda
ist der Glättungskoeffizient - größere Werte bringen Ihre Koeffizienten näher an Null. Könnte klug sein, hier klein anzufangen. Beim Drucken erhaltenSmoothFit
Sie Koeffizienten und angepasste Werte, aber ich fürchte, der Rest bleibt Ihnen überlassen.In Ihrer Methode scheinen die
ordered(ranking).C
/.Q
/.L
Koeffizienten als kubisch, quadratisch bzw. linear gekennzeichnet zu sein. Wenn Sie es versuchenglm(rnorm(10)~ordered(rep(1:5,2)))
, erhalten Sie auch einen Koeffizienten fürordered(rep(1:5, 2))^4
. Ich bin mir nicht sicher, warum diese mit Exponenten bezeichnet werden. Ich denke nicht, dass es diese als Polynomterme modelliert, weil die Koeffizienten fürglm(y~x+I(x^2)+I(x^3)+I(x^4))
und skalierte Varianten davon unterschiedlich sind. Sie sollten grundlegende Dummy-Codes sein .quelle