Fehlermeldung bei Partialkorrelationen

Allgemeine Fragen zu Statistik mit R.

Fehlermeldung bei Partialkorrelationen

Beitragvon KingLouie » Di 14. Aug 2018, 13:05

Hey :)

Ich habe mal wieder eine Frage...

Ich wollte ein paar Partialkorrelationen berechnen.
Und zwar wollte ich z.B. die Korrelation zwischen den Scores von 2 Fragebögen (CTQ und PSQI) um den Einfluss von Alter und BMI bereinigen.

Das habe ich nun wie folgt versucht:

partial.r(data=Lab_Data2,x=c(CTQ_gesamt, PSQI_Gesamt),y=c(age,BMI))

Nun bekomme ich aber folgende Fehlermeldung:
Error in cor(data, use = use, method = method) : 'x' must be numeric

Dabei sind sowohl CTQ_gesamt als ein PSQI_Gesamt numerische Variablen:
> is.numeric(CTQ_gesamt)
[1] TRUE
> is.numeric(PSQI_Gesamt)
[1] TRUE


Hat jemand eine Idee, wo das Problem liegen könnte oder wie ich auf andere Weise die Partialkorrelationen berechnen kann?

Schon mal vielen Dank und viele Grüße :)
KingLouie
 
Beiträge: 13
Registriert: Do 5. Jul 2018, 09:59
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Fehlermeldung bei Partialkorrelationen

Beitragvon jogo » Di 14. Aug 2018, 20:21

Hallo Louie,

bei mir gibt es keine Funktion partial.r().
Verwendest Du irgendwelche Zusatzpakete?
Oder ist das eine userdefinierte Funktion?

Gruß, Jörg
jogo
 
Beiträge: 157
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: Fehlermeldung bei Partialkorrelationen

Beitragvon KingLouie » Mi 15. Aug 2018, 11:35

Hallo Jörg,

Das ist eine Funktion aus dem psych-Paket.

Ich habe nun auch herausgefunden, wo das Problem lag:
Die Fehlermeldung kommt, wenn in dem Datensatz noch weitere Variablen vorkommen, die bei der Erstellung der Korrelationsmatrix Probleme bereiten (weil sie z.B. nicht numerisch sind), obwohl diese Variablen für die Berechnung der Partialkorrelationen gar nicht verwendet werden.
Ich habe das jetzt so gelöst, dass ich einen Subdatensatz nur mit den Variablen erstellt habe, die ich für meine Partialkorrelationen benötige.

Nun stellt sich mir jedoch noch eine weitere Frage:
Ich habe nun also z.B. den Subdatensatz "CTQ_PSQI", da es mir hier um die Partialkorrelation zwischen CTQ und PSQI geht, welche um die Einflüsse von 5 Variablen (Alter, Geschlecht, Gewicht, Größe, BMI) bereinigt wurde.
Dann habe ich die Partialkorrelationsmatrix als Objekt angelegt:
CTQ_PSQI_partial <- partial.r(data=CTQ_PSQI,x=c(1,2),y=c(3,4,5,6,7),use="pairwise")

Um nun herauszufinden, ob die Partialkorrelationen auch signifikant sind, habe ich den corr.p() Befehl verwendet (auch aus dem psych-Paket):
CTQ_PSQI_corrp <- corr.p(CTQ_PSQI_partial,n=66) #n=66, da 71 Beobachtungen & 5 auspartialisierte Variablen
print(CTQ_PSQI_corrp,short=F)

Ich erhalte in meinem Beispiel nun eine Korrelation von .33 und einen p-Wert von .01.
Allerdings würde ich mir hier gerne drei statt zwei Nachkommastellen für den p-Wert anzeigen lassen. Bei manchen Berechnungen wird mir z.B. nur ein p-Wert von 0 angezeigt, wobei ich jetzt nicht weiß, wie klein genau dieser ist.
Der number.digits= Befehl funktioniert bei partial.r() und corr.p() irgendwie nicht.
Weiß da noch jemand Rat?

Viele Grüße :)
KingLouie
 
Beiträge: 13
Registriert: Do 5. Jul 2018, 09:59
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Fehlermeldung bei Partialkorrelationen

Beitragvon jogo » Mi 15. Aug 2018, 11:49

Hallo Louie

KingLouie hat geschrieben:Ich habe nun auch herausgefunden, wo das Problem lag:
Die Fehlermeldung kommt, wenn in dem Datensatz noch weitere Variablen vorkommen, die bei der Erstellung der Korrelationsmatrix Probleme bereiten (weil sie z.B. nicht numerisch sind), obwohl diese Variablen für die Berechnung der Partialkorrelationen gar nicht verwendet werden.
Ich habe das jetzt so gelöst, dass ich einen Subdatensatz nur mit den Variablen erstellt habe, die ich für meine Partialkorrelationen benötige.

prima, dass Du das Problem lösen konntest. Das mit der Auswahl der Spalten mache ich möglichst ohne neuen Dataframe:
Code: Alles auswählen
corNames <- c("Wind", "Temp")
cor(airquality[corNames])


Nun stellt sich mir jedoch noch eine weitere Frage:...

Ich erhalte in meinem Beispiel nun eine Korrelation von .33 und einen p-Wert von .01.
Allerdings würde ich mir hier gerne drei statt zwei Nachkommastellen für den p-Wert anzeigen lassen. Bei manchen Berechnungen wird mir z.B. nur ein p-Wert von 0 angezeigt, wobei ich jetzt nicht weiß, wie klein genau dieser ist.
Der number.digits= Befehl funktioniert bei partial.r() und corr.p() irgendwie nicht.
Weiß da noch jemand Rat?
Schau bitte in die Dokumentation der Funktion corr.p() im Abschnitt Value; dort steht, wie das Ergebnisobjekt aufgebaut ist. Besorge Dir die p-Werte aus dieser Struktur!

Gruß, Jörg
jogo
 
Beiträge: 157
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: Fehlermeldung bei Partialkorrelationen

Beitragvon KingLouie » Mi 15. Aug 2018, 13:51

Schau bitte in die Dokumentation der Funktion corr.p() im Abschnitt Value; dort steht, wie das Ergebnisobjekt aufgebaut ist. Besorge Dir die p-Werte aus dieser Struktur


Dort steht:
p
two tailed probability of t for each correlation. For symmetric matrices, p values adjusted for multiple tests are reported above the diagonal.


Die p-Werte kann ich ja auch dem Ergebnis entnehmen.
z.B.:

Code: Alles auswählen
Call:corr.p(r = CTQ_PSQI_partial, n = 66)
Correlation matrix
partial correlations
            PSQI_Gesamt CTQ_gesamt
PSQI_Gesamt        1.00       0.33
CTQ_gesamt         0.33       1.00
Sample Size
[1] 66
Probability values (Entries above the diagonal are adjusted for multiple tests.)
   PSQI_Gesamt CTQ_gesamt
PSQI_Gesamt        0.00       0.01
CTQ_gesamt         0.01       0.00


Jetzt weiß ich, dass die Partialkorrelation von r = .33 zwischen PSQI und CTQ signifikant ist (p = .01). Allerdings muss ich für meine Arbeit drei Nachkommastellen berichten, es werden aber immer nur zwei ausgegeben. Auch mit help(corr.p) habe ich nicht rausfinden können, wie man das erreichen kann.

Bei höheren Partialkorrelationen wird mir z.T. nur p = 0 ausgegeben. Jetzt weiß ich nicht, ob der Wert < .01 oder < .001 ist, was für mich jedoch wichtig wäre...
KingLouie
 
Beiträge: 13
Registriert: Do 5. Jul 2018, 09:59
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Fehlermeldung bei Partialkorrelationen

Beitragvon jogo » Mi 15. Aug 2018, 13:56

Und was ergibt:
Code: Alles auswählen
corr.p(r = CTQ_PSQI_partial, n = 66)$p

Gruß, Jörg
jogo
 
Beiträge: 157
Registriert: Mo 26. Feb 2018, 09:56
Danke gegeben: 3
Danke bekommen: 1 mal in 1 Post

Re: Fehlermeldung bei Partialkorrelationen

Beitragvon KingLouie » Mi 15. Aug 2018, 14:08

Das ergibt auch nur zwei Nachkommastellen.

Aber ich habe nun rausgefunden, dass es am print() Befehl lag. Wenn ich dort all=T eingebe, erhalte ich die ungerundeten p-Werte.

Also bei:

CTQ_PSQI_corrp <- corr.p(CTQ_PSQI_partial,n=66,adjust="none")
print(CTQ_PSQI_corrp,short=F,all=T)

wird mir dann irgendwo auch folgendes ausgegeben:

p
PSQI_-PSQI_ 0.000000000
CTQ_g-PSQI_ 0.007142336
PSQI_-CTQ_g 0.007142336
CTQ_g-CTQ_g 0.000000000

Jetzt weiß ich, dass der p-Wert von .01 eigentlich bei .007 liegt :)

Vielen lieben Dank für deine schnellen Antworten!
KingLouie
 
Beiträge: 13
Registriert: Do 5. Jul 2018, 09:59
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Statistik allgemein

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast

cron