Teste estatístico para tabelas de contingência nxm

12

Eu tenho um conjunto de dados composto por elementos de três grupos, vamos chamá-los de G1, G2 e G3. Analisei certas características desses elementos e os dividi em 3 tipos de "comportamento" T1, T2 e T3 (usei a análise de cluster para fazer isso).

Então, agora eu tenho uma tabela de contingência 3 x 3 como esta com as contagens de elementos nos três grupos divididos por tipo:

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

Agora, eu posso executar um teste de Fisher nesses dados em R

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

e eu recebo

   Fisher's Exact Test for Count Data

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

Então, minhas perguntas são:

  • é correto usar o teste de Fisher dessa maneira?

  • como sei quem é diferente de quem? Existe um teste post-hoc que eu possa usar? Olhando para os dados, eu diria que o terceiro grupo tem um comportamento diferente dos dois primeiros, como mostro isso estatisticamente?

  • alguém me indicou modelos de logit: eles são uma opção viável para esse tipo de análise?

  • alguma outra opção para analisar esse tipo de dados?

Muito obrigado

nico

nico
fonte

Respostas:

13

No começo, acho que o teste de Fisher é usado corretamente.

Os dados de contagem são melhor tratados usando modelos log-lineares (não logit, para garantir que os valores ajustados sejam delimitados abaixo). Em R você pode especificar family=poisson(que define erros = Poisson e link = log). O link de log garante que todos os valores ajustados sejam positivos, enquanto os erros de Poisson levam em consideração o fato de que os dados são inteiros e têm variações iguais às suas médias. por exemplo, glm(y~x,poisson)e o modelo é equipado com um link de log e erros de Poisson (para explicar a não normalidade).

Nos casos em que há sobredispersão (o desvio residual deve ser igual aos graus residuais de liberdade, se a suposição de erros de Poisson for apropriada), em vez de usar quasipoissoncomo a família de erros, você pode ajustar um modelo binomial negativo. (Isso envolve a função glm.nbdo pacote MASS)

No seu caso, você pode ajustar e comparar modelos usando comandos como os seguintes:

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)

Sempre verifique se o seu modelo mínimo contém todas as variáveis ​​incômodas.

Quanto a como sabemos quem é diferente de quem, existem algumas parcelas que podem ajudá-lo. A função R assocplotproduz um gráfico de associação indicando desvios da independência de linhas e colunas em uma tabela de contingência bidimensional.

Aqui estão os mesmos dados plotados como um mosaico

mosaicplot(data, shade = TRUE)
George Dontas
fonte
Obrigado, é exatamente isso que eu precisava. Não tenho muita certeza do que você quer dizer quando fala em superdispersão (desculpe, não sou estatístico, talvez seja algo muito básico) ... Você diz que o desvio residual deve ser igual aos graus residuais de liberdade ... como eu verificaria isso?
Nico
Se você der, summary(model1)verá algo como:Residual deviance: -2.7768e-28 on 0 degrees of freedom
George Dontas
4

Você pode usar o multinom do pacote nnet para a regressão multinomial. Testes post-hoc, você pode usar a Hipótese linear do pacote veicular. Você pode realizar o teste de independência usando a hipótese linear (teste de Wald) ou a anova (teste LR).

Wojtek
fonte