Seite 1 von 1

Fehler bei moderierter Reg

Verfasst: Fr Okt 04, 2019 11:33 am
von farngarten
Hallo ich habe ein Problem.
MIniDatensatz im Anhang.

Geladenen Pakete

Code: Alles auswählen

library(psych)
library(car)
library(glmnet)
library(rockchalk)
v_1 ist Geschlecht (dreistufig)und faktorisiert.
Subdatensatz gebildet k_mw , der nur zwei Ausprägungen enthält.

Code: Alles auswählen

k_mw <- subset(k, v_1 == "weiblich" | v_1 == "männlich") #anderes GEschlecht ausschlißen#
Variable MOT_ztr wird vorhergesagt durch A_ztr .
Die Regression ergibt ein signifikantes b von -.14 für A_ztr.

Code: Alles auswählen

regress <- 'k_mw$MOT_ztr ~ k_mw$A_ztr'
fitregress <- lm(regress, data = k_mw)
summary(fitregress)
Wenn ich einen kategorialen Prädiktor hinzunehme (v_1) dürfte sich doch eigentlich das Regressionsgewicht für A_ztr nicht verändern, sondern erst, wenn ich eine Interaktion zwischen zwei Prädiktoren rechne. Ich habe jetzt aber ein b = - .16 für A_ztr.

Code: Alles auswählen

multi <- 'k_mw$MOT_ztr ~ k_mw$A_ztr + k_mw$v_1'
fit <- lm(multi, data = k_mw)
summary(fit)
Oder irre ich in der Annahme?

Wenn ich eine Moderation rechnen will ,macht er eine Fehlermeldung.

Code: Alles auswählen

mod_A8_mod1 <- 'k_mw$MOT_ztr ~ k_mw$A_ztr * k_mw$v_1'
fit_A8_mod1 <- lm(mod_A8_mod1, data = k_mw)
summary(fit_A8_mod1)

graphik <- plotSlopes(fit_A8_mod1, plotx = "A_ztr", modx = "v_1")

testSlopes(graphik)

Hab ihr ne Ahnung woran es liegt? Vielen Dank für Ihre Hilfe. Grüße Martin

Re: Fehler bei moderierter Reg

Verfasst: Fr Okt 04, 2019 2:45 pm
von bigben
Hallo farngarten,

zunächst einmal ist es schön, dass Du jetzt code-Tags verwendest und damit einen Font, an den sich unsere Augen gewöhnt haben.

Darüber, was ein minimales, reproduzierbares, lauffähiges Beispiel ist müssen wir bei Gelegenheit nochmal reden. Zum Beispiel:
Geladenen Pakete

Code: Alles auswählen

library(psych)
library(car)
library(glmnet)
library(rockchalk)
Nö, nix davon muss ich mir auf meinen Rechner ziehen, wenn ich Dein Beispiel nachrechnen wollte.
Wenn ich einen kategorialen Prädiktor hinzunehme (v_1) dürfte sich doch eigentlich das Regressionsgewicht für A_ztr nicht verändern
Das verstehe ich nicht. Warum sollte die Hinzunahme eines weitern Prädiktors in ein Modell die anderen Regressionsgewichte nicht verändern?
Wenn ich eine Moderation rechnen will ,macht er eine Fehlermeldung.
Verrätst Du uns, wie die Fehlermeldung lautet, oder sollen wir raten?

Deinen Datensatz kann man einlesen mit

Code: Alles auswählen

demo <- read.csv2("http://forum.r-statistik.de/download/file.php?id=708")
Dann erhält man sowas

Code: Alles auswählen

> str(demo)
'data.frame':	430 obs. of  14 variables:
 $ v_1: int  2 2 2 2 2 1 2 1 2 2 ...
 $ v_6: int  76 49 60 61 54 53 71 42 69 31 ...
 $ m_a: int  4 6 7 7 6 5 6 6 7 3 ...
 $ m_b: int  2 5 7 7 4 5 4 5 7 2 ...
 $ m_c: int  6 4 7 6 5 5 4 5 7 2 ...
 $ m_d: int  4 5 7 7 5 4 3 6 7 2 ...
 $ m_e: int  6 5 7 6 7 5 3 6 7 2 ...
 $ a_a: int  1 1 2 2 2 3 2 1 1 4 ...
 $ a_b: int  1 1 2 3 2 3 2 1 1 4 ...
 $ a_c: int  2 1 2 2 2 3 2 2 1 4 ...
 $ a_d: int  1 2 1 2 3 2 2 1 1 4 ...
 $ a_e: int  1 1 2 1 2 2 1 1 1 2 ...
 $ a_f: int  1 1 2 1 1 2 1 2 1 4 ...
 $ a_g: int  1 1 2 1 2 2 1 1 1 2 ...
Es gibt darin keine Spalten MOT_ztr oder A_ztr und deshalb ist das kein reproduzierbares Beispiel.

LG,
Bernhard

Re: Fehler bei moderierter Reg

Verfasst: Sa Okt 05, 2019 11:23 am
von farngarten
Hallo Bernhard,
ich hatte die Skalenbildung vergessen.

Code: Alles auswählen

k$A <- rowMeans(k[,c("a_a", "a_b", "a_c", "a_d", "a_e", "a_f", "a_g")]) 
k$A_ztr <- as.numeric(scale(k$A, center = TRUE, scale = TRUE))

k$MOT <- rowMeans(k[,c("m_a", "m_b", "m_c", "m_d", "m_e")]) 
k$MOT_ztr <- as.numeric(scale(k$MOT, center = TRUE, scale = TRUE))
Meine Frage zu Veränderung der Regress Gewichte bei Hinzunahme von weiteren Prädiktoren , hat sich erledigt. Ich dachte die verändern sich nur, wenn ich eine INteraktion zwischen den Prädiktoren rechne. Denkfehler.

Bzgl: Fehlermeldung

Code: Alles auswählen

# Abhängige Variable MOT wird vorhergesagt durch Prädiktor A MODERIERT  durch Geschlecht#

mod_A8_mod1 <- 'k_mw$MOT_ztr ~ k_mw$A_ztr * k_mw$v_1'
fit_A8_mod1 <- lm(mod_A8_mod1, data = k_mw)
summary(fit_A8_mod1)

graphik <- plotSlopes(fit_A8_mod1, plotx = "A_ztr", modx = "v_1")

testSlopes(graphik)
>
> graphik <- plotSlopes(fit_A8_mod1, plotx = "A_ztr", modx = "v_1")
Error in model.frame.default(myfmla, dataOrig, na.action = na.action) :
ungültiger Typ (list) für die Variable 'k_mw'
>
> testSlopes(graphik)
Error in testSlopes(graphik) : object 'graphik' not found
viele Grüße Martin