Seite 1 von 1

Korrelationsmatrix

Verfasst: Do Mär 15, 2018 2:53 pm
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

Re: Korrelationsmatrix

Verfasst: Do Mär 15, 2018 2:59 pm
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

Re: Korrelationsmatrix

Verfasst: Do Mär 15, 2018 3:16 pm
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

Re: Korrelationsmatrix

Verfasst: Do Mär 15, 2018 3:27 pm
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

Re: Korrelationsmatrix

Verfasst: Do Mär 15, 2018 3:46 pm
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?

Re: Korrelationsmatrix

Verfasst: Do Mär 15, 2018 3:51 pm
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

Re: Korrelationsmatrix

Verfasst: Do Mär 15, 2018 4:10 pm
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

Re: Korrelationsmatrix

Verfasst: Di Mär 20, 2018 8:57 am
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