Como posso testar a mesma variável categórica em duas populações?


8

Eu tenho dados que se parecem um pouco com isso:

ID         Status
01         A
02         G
03         E
...        ...
100        G

Você entendeu a ideia, eu acho. Eu tenho esses dados de duas populações separadas (coortes) e quero comparar a distribuição da variável status em uma população com a distribuição em outra. A pergunta que estou respondendo é mais ou menos assim: se você não soubesse melhor, poderia ser da mesma população? Acho que isso significa que eu deveria executar o chi de uma pessoa ao quadrado, embora não tenha certeza. Também não tenho certeza da metodologia para transformar a variável de uma maneira que permita executar o teste. (Gostaria especialmente de saber como fazer isso na R.)

Respostas:


10

Deixe-me (a) explicar primeiro a idéia subjacente, e não a mecânica - elas se tornam mais óbvias em retrospecto. Então (b) falarei sobre o qui-quadrado (e se é apropriado - pode não ser!), E então (c) falarei sobre como fazê-lo em R.

(a) Sob o nulo, as populações são as mesmas. Imagine que você coloque suas duas coortes em um grande conjunto de dados, mas adicione uma coluna que contém os rótulos da coorte. Então, sob o valor nulo, o rótulo da coorte é efetivamente apenas um rótulo aleatório que não informa mais sobre a distribuição da qual a observação veio.

Sob a alternativa, é claro, os rótulos da coorte são importantes - saber que a etiqueta da coorte lhe diz mais do que não saber, porque as distribuições sob as duas etiquetas são diferentes.

(Isso sugere imediatamente algum tipo de teste de permutação / teste de randomização, onde uma estatística - uma sensível à alternativa - calculada na amostra é comparada com a distribuição da mesma estatística com os rótulos de coorte atribuídos aleatoriamente às linhas. Se você fez tudo possíveis reatribuições é um teste de permutação; se você apenas as provar, é um teste de randomização.)

(b) Então agora, como fazer um qui-quadrado?

Você calcula os valores esperados sob o valor nulo. Como os rótulos da coorte não importam sob nulo, você calcula o número esperado em cada célula com base na distribuição geral:

                       Status
                 A   B   ...  E   ...  G ...      Total
  Cohort 1:     10  15       18                    84
  Cohort 2:      9   7       25                    78

  Total:        19  22   ... 43 ...               162

Portanto, se a distribuição fosse a mesma, não haveria associação entre coorte e status e (condicional nos totais da linha e da coluna) o número esperado na célula é total da linha i coluna-total-j / total-total×(i,j)×

Então você acaba de fazer um teste qui-quadrado de independência .

CONTUDO!

Se os rótulos de status formarem uma categoria ordenada , esse teste do qui-quadrado está descartando muita informação - ele terá baixo poder contra alternativas interessantes (como uma ligeira mudança para categorias mais altas ou mais baixas). Nessa situação, você deve fazer algo mais adequado - isto é, que leve em consideração esse pedido. Existem muitas opções.

-

(c) Agora, sobre como fazê-lo no R - depende de como seus dados estão atualmente configurados no R - seria realmente útil ter um exemplo reproduzível como um subconjunto dos seus dados!

Suponho que você o tenha em um quadro de dados com duas colunas, uma com o status (um fator) e outra com a coorte (um segundo fator).

Igual a:

  status  cohort
1      B Cohort1
2      B Cohort1
3      D Cohort1
4      B Cohort1
5      C Cohort1
6      D Cohort1
. 
.
. 
25      G Cohort2
26      E Cohort2
27      E Cohort2
28      D Cohort2
29      C Cohort2
30      G Cohort2

Então, se esse fosse um quadro de dados chamado, statusresultsvocê obteria uma tabela como a que fiz anteriormente:

> with(statusresults,table(cohort,status))
         status
cohort    A B C D E F G
  Cohort1 2 6 7 3 0 0 0
  Cohort2 0 0 2 2 4 1 3

E para o teste do chisquare, você deve:

> with(statusresults, chisq.test(status, cohort))

    Pearson's Chi-squared test

data:  status and cohort 
X-squared = 18.5185, df = 6, p-value = 0.005059

Warning message:
In chisq.test(status, cohort) : Chi-squared approximation may be incorrect

(o aviso é que as contagens esperadas são baixas em algumas células, pois usei uma amostra muito pequena)

Se você ordenou categorias para status, deve fazê-lo, para que possamos discutir outras possibilidades para a análise além do chisquare simples.


Obrigado pelo exemplo chi-2! O que você recomendaria se a contagem de células fosse tão baixa quanto no seu exemplo? Ou seja, os pré-requisitos para um teste do qui-quadrado são violados?
Mark Heckmann

@ MarkHeckmann Realmente não existem 'pré-requisitos' como tal. A distribuição qui-quadrado é sempre uma aproximação à verdadeira distribuição nula do qui-quadrado, e é uma questão de quão aproximada você pode tolerar (por exemplo, quanta imprecisão nos valores de p você pode tolerar em quais partes do distribuição). A regra mais comum é muito rigorosa, como discutem vários artigos. Mas se os números esperados fossem muito pequenos, eu usaria simulação da distribuição nula do teste do qui-quadrado ou escolheria qualquer estatística apropriada e usaria a abordagem de permutação descrita em (a).
Glen_b -Reinstala Monica

1

Você está certo em relação à idéia de fazer um teste qui-quadrado. Então aqui está:

#Create two data sets (id, outcome and group label)
Dat1 <- as.data.frame(cbind(1:999,sample(c("A","G","E"),999,replace=T,prob=c(.2,.4,.4)),"group1"))
Dat2 <- as.data.frame(cbind(1:500,sample(c("A","G","E"),500,replace=T,prob=c(.4,.2,.4)),"group2"))

#Combine data sets
Dat  <- rbind(Dat1,Dat2)

#Receive descriptive statistics and compute Chi-Square
attach(Dat)
table(V3,V2)
chisq.test(table(V3,V2))
detach(Dat)

Se estiver correto, seu qui-quadrado será significativo, portanto, há uma diferença significativa entre as distribuições dos dois grupos. Para uma referência, para começar, consulte: http://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test http://www.statmethods.net/stats/frequencies.html


0

Você pode estar interessado neste artigo [1]. Trecho do resumo:
O objetivo do teste de duas amostras (também conhecido como teste de homogeneidade) é, dados dois conjuntos de amostras, julgar se as distribuições de probabilidade por trás das amostras são iguais ou não. Neste artigo, propomos um novo método não paramétrico de teste de duas amostras com base em um estimador de razão de densidade de mínimos quadrados. Através de vários experimentos, mostramos que o método proposto em geral produz um erro tipo II menor (ou seja, a probabilidade de julgar as duas distribuições iguais quando são realmente diferentes) do que um método de última geração, com erro maior do tipo I (ou seja, a probabilidade de julgar as duas distribuições diferentes quando na verdade são as mesmas).

Os autores também fornecem código matlab para o mesmo [2].

[1] http://www.ms.ku-tokyo.ac.jp/2011/LSTT.pdf
[2] http://www.ms.ku-tokyo.ac.jp/software.html#uLSIF

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.