Seite 1 von 1

Test für multiple Gruppen

Verfasst: Di Mär 30, 2021 11:54 am
von zinbu
Hallo zusammen,

ich suche nach einer eleganten Lösung um in meinem Datensatz Fishers Exact Tests für verschiedene Werte durchzuführen und nicht alles einzeln von Hand machen zu müssen.

Ich habe einen Datensatz mit einer Variablen für verschiedene "Krankheiten" "A bis F" und einer Variablen für Kontrollen ja/nein "x" oder" y".
In etwa so:

Code: Alles auswählen

x <- matrix(1:10, nrow=5, ncol=2,dimnames=list(c("A","B","C","D","F"), c("x","y")))

Ich möchte nun für jede Krankheit herausfinden ob diese bei Kontrollen häufiger oder seltener ist, im Vergleich zu allen anderen Probanden. Zunächst soll also zb für Krankheit "A" die Tabelle gebildet werden:
x y
A vorhanden 1 6
A nicht vorhanden 14 34
und dann der Test durchgeführt werden.

Bis jetzt versuche ich das umständlich indem ich aus den Daten kleinere Gruppen bilde und dann die p-Werte wieder von Hand in die Tabelle eintrage. Habt ihr vielleicht einen eleganteren Weg dafür?

LG

Re: Test für multiple Gruppen

Verfasst: Di Mär 30, 2021 12:37 pm
von bigben
Schau mal, ob das so für Dich passt:

Code: Alles auswählen

x <- matrix(1:10, nrow=5, ncol=2,dimnames=list(c("A","B","C","D","F"), c("x","y")))

gesamt_x <- sum(x[,"x"])
gesamt_y <- sum(x[,"y"])

for(zeile in 1:nrow(x)){
  tabelle <- matrix(c(x[zeile, "x"], gesamt_x - x[zeile, "x"],
                      x[zeile, "y"], gesamt_y - x[zeile, "y"]), nrow = 2)
  
  cat("Zeile "); cat(zeile); cat(":\n")
  print(tabelle)
  cat("\np = "); cat(fisher.test(tabelle)$p.value)
  cat("\nOR = "); cat(fisher.test(tabelle)$estimate)
  cat("\n\n\n\n")  
}
LG,
Bernhard

Re: Test für multiple Gruppen

Verfasst: Di Mär 30, 2021 1:55 pm
von zinbu
ja cool danke dir, Bernhard!

Das hilft mir weiter :)