Test statystyczny dla tabel kontyngencji nxm

12

Mam zestaw danych złożony z elementów z trzech grup, nazwijmy je G1, G2 i G3. Przeanalizowałem niektóre cechy tych elementów i podzieliłem je na 3 rodzaje „zachowania” T1, T2 i T3 (w tym celu wykorzystałem analizę skupień).

Więc teraz mam taką tabelę zdarzeń 3 x 3 z liczbą elementów w trzech grupach podzielonych według typu:

      |    T1   |    T2   |    T3   |
------+---------+---------+---------+---
  G1  |   18    |   15    |   65    | 
------+---------+---------+---------+---
  G2  |   20    |   10    |   70    |
------+---------+---------+---------+---
  G3  |   15    |   55    |   30    |

Teraz mogę uruchomić test Fishera na tych danych w języku R.

data <- matrix(c(18, 20, 15, 15, 10, 55, 65, 70, 30), nrow=3)
fisher.test(data)

i rozumiem

   Fisher's Exact Test for Count Data

data:  data 
p-value = 9.028e-13
alternative hypothesis: two.sided     

Więc moje pytania to:

  • czy poprawne jest użycie testu Fishera w ten sposób?

  • skąd mam wiedzieć, kto różni się od kogo? Czy mogę skorzystać z testu post hoc? Patrząc na dane powiedziałbym 3 rd grupa ma inny zachowania od dwóch pierwszych, w jaki sposób pokazują, że statystycznie?

  • ktoś wskazał mi logować modele: czy są realną opcją dla tego rodzaju analizy?

  • jakaś inna opcja analizy tego typu danych?

Dziękuję bardzo

Nico

Nico
źródło

Odpowiedzi:

13

Na początku myślę, że test Fishera jest używany poprawnie.

Dane zliczania są lepiej obsługiwane przy użyciu modeli logarytmiczno-liniowych (nie logit, aby upewnić się, że dopasowane wartości są ograniczone poniżej). W R możesz określić family=poisson(który ustawia błędy = Poisson i link = log). Łącze dziennika zapewnia, że ​​wszystkie dopasowane wartości są dodatnie, podczas gdy błędy Poissona uwzględniają fakt, że dane są liczbami całkowitymi i mają wariancje równe ich środkom. np glm(y~x,poisson). model jest wyposażony w link log i błędy Poissona (w celu wyjaśnienia nienormalności).

W przypadkach, w których występuje nadmierna dyspersja (resztkowe odchylenie powinno być równe pozostałym stopniom swobody, jeśli założenie o błędach Poissona jest właściwe), zamiast używać quasipoissonjako rodziny błędów, można dopasować ujemny model dwumianowy. (Dotyczy to funkcji glm.nbz pakietu MASS)

W twoim przypadku możesz dopasować i porównać modele za pomocą następujących poleceń:

observed <- as.vector(data)
Ts<-factor(rep(c("T1","T2","T3"),each=3))
Gs<-factor(rep(c("G1","G2","G3"),3))

model1<-glm(observed~Ts*Gs,poisson)

#or and a model without the interaction terms
model2<-glm(observed~Ts+Gs,poisson)


#you can compare the two models using anova with a chi-squared test
anova(model1,model2,test="Chi")
summary(model1)

Zawsze upewnij się, że twój minimalny model zawiera wszystkie uciążliwe zmienne.

Jeśli chodzi o to, skąd wiemy, kto jest różny od kogo, istnieją pewne wątki, które mogą ci pomóc. Funkcja R assocplottworzy wykres asocjacji wskazujący odchylenia od niezależności wierszy i kolumn w dwuwymiarowej tabeli kontyngencji.

Oto te same dane wykreślone jak wykres mozaiki

mosaicplot(data, shade = TRUE)
George Dontas
źródło
Dziękuję, właśnie tego potrzebowałem. Nie jestem całkowicie pewien, co masz na myśli, mówiąc o naddyspersji (przepraszam, nie jestem statystykiem, może to coś bardzo podstawowego) ... Mówisz, że odchylenie resztkowe powinno być równe pozostałym stopniom swobody ... jak bym to sprawdzić?
nico
Jeśli dasz summary(model1), zobaczysz coś w styluResidual deviance: -2.7768e-28 on 0 degrees of freedom
George Dontas
4

Można użyć multinom z pakietu nnet regresji wielomianowej. W testach post-hoc można zastosować hipotezę liniową z pakietu samochodowego. Test niezależności można przeprowadzić za pomocą hipotezy linearnej (test Walda) lub anova (test LR).

Wojtek
źródło