Moderatoranalyse mit intervallskalierten Variablen

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

ini
Beiträge: 9
Registriert: Mi Mär 20, 2019 8:43 am

Moderatoranalyse mit intervallskalierten Variablen

Beitrag von ini »

Hallo Zusammen,

ich möchte gerne eine Moderation mit intervallskalierten Variablen testen.
Bisher habe ich bereits herausgefunden, dass ich die AV, UV und den Moderator im ersten Schritt z-transformieren muss. Dies habe ich über den Befehl: scale(Datensatz$Variable, center=TRUE, scale = TRUE) bei allen Variablen vorgenommen.

Nun finde ich leider nicht mehr Informationen zu dem Vorgehen, und vor allem keine R-Befehle. Laut einem Buch soll ich nun die UV mit dem Moderator multiplizieren, um den "dritten Prädiktor" zu ermitteln. Ich weiß allerdings nicht, wie das in R funktioniert. Für SPSS ist hier der COMPUTE-Befehl angegeben.

Die Regressionsanalyse soll daraufhin wie folgt verlaufen:

zy = b1*zx + b2*zm + b3*zm*zx + b0

Leider verstehe ich nicht was genau wofür b steht und was b0 sein soll.
Auch hierführ finde ich keine R-Befehle und weiß leider nicht wie das durchzuführen ist.

Vielleicht kann mir ja jemand weiter helfen!
Vielen vielen Dank
INI
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Moderatoranalyse mit intervallskalierten Variablen

Beitrag von jogo »

Hallo INI,

willkommen im Forum!
ini hat geschrieben: Mi Mär 20, 2019 9:41 am Bisher habe ich bereits herausgefunden, dass ich die AV, UV und den Moderator im ersten Schritt z-transformieren muss. Dies habe ich über den Befehl: scale(Datensatz$Variable, center=TRUE, scale = TRUE) bei allen Variablen vorgenommen.

Nun finde ich leider nicht mehr Informationen zu dem Vorgehen, und vor allem keine R-Befehle. Laut einem Buch soll ich nun die UV mit dem Moderator multiplizieren, um den "dritten Prädiktor" zu ermitteln. Ich weiß allerdings nicht, wie das in R funktioniert. Für SPSS ist hier der COMPUTE-Befehl angegeben.

Die Regressionsanalyse soll daraufhin wie folgt verlaufen:

zy = b1*zx + b2*zm + b3*zm*zx + b0

Leider verstehe ich nicht was genau wofür b steht und was b0 sein soll.
Auch hierführ finde ich keine R-Befehle und weiß leider nicht wie das durchzuführen ist.
In Ökonometrielehrbüchern stehen b0, b1, b2, ... für die zu schätzenden Koeffizienten. Deren Werte werden also mit Hilfe eines Schätzverfahrens ermittelt. Bei werden diese Symbole in der Modellformel nicht angegeben:

Code: Alles auswählen

zy ~ zx + zm + zm*zx
Siehe

Code: Alles auswählen

help("formula")
Du kannst die Schreibung noch verkürzen (ist im Hilfetext von formula erklärt):

Code: Alles auswählen

lm(mpg ~ cyl + gear + cyl*gear, data=mtcars)
lm(mpg ~ cyl*gear, data=mtcars)
Gruß, Jörg
ini
Beiträge: 9
Registriert: Mi Mär 20, 2019 8:43 am

Re: Moderatoranalyse mit intervallskalierten Variablen

Beitrag von ini »

Hallo Jörg,

vielen Dank.
Die Regression würde ich also nach folgendem R-Befehl durchführen: lm(mpg ~ cyl*gear, data=mtcars). Das habe ich richtig verstanden, oder?
Zu der z-Transformation habe ich mitterweile unterschiedliche Befehle gefunden und bin daher verunsichert:

1. scale(Datensatz$Variable, center=TRUE, scale = TRUE)
2. Datensatz$Variable_cen<-scale(Datensatz$Variable, scale = FALSE)

Bei der zweiten Version wird offensichtlich eine neue zentrierte Variable erstellt, was generell bestimmt sinnvoll ist. Mich irritiert jedoch, das der eine Befehl center = True und scale = TRUE angibt, während Befehl 2 scale = FALSE nutzt. Über eine Erklärung und Empfehlung wäre ich sehr sehr dankbar !!!

LG
Ini
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Moderatoranalyse mit intervallskalierten Variablen

Beitrag von jogo »

Hallo Ini,
ini hat geschrieben: Mi Mär 20, 2019 11:33 am Die Regression würde ich also nach folgendem R-Befehl durchführen: lm(mpg ~ cyl*gear, data=mtcars). Das habe ich richtig verstanden, oder?
nicht nur "würde", sondern Du kannst es direkt ausprobieren, weil der Datensatz mtcars standardmäßig mit R migeliefert wird.
Zu der z-Transformation habe ich mitterweile unterschiedliche Befehle gefunden und bin daher verunsichert:
1. scale(Datensatz$Variable, center=TRUE, scale = TRUE)
2. Datensatz$Variable_cen<-scale(Datensatz$Variable, scale = FALSE)

Bei der zweiten Version wird offensichtlich eine neue zentrierte Variable erstellt, was generell bestimmt sinnvoll ist. Mich irritiert jedoch, das der eine Befehl center = True und scale = TRUE angibt, während Befehl 2 scale = FALSE nutzt. Über eine Erklärung und Empfehlung wäre ich sehr sehr dankbar !!!
Bitte rufe den Hilfetext von scale() auf! Dort steht im Abschnitt Usage

Code: Alles auswählen

scale(x, center = TRUE, scale = TRUE)
Das bedeutet, dass die Parameter center= und scale= Standardwerte haben. Solche Parameter müssen nicht gesetzt werden, aber man darf sie setzen. Bei 1. hätte also

Code: Alles auswählen

scale(Datensatz$Variable)
ausgereicht, allerdings erfolgt so noch keine Zuweisung des Ergebnisses. Bezüglich der Parameter von Funktionen herrscht in R ausnahmslos call-by-value.
Die Variante 2. ist identisch mit

Code: Alles auswählen

Datensatz$Variable_cen<-scale(Datensatz$Variable, scale = FALSE, center=TRUE)
(Reihefolge von benannten Parametern ist beliebig)
Zu einem Fehler führt:

Code: Alles auswählen

scale(Datensatz$Variable, center = True, scale=TRUE)
denn True ist nicht TRUE

Gruß, Jörg
ini
Beiträge: 9
Registriert: Mi Mär 20, 2019 8:43 am

Re: Moderatoranalyse mit intervallskalierten Variablen

Beitrag von ini »

Hey Jörg,

ich verstehe leider noch nicht welche der beiden Funktionen ich nun nutzen muss.
Ich habe mir den Hilfetext von scale() angeguckt, und würde daher den 1. Befehl nutzen, da dieser dort ja auch angezeigt wird.

Was mir aber noch unklar ist, ist wo der Unterschied zwischen einer Standardisierung/Zentrierung und einer z-Transformation liegt?!
Der Befehl scheint nämlich für eine Zentrierung sinnvoll zu sein. Aber führt er auch die z-Transformation durch, die ich laut meinem Buch benötige?

Ich habe vorher noch nie mit R gearbeitet, deswegen ist das für mich leider alles sehr abstrakt.

Dank & Gruß
Ini
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Moderatoranalyse mit intervallskalierten Variablen

Beitrag von jogo »

Hallo Ini
ini hat geschrieben: Mi Mär 20, 2019 1:19 pm ich verstehe leider noch nicht welche der beiden Funktionen ich nun nutzen muss.
ich sehe nur eine Funktion: scale()
Welche zweite Funktion meinst Du noch?
Was mir aber noch unklar ist, ist wo der Unterschied zwischen einer Zentrierung und einer z-Transformation liegt?!
Laut Hilfetext von scale() (Abschnitt Details) ist das die z-Transformation (Genaugenommen ist es die t-Transformation, da durch die empirische Standardabweichung dividiert wird. Falls Du a-priori das sigma der Grudgesamtheit kennst, kannst Du es beim Aufruf von scale() verwenden, um eine z-Transformation durchzuführen.)

Code: Alles auswählen

summary(scale(mtcars$mpg))
Der Befehl scheint nämlich für eine Zentrierung sinnvoll zu sein. Aber führt er auch die z-Transformation durch, die ich laut meinem Buch benötige?
Ist Dir das sigma bekannt oder musst Du es schätzen (der passende Schätzer ist die empirische Standardabweichung)?
Ich habe vorher noch nie mit R gearbeitet, deswegen ist das für mich leider alles sehr abstrakt.
Ist schon in Ordnung.

Gruß, Jörg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Moderatoranalyse mit intervallskalierten Variablen

Beitrag von bigben »

Was mir aber noch unklar ist, ist wo der Unterschied zwischen einer Standardisierung/Zentrierung und einer z-Transformation liegt?!
https://de.wikipedia.org/wiki/Zentrierung_(Statistik)
https://de.wikipedia.org/wiki/Standardi ... Statistik)
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
ini
Beiträge: 9
Registriert: Mi Mär 20, 2019 8:43 am

Re: Moderatoranalyse mit intervallskalierten Variablen

Beitrag von ini »

Hey Jörg,
ich sehe nur eine Funktion: scale()
Welche zweite Funktion meinst Du noch?
Funktion ist wohl der falsche Ausdruck. Aber ich habe online mittlerweile drei verschiedene Möglichkeiten gefunden den scale-Befehl anzuwenden. Leider weiß ich aber nicht, wie ich rausfinden kann, welche Version ich in meinem Fall brauche:
1. scale(Datensatz$Variable, center=TRUE, scale = TRUE)
2. Datensatz$Variable_cen<-scale(Datensatz$Variable, scale = FALSE)
3. Datensatz&Variable<-scale(Datensatz$Variable)
Ist Dir das sigma bekannt oder musst Du es schätzen (der passende Schätzer ist die empirische Standardabweichung?
Ich kenne die Standardabweichung der Grundgesamtheit nicht, kann aber die Standardabweichung der Strichprobe für die unterschiedlichen Variablen errechnen.

LG
Ini
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Moderatoranalyse mit intervallskalierten Variablen

Beitrag von jogo »

Hallo Ini,
ini hat geschrieben: Mi Mär 20, 2019 2:17 pm ... Aber ich habe online mittlerweile drei verschiedene Möglichkeiten gefunden den scale-Befehl anzuwenden. Leider weiß ich aber nicht, wie ich rausfinden kann, welche Version ich in meinem Fall brauche:
1. scale(Datensatz$Variable, center=TRUE, scale = TRUE)
2. Datensatz$Variable_cen<-scale(Datensatz$Variable, scale = FALSE)
3. Datensatz&Variable<-scale(Datensatz$Variable)
um zu z- bzw. t-transformierten Werte zu kommen, muss scale=TRUE
Das ist dann wie in dem 1. oder 3. Aufruf - in beiden gilt auch center=TRUE (in 1. explizit, in 3. wegen des Standardwertes von center=).
Der letzte Unterschied (nämlich Datensatz&Variable<- ...) hat nichts mit der Funktion scale() zu tun, sondern damit, was Du mit dem Ergebnis machen möchtest:
a) einfach nur auf dem Bildschirm ausgeben lassen - das ist so bei 1.
b) später weiter verarbeiten und deshalb irgendwo speichen - dann eine Zuweisung wie in 3.
(Achtung: bei 3. wird die ursprüngliche Variable überschrieben, bei 2. wird eine neue angelegt.
- auch hier musst Du Dich entscheiden, wie Du es möchtest.)
Ist Dir das sigma bekannt oder musst Du es schätzen (der passende Schätzer ist die empirische Standardabweichung?
Ich kenne die Standardabweichung der Grundgesamtheit nicht, kann aber die Standardabweichung der Stichprobe für die unterschiedlichen Variablen errechnen.
also ist es eigentlich eine t-Transformation
- ich habe aber auch schon oft gelesen, dass nicht unterschieden wird zur z-Transformation.

Du willst diese Transformation für verschiedene Variablen Deines Datensatzes durchführen?
Kannst Du uns bitte die Struktur des Datensatzes zeigen, das ist der Output von:

Code: Alles auswählen

str(Datensatz)
und die entsprechenden Variablen nennen?
Es gibt da etwas in R, mit dem Du die Transformation für mehrere Variablen in einem Rutsch durchführen kannst ...

Gruß, Jörg
ini
Beiträge: 9
Registriert: Mi Mär 20, 2019 8:43 am

Re: Moderatoranalyse mit intervallskalierten Variablen

Beitrag von ini »

Hey Jörg,
Achtung: bei 3. wird die ursprüngliche Variable überschrieben, bei 2. wird eine neue angelegt.
- auch hier musst Du Dich entscheiden, wie Du es möchtest.
Gibt es auch die Möglichkeit eine Kombination zu erstellen? Also beipsielsweise Datensatz$Variable_cen<-scale(Datensatz$Variable) oder auch in Anlehnung an die 1. Möglichkeit: Datensatz$Variable_cen<-scale(Datensatz$Variable, center = TRUE, scale = TRUE) ?
Kannst Du uns bitte die Struktur des Datensatzes zeigen
Soll ich das Ergebnis des Outputs dann einfach hier reinkopieren?
und die entsprechenden Variablen nennen?
Mein Datensatz besteht aus 284 Fällen. Die Variablen die z-Transformiert werden sollen lauten:
Kontrolle, Habitus, ENJOY, N2B, NfP, Druck und FoMO

LG
Ini
Antworten