Neue Variable berechnen und Regression durchführen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
RUser

Neue Variable berechnen und Regression durchführen

Beitrag von RUser »

Moin zusammen,

ich muss für eine binäre logistische Regression die zu erklärende Variable berechnen. Dazu stehen mir Daten aus einer zuvor durchgeführten Umfrage zur Verfügung und sehen wie folgt aus:
1. Variable ist die Fallnummer. Jede Fallnummer (1-110) kommt doppelt vor, da jeder Teilnehmer zweimal befragt wurde. Die zu erklärende Variable soll die Stabilitsrate sein. Diese wird errechnet aus der Häufigkeit, mit der eine Antwort in beiden Befragungswellen identisch gegeben wurde. Gefragt waren 7 Assoziationen zu 6 Automodellen. Es ergeben sich somit 42 Assoziationsvariablen.
Bsp.: Assoziation Langlebigkeit beim VW Golf.
1:Welle: Ja
2.Welle: Ja => Stabilität erfüllt.

1.Welle: Ja
2.Welle: Nein (oder umgekehrt) => Stabilität nicht erfüllt

Wird von einem Teilnehmer in beiden Wellen Nein angegeben, soll dies nicht in die Stabilitätsrate einfließen.
R soll diese Berechnung für jeden Teilnehmer (= gleiche Fallnummer) durchführen.
Jetzt kommt noch dazu, dass es drei verschiedene Fragebogendesigns gab.
D.h. Für gleiche Fallnummern soll R rechnen: Stabilitätsrate = Anzahl "Ja und Ja"-Fälle / (alle Teilnehmer des Designs x - Anzahl "Nein/Nein"-Fälle im Design x).

Unterschiede in der Stabilität der Antworten zwischen den Fragebogendesigns sind der eigentliche Grund für die Studie, d.h. es geht insb. nicht darum, welche Assoziation mit welchem Automodell verbunden wird.
Hier soll R für jedes Design (dazu gibt es eine entsprechende Variable mit Ausprägungen 1,2,3) die Stabilitätsrate berechnen.

Dann gibt es noch weitere Faktoren, wie allgemeine Meinung zum Modell, Vertrauen in den Hersteller oder wahrgenommene Schwierigkeit des Fragebogens. Diese müssen teilweise nach Fallnummer und Welle unterschieden werden, teilweise nur nach Fallnummer.
Ziel ist für mich ein Modell der Form

Modell<- glm(Stabilitätsrate ~ Design 1 + Design 2 + Design 3 + Meinung zum Modell + ... + Vertrauen in den Hersteller, data = meineDaten, family = "binomial").

Dieses soll den Einfluss der Designs und der weiteren Variablen auf die Stabilität der Antworten zeigen. Krönender Abschluss wäre ein Balkendiagramm, bei dem das schlechteste Design auf Null liegt (d.h. im Intercept) und die Balken die Regressionskoeffizienten enthalten und somit den positiven Einfluss der anderen Variablen auf die Stabilität wiederspiegeln.

Die Aufgabenstellung ist hier sehr eng, die Auswertung soll so aussehen, also binäre logistische Regression und Einfluss der Variablen auf die Stabilität zeigen. Tja und das kriege ich nicht hin :-(

Freue mich über Tipps und Hilfestellung :-)
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Neue Variable berechnen und Regression durchführen

Beitrag von EDi »

Kannst du uns Beispiel Daten geben? Hört sich nach guter datenorganisation an und danach etwas pri gruppe rechnen (data.table, dplyr, split..).

Aber ohne konkretes Beispiel kann ich leider auch nicht mehr sagen..
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
RUser

Re: Neue Variable berechnen und Regression durchführen

Beitrag von RUser »

Hallo EDi,

danke für deine Antwort. Was meinst Du mit Beispieldaten?
Ich habe gleich mal den ganzen Datensatz als .csv angehängt :-)

Die Fallnummer gibt den Teilnehmer an, jeder Teilnehmer wurde zweimal befragt. Die Variable Design gibt das Fragebogendesign an, das der Teilnehmer bekam. Die Assoziationsvariablen sind Langlebigkeit, Vertrauenswürdigkeit, gutes Preis-/Leistungsverhältnis, Verlässlichkeit, niedriger Preis, hohe Qualität und Sicherheit. Zu jedem der sechs Modelle wurde gefragt, ob die Assoziation damit verbunden wird. Außerdem wurde nach der Vertrautheit mit dem Modell (Skala 1-4) und der Meinung (Skala -2 bis 2) gefragt. Diese beiden bilden zusammen mit den Variablen Autokauf (Hast Du schonmal ein Auto gekauft - ja/nein), Einschätzung der Schwierigkeit des Fragebogens (Skala 1-7), Einschätzung der Differenzierungsmöglichkeiten durch die vorgegebenen Antworten (Skala 1-7) und Einschätzung der Wichtigkeit der abgefragten Assoziationen (Skala 0-2) die weiteren Variablen, die neben den drei Fragebogendesigns zur Erklärung unterschiedlicher Stabilitätsraten herangezogen werden sollen. Somit neun Variablen zur Erklärung, von denen eine in den Intercept soll. Die Variablen Alter und Geschlecht sollen nicht zur Erklärung benutzt werden.

Mittlerweile habe ich rausgefunden, dass für die Daten ein gemischtes Modell benötigt wird. Statt
Modell <- glm(...),
wie gestern geschrieben,braucht es anscheinend
Modell <- lme(...).
Dazu habe ich ein Buch gefunden, mit dem ich es hoffentlich bauen kann. Aber nach wie vor kriege ich es nicht hin, aus den Daten die Stabilitätsrate zu errechnen, damit R die für das Modell verwenden kann.

Freue mich über Tips und Hilfestellung :-)
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Neue Variable berechnen und Regression durchführen

Beitrag von jogo »

Hallo RUser,

möchtest Du so etwas:

Code: Alles auswählen

D <- read.csv2("http://forum.r-statistik.de/download/file.php?id=50")
D[, c("FallNr", "Welle", "A3AssLang")]
M <- matrix(D$A3AssLang, , 2, byrow = TRUE)
Stabilitaet <- (M[,1]==M[,2])
Stabilitaet
:?:
Und das vielleicht für jede der 42 Assoziationen?

Gruß, Jörg
RUser

Re: Neue Variable berechnen und Regression durchführen

Beitrag von RUser »

Hallo Jörg,

danke für Deine Antwort, die hilft schonmal weiter. Ja, der Prozess in Deinem Code muss für jede der 42 Assoziationsvariablen durchgeführt werden. Ziel ist es, die zwei Ausprägungen jedes Teilnehmers zusammenzufassen zu einem Wert, entweder: 1 = 1 und 1 (Assoziation doppelt bejaht) oder 0 = 1,0 oder 0,1 (Assoziation nur in der ersten oder zweiten Welle bejaht). Die doppelten 0en (d.h. Assoziation in beiden Wellen verneint) müssen dort allerdings raus. Sie sollen die Stabilität nicht beeinflussen.
Das Regressionsmodell kann [und muss] dann mithilfe von

glmer(..., family="binomial")

geschätzt werden, mit der Stabilität als zu erklärender Variable. Die Schwierigkeit besteht für mich gerade darin, einerseits, die Variable Stabilität zu erzeugen, andererseits im korrekten Umgang mit den doppelten 0en. Sie müssen raus, soviel ist sicher. R soll für die Regeression bei jedem Teilnehmer nur dort schauen, wo wenigstens einmal assoziiert wurde. Da sehe ich dann eine Fehlermeldung a lá "Vektoren sind unterschiedlich lang", denn jeder Teilnehmer kann unterschiedlich viele Werte in der Stabilitätsvariable erzeugen.

Bedanke mich für Hinweise und Hilfestellung :)
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Neue Variable berechnen und Regression durchführen

Beitrag von jogo »

Code: Alles auswählen

D <- read.csv2("http://forum.r-statistik.de/download/file.php?id=50")
j <- list(Go=5:11, BMW=14:20, Foc=23:29, Astra=32:38, A3=41:47, Oct=50:56)
Stab <- function(j) { 
  M <- matrix(D[,j], , 2, byrow = TRUE)
  M[,1]==M[,2]
}
# oder:
# Stab <- function(j) { M <- matrix(D[,j], nrow=2); M[1,]==M[2,] }
Stabilitaet <- sapply(unlist(j), Stab)
dimnames(Stabilitaet) <- list(D$FallNr[c(TRUE, FALSE)], names(D)[unlist(j)]) 
RUser

Re: Neue Variable berechnen und Regression durchführen

Beitrag von RUser »

Hallo Jörg,
danke erstmal. Das ist ein Schritt in die richtige Richtung, allerdings müssen die Fälle, in denen eine Assoziation in beiden Wellen nicht assoziiert wurde (0, 0) für die Regression eliminiert werden. Ich kriege das Gefühl, dass meine Datenaufbereitung komplett daneben ist. Wenn die doppelten 0er entfernt sind, sind die Antwortvektoren der Teilnehmer unterschiedlich lang (denke ich), denn Teilnehmer haben unterschiedlich oft eine Assoziation zweimal nicht angekreuzt, und deshalb wird R meckern, da die Vektoren der unabhängigen Variablen dann länger sind (fürchte ich).
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Neue Variable berechnen und Regression durchführen

Beitrag von jogo »

RUser hat geschrieben:... allerdings müssen die Fälle, in denen eine Assoziation in beiden Wellen nicht assoziiert wurde (0, 0) für die Regression eliminiert werden. Ich kriege das Gefühl, dass meine Datenaufbereitung komplett daneben ist. Wenn die doppelten 0er entfernt sind, sind die Antwortvektoren der Teilnehmer unterschiedlich lang (denke ich), denn Teilnehmer haben unterschiedlich oft eine Assoziation zweimal nicht angekreuzt, und deshalb wird R meckern, da die Vektoren der unabhängigen Variablen dann länger sind (fürchte ich).
Für eine Regression müssen die Vektoren der unabhängigen Variablen alle gleich lang sein (genau so lang wie der Vektor der abhängigen Variable). Entfernen kannst Du bei einer Regression nur ganze Beobachtungen (also eine ganze Zeile aus der Matrix).

Gruß, Jörg
Antworten