Cohens d bei sehr vielen Gruppen? package/Funktion gesucht

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Antworten
8ZRbP
Beiträge: 27
Registriert: Do Okt 13, 2016 11:56 am

Cohens d bei sehr vielen Gruppen? package/Funktion gesucht

Beitrag von 8ZRbP » Do Dez 06, 2018 2:24 pm

Hallo zusammen,

ich suche ein package bei dem sich Cohens d für sehr viele Pairs effektiv berechnen lässt. D.h ich will eine Funktion mit der ich als Eingabeparameter einen Vektor M (Mittelwerte) und einen Vektor SD (Standardabweichung) habe. Ich will also als Rückgabewert nicht nur ein (!) Cohens d sondern für alle möglichen Pairs an Mittelwerten, ähnlich wie bei einer Korrelationsmatrix alle Pairs ausgegeben werden.

D.h. die Funktion müsste so sein:

d <-- (M, SD)

Eingabevektoren wären:

M <-- (m1, m2, ..., m_n)
SD <-- (sd1, sd2, ...sd_n)

Also Ausgabevektor will ich:

d = (d_m1/m2, d_m1/m3, ...., d_m2/m3, ..., d_m_n-1/m_n).

Ich will als Rückgabewert also Cohens d für alle M-Pairs. Bei den Funktionen zur Berechnung von Cohens d die ich bisher gefunden habe, wird Cohens d jeweils nur für ein M-Pair berechnet. Die Funktion ist dann z.B. d <-- (M, SD) und Rückgabewert ist d = d_M/SD. Es ist mir aber zu mühsam die M-Pairs einzeln einzugeben, wenn es sehr viele Kombinationen an M-Pairs gibt, daher suche ich eine Funktion wie oben beschrieben.

(Falls es so eine noch nicht gibt, wie könnte ich die Funktion mit einfachen Mitteln selbst programmieren?)

Besten Dank und Grüße,

8ZRbP

jogo
Beiträge: 1022
Registriert: Fr Okt 07, 2016 8:25 am

Re: Cohens d bei sehr vielen Gruppen? package/Funktion gesucht

Beitrag von jogo » Do Dez 06, 2018 2:52 pm

Vielleicht kannst Du ja dies nutzen:
https://stackoverflow.com/questions/154 ... ffect-size

Benutzeravatar
EDi
Beiträge: 693
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Cohens d bei sehr vielen Gruppen? package/Funktion gesucht

Beitrag von EDi » Do Dez 06, 2018 10:45 pm

Hier ein Beispiel wie man es angehen könnte:

Code: Alles auswählen

m <- c(1, 2, 3)
sd <- c(10, 10, 10)

# create all pairwise comparisons
n <- length(m)
comb <- data.frame(t(combn(seq_len(n), 2)))

# funtion to compute cohen's from 2 means & two sds (assuming equal n)
cd <- function(m, s) {
  stopifnot(length(m) == 2)
  stopifnot(length(s) == 2)
  d <- abs(diff(m)) / sqrt(sum(s^2))
  d
}
cd(m[1:2], sd[1:2])

# loop over all combinations
out <- comb

out$d <- sapply(seq_len(nrow(comb)), function(i) {
  take <- comb[i, ]
  cd(c(m[take [[1]]], m[take[[2]]]), 
     c(sd[take[[1]]], sd[take[[2]]]))
})
out

Wie immer, ohne Gewähr
Die Dreiecksmatrix darfst du selbst daraus erstellen ;)
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.

Antworten

Wer ist online?

Mitglieder in diesem Forum: Ahmouri und 1 Gast