Korrelationsmatrix

Alles zum Thema der beschreibenden Statistik

Moderator: jogo

Antworten
Anna.R

Korrelationsmatrix

Beitrag von Anna.R »

Hallo ihr Lieben,
möchte eine Korrelationsmatrix berechnen, leider haben mir die bisherigen Einträge dazu nicht weitergeholfen.
Habe einen Dataframe mit den zur Berechnung ausgewählten Variablen erstellt (10 Variablen, data.frame heißt DATA_Finish_w). Meine Daten sind teils metrisch, ordinal und nominal, deswegen bin ich mit einigen Befehlen vermutlich nicht voran gekommen.
cor.test(DATA_Finish_w,y, use="complete", method = "kendall") -> hat nicht funktioniert, ich habe leider nicht verstanden was y hier bedeutet
ohne das y kommt:
Error in cor.test.default(DATA_Finish_w, use = "complete", method = "kendall") :
argument "y" is missing, with no default
wenn y=NULL dann kommt:
Error in if (inherits(X[[j]], "data.frame") && ncol(xj) > 1L) X[[j]] <- as.matrix(X[[j]]) :
missing value where TRUE/FALSE needed

Funktioniert eine Korrelationsmatrix mit diesen verschiedenen Skalenniveaus in meinem Dataframe?
Danke schon mal.
LG Anna
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Korrelationsmatrix

Beitrag von jogo »

Hallo Anne,

was macht eigentlich:

Code: Alles auswählen

cor(DATA_Finish_w, use = "complete.obs", method = "kendall")
:?:
Kannst Du bitte den Output von

Code: Alles auswählen

str(DATA_Finish_w)
in Deine nächste Nachricht kopieren?

Gruß, Jörg
Anna.R

Re: Korrelationsmatrix

Beitrag von Anna.R »

Code: Alles auswählen

cor(DATA_Finish_w, use = "complete.obs", method = "kendall")
Output:
Error in if (inherits(X[[j]], "data.frame") && ncol(xj) > 1L) X[[j]] <- as.matrix(X[[j]]) : 
  missing value where TRUE/FALSE needed

Code: Alles auswählen

> str(DATA_Finish_w)
'data.frame':	284 obs. of  10 variables:
 $ AUDIT : num  15 7 1 21 7 8 5 27 6 7 ...
 $ SMOKE :'data.frame':	284 obs. of  1 variable:
  ..$ SMOKE: num  2 2 1 2 0 0 0 2 2 2 ...
 $ SUBST :'data.frame':	284 obs. of  1 variable:
  ..$ SUBST: num  8 0 0 0 0 0 0 0 0 0 ...
 $ KFG   :'data.frame':	284 obs. of  1 variable:
  ..$ KFG: num  52 26 15 37 0 0 0 21 7 9 ...
 $ INCOME:'data.frame':	284 obs. of  1 variable:
  ..$ INCOME: num  750 1000 1250 1000 1500 2000 1000 500 500 1000 ...
 $ EDUC  :'data.frame':	284 obs. of  1 variable:
  ..$ Educ: num  0 4 3 2 4 3 0 3 6 3 ...
 $ DEBTS :'data.frame':	284 obs. of  1 variable:
  ..$ Debts_1: num  50000 0 10000 10000 25000 0 10000 0 0 0 ...
 $ SEX   :'data.frame':	284 obs. of  1 variable:
  ..$ Sex: num  1 1 2 1 1 1 2 1 1 1 ...
 $ MIGRAT:'data.frame':	284 obs. of  1 variable:
  ..$ MIGRAT: num  0 2 8 10 0 0 0 0 11 0 ...
 $ AGE   :'data.frame':	284 obs. of  1 variable:
  ..$ Age: num  50 34 26 25 31 42 35 47 48 64 ...
PS: Ich habe keine Missings, alle Personen mit fehlenden Werten habe ich für diese Berechnung bereits ausgeschlossen
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Korrelationsmatrix

Beitrag von jogo »

Das konnte ja keiner ahnen:
in dem Dataframe DATA_Finish_w gibt es Spalten, die selbst wieder Dataframes sind.
(Wie bist Du zu dieser Struktur gekommen?)
Da wirst Du erstmal etwas umstrukturieren müssen, etwa so:

Code: Alles auswählen

D <- with(DATA_Finish_w, data.frame(
 AUDIT, SMOKE$SMOKE, SUBST$SUBST, KFG$KFG, INCOME$INCOME, EDUC$EDUC, 
 DEBTS$Debts_1, SEX$Sex, MIGRAT$MIGRAT, AGE$Age
))
jetzt bitte nochmal das Ergebnis von:

Code: Alles auswählen

str(D)
cor(D, use = "complete.obs", method = "kendall")
Gruß, Jörg
p.s.:
Bitte lesen: viewtopic.php?f=20&t=29
Anna.R

Re: Korrelationsmatrix

Beitrag von Anna.R »

Oh Danke, ich habe alle Variablen aus anderen Dataframes zusammengeführt mit:
DATA_Finish$MIGRAT = data_ano_migrat[c("MIGRAT")] #usw.

Wie kann ich das dann klüger machen ohne diese Verschachtelung zu erzeugen?
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Korrelationsmatrix

Beitrag von jogo »

Anna.R hat geschrieben: Do Mär 15, 2018 3:46 pm Oh Danke, ich habe alle Variablen aus anderen Dataframes zusammengeführt mit:
DATA_Finish$MIGRAT = data_ano_migrat[c("MIGRAT")] #usw.

Wie kann ich das dann klüger machen ohne diese Verschachtelung zu erzeugen?
Das bedeutet aus verschiedenen Dataframes, richtig?

Code: Alles auswählen

DATA_Finish$MIGRAT <- data_ano_migrat$MIGRAT ### oder:
DATA_Finish$MIGRAT <- data_ano_migrat[["MIGRAT"]]
Beachte den Unterschied zwischen [ und [[
viewtopic.php?f=20&t=27
https://stackoverflow.com/questions/116 ... s-of-a-lis

Gruß, Jörg
Anna.R

Re: Korrelationsmatrix

Beitrag von Anna.R »

DANKE Jörg,
ärgert mich, dass ich diesen einfachen Fehler nicht selbst entdeckt habe.
Korrelationsmatrix wurde jetzt erfolgreich berechnet.
Danke.
LG Anna
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Korrelationsmatrix

Beitrag von jogo »

Hallo Anna,

ich wollte Dir nur versichern, dass auch ich all solche Fehler am Anfang gemacht habe.
Aus Fehlern wird man bekanntlich klug; zumindest habe ich mir folgendes Verhalten angewöhnt, wenn etwas nicht klappte wie erwartet:
  • Lesen der Dokumentation der verwendeten Funktion; ?Funktionsname
  • Anzeigen der Beispiel mit example(Funktionsname)
  • Untersuchung der verwendeten Objekte mit str() und summary() - besonders nach dem Einlesen von Daten
Gruß, Jörg
Antworten