Fehlende Werte NA's aussortieren für logistische Regression

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

Antworten
Patmae
Beiträge: 9
Registriert: Fr Feb 03, 2023 10:03 am

Fehlende Werte NA's aussortieren für logistische Regression

Beitrag von Patmae »

Dass ich meine binäre logistische Regression durchführen kann, muss ich die NA's aus meinen wichtigen Variablen aussortieren.
Dazu habe ich folgende Formel auf folgende Variablen angewandt:

Code: Alles auswählen

MF_subset <- MF[ , c("polMaßn", "verheiratet", "BZ_Fam", "Zufriedenh_BZ", "erwerbstätig", "Zufriedenh_EW", "Staatsb", "Gland", "Internet", "LZ", "Kinder_AK", "eig_Kinder", "SES_3", "belastet", "Angst", "guteSeiten", "finanzielleEinb", "persKontakt", "Berufsstatus", "Alter", "sd47i1")]
data_by_column <- MF[complete.cases(MF_subset), ] # Omit NAs by columns 
data_by_column #dataframe für binary log Regression
Allerdings musste ich feststellen, dass sich meine Variablengröße extrem verringert hat.
z.B. hatte ich in meinem ursprünglichen Datensatz (1== Männer, 2==Frauen):

Code: Alles auswählen

> table(MF$sex)
    1     2 
16713 20254 
Nach dem aussortieren der fehlenden Werte nur noch:

Code: Alles auswählen

  table(data_by_column$sex)
   1    2 
5069 6445  
Außerdem hat es mir in der Variable BZ_Fam komplett die Gruppe 1 entfernt:
vorher:

Code: Alles auswählen

table(MF$BZ_Fam)
    1     2 
 8513 27540 
und nachher, ich kann also meine Regression nicht durchführen, da komplett eine Gruppe fehlt:

Code: Alles auswählen

table(data_by_column$BZ_Fam)
    2 
11514 
Und in meiner Variable sd47i1, habe ich nur noch so eine geringe Anzahl von Fällen, dass ich meine Regression nicht mehr durchführen kann.
vorher:

Code: Alles auswählen

table(MF$sd47i1)
    0     1 
18575 18392 
nachher:

Code: Alles auswählen

table(data_by_column$sd47i1)
    0     1 
11459    55
Gibt es eine andere Formel mit der ich meine NA's entfernen kann, ohne so einen großen Datenverlust und ohne dass mir komplett eine Gruppe gelöscht wird?
Ich brauche also eine Formel, in der ich alle NA's in meinen wichtigen Variablen entfernen kann. Ich bitte um Hilfe.
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Fehlende Werte NA's aussortieren für logistische Regression

Beitrag von schubbiaschwilli »

Gude!

Ich weiß jetzt nicht, ob du die Funktion is.na oder so benutzt hast, aber ich empfehle, mal die Rohdaten (also mit 'NAs') zu plotten oder zu zählen, bspw. die "MF$sd47i1"-Daten.

Für die iris-Daten könntest du folgendes benutzen:

Code: Alles auswählen

aggregate(iris$Species, list(iris$Species), FUN=length)
Dank&Gruß
Schubbiaschwilli
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fehlende Werte NA's aussortieren für logistische Regression

Beitrag von bigben »

Hallo,

Nur um zu wissen, wieviele NA in welcher Spalte vorkommen reicht summary()
Ich habe mir aber gerade vorgenommen, mich für die NA-Analyse an das Paket VIM zu gewöhnen. Mit den Funktionen matrixplot() und aggr() lässt sich die Verteilung der NA im Datensatz und das Auftreten bestimmter Muster gemeinsam fehlender Daten sehr einfach untersuchen:

Code: Alles auswählen

mydata <- iris
mydata[sample(150,40),1] <- NA
mydata[sample(150,70),3] <- NA
mydata[sample(150,100),4] <- NA

VIM::matrixplot(mydata)
VIM::aggr(mydata)
VIM::aggr(mydata, plot = FALSE)
Für andere Pakettipps wäre ich aber sehr zu haben.

Viele Grüße,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten