Funktion für die Erstellung einer Korrelationsmatrix
Verfasst: Di Aug 20, 2019 11:21 am
Hallo,
ich hoffe ich poste hier an der richtigen Stelle.
Mein Problem ist Folgendes: Ich möchte eine Funktion erstellen, die für die als Parameter angegebene Matrix die Variablen paarweise den Korrelationskoeffizienten nach Pearson berechnet.
Genauer: Die Form der Matrix die ich als Parameter angebe entspricht vom Aufbau her dem eines dataframes, dh in der ersten Zeile befinden sich die Spaltennamen, in den darauf folgenden Zeilen die Beobachtungen. Der Output soll eine Matrix sein, die im Endeffekt wie ein corrplot ist, dh die erste Variable soll mit allen anderen auf Korrelation überprüft werden und das Ergebnis soll jeweils in ein "Feld", der Matrix.
Hier mein bisheriger Versuch:
Wenn ich dann aber meine funktion mit einer Matrix laufen lassen will bekomme ich folgende Fehlermeldung
Hier einmal die Struktur der Matrix, die ich mit der Funktion analysieren will
und der Anfang
Die Funktion benötige ich für meine Matrix X, sie soll aber auch mit anderen Matrizen entsprechender Form funktionieren.
Danke schonmal für eure Zeit, ich hoffe jemand kann mir helfen. Falls
ich hoffe ich poste hier an der richtigen Stelle.
Mein Problem ist Folgendes: Ich möchte eine Funktion erstellen, die für die als Parameter angegebene Matrix die Variablen paarweise den Korrelationskoeffizienten nach Pearson berechnet.
Genauer: Die Form der Matrix die ich als Parameter angebe entspricht vom Aufbau her dem eines dataframes, dh in der ersten Zeile befinden sich die Spaltennamen, in den darauf folgenden Zeilen die Beobachtungen. Der Output soll eine Matrix sein, die im Endeffekt wie ein corrplot ist, dh die erste Variable soll mit allen anderen auf Korrelation überprüft werden und das Ergebnis soll jeweils in ein "Feld", der Matrix.
Hier mein bisheriger Versuch:
Code: Alles auswählen
cor.test.matrix<- function(mat)
{ p <- dim(mat)[2]
korr.matrix <- matrix(nrow = p, ncol = p, data = 0)
for(i in 1:p)
{for(j in 1:p)
{korr.matrix <- korr.matrix[i,j]+cor.test(formula = ~i+j, data = mat, method = "pearson")$statistics}}
return(korr.matrix)}
Code: Alles auswählen
Error in cor.test.default(x = 1L, y = 1L, method = "pearson") :
not enough finite observations
Code: Alles auswählen
> str(X)
num [1:548, 1:6] 1 1 1 1 1 1 1 1 1 1 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:548] "1" "2" "4" "5" ...
..$ : chr [1:6] "(Intercept)" "age" "duration" "residence_since" ...
- attr(*, "assign")= int [1:6] 0 1 2 3 4 5
Code: Alles auswählen
head(X)
(Intercept) age duration residence_since num_dependents
1 1 67 6 4 1
2 1 22 48 2 1
4 1 45 42 4 2
5 1 53 24 4 2
8 1 35 36 2 1
10 1 28 30 2 1
installment_commitment
1 4
2 2
4 2
5 3
8 2
10 4
Danke schonmal für eure Zeit, ich hoffe jemand kann mir helfen. Falls