Chi square può essere utilizzato per confrontare le proporzioni?


13

Ho letto che il test del chi quadro è utile per vedere se un campione è significativamente diverso da un insieme di valori previsti.

Ad esempio, ecco una tabella dei risultati di un sondaggio riguardante i colori preferiti delle persone (n = 15 + 13 + 10 + 17 = 55 intervistati totali):

red,blue,green,yellow

15,13,10,17

Un test chi quadrato può dirmi se questo campione è significativamente diverso dall'ipotesi nulla di uguale probabilità che le persone apprezzino ciascun colore.

Domanda: il test può essere eseguito in base alle proporzioni degli intervistati totali a cui piace un determinato colore? Come sotto:

red,blue,green,yellow

0.273,0.236,0.182,0.309

Dove, ovviamente, 0,273 + 0,236 + 0,182 + 0,309 = 1.

Se il test del chi quadro non fosse adatto in questo caso, quale test sarebbe? Grazie!

Modifica: ho provato la risposta di @Roman Luštrik di seguito e ho ottenuto il seguente risultato, perché non ottengo un valore p e perché R dice "L'approssimazione Chi-quadrato potrebbe non essere corretta"?

> chisq.test(c(0,0,0,8,6,2,0,0),p = c(0.406197174,0.088746395,0.025193306,0.42041479,0.03192905,0.018328576,0.009190708,0))

    Chi-squared test for given probabilities

data:  c(0, 0, 0, 8, 6, 2, 0, 0) 
X-squared = NaN, df = 7, p-value = NA

Warning message:
In chisq.test(c(0, 0, 0, 8, 6, 2, 0, 0), p = c(0.406197174, 0.088746395,  :
  Chi-squared approximation may be incorrect

1
Nel secondo caso, stai assumendo di conoscere la dimensione totale del campione? O no?
cardinale

@cardinale: sì, conosco la dimensione totale del campione.
hpy,

3
quindi basta moltiplicare le proporzioni per la dimensione totale del campione per trasformarle in una tabella di conteggi e applicare il chi-sq. metodo corrispondente al tuo primo esempio.
Aaron,

Ho il sospetto che tu stia chiedendo del test "bontà di adattamento" (usando il chi quadrato). Il cui uso è stato spiegato sotto. Saluti, Tal
Tal Galili,

Risposte:


7

Correggimi se sbaglio, ma penso che questo possa essere fatto in R usando questo comando

> chisq.test(c(15,13,10,17))

    Chi-squared test for given probabilities

data:  c(15, 13, 10, 17) 
X-squared = 1.9455, df = 3, p-value = 0.5838

Ciò presuppone proporzioni di 1/4 ciascuna. È possibile modificare i valori previsti tramite argomento p. Ad esempio, pensi che le persone potrebbero preferire (per qualsiasi motivo) un colore rispetto agli altri.

> chisq.test(c(15,13,10,17), p = c(0.5, 0.3, 0.1, 0.1))

    Chi-squared test for given probabilities

data:  c(15, 13, 10, 17) 
X-squared = 34.1515, df = 3, p-value = 1.841e-07

2
Ho il sospetto che tu stia vedendo questo a causa di un basso numero di cellule (alcuni libri che ho letto suggeriscono un minimo di 5 per cella). Forse qualcuno più esperto in materia può intervenire?
Roman Luštrik,

1
Si noti inoltre che è possibile ottenere un valore p se si fa l'ultima probabilità più di zero (ma l'avviso rimane comunque).
Roman Luštrik,

1
Ott & Longnecker (Introduzione ai metodi statistici e all'analisi dei dati, 5a edizione) affermano, a pagina 504, che ogni cella dovrebbe essere almeno cinque, per usare comodamente l'approssimazione.
Roman Luštrik,

1
@penyuan: avresti dovuto menzionare che hai un numero abbastanza basso di zero. Roman ha ragione, usare un Chi-quadrato in questo caso non funziona per i motivi che ha citato.
Joris Meys,

1
@penyuan: ho aggiunto una risposta dandoti alcune opzioni.
Joris Meys,

6

Utilizzando le informazioni aggiuntive fornite (dato che alcuni dei valori sono 0), è abbastanza ovvio il motivo per cui la soluzione non restituisce nulla. Per uno, hai una probabilità che è 0, quindi:

  • ei nella soluzione di Henry è 0 per almeno un i
  • npi nella soluzione di chanceislogic è 0 per almeno uno i

Il che rende impossibili le divisioni. Ora dicendo che p=0 significa che è impossibile avere quel risultato. In tal caso, potresti anche cancellarlo dai dati (vedi commento di @cardinal). Se intendi altamente improbabile, una prima "soluzione" potrebbe essere quella di aumentare quella probabilità 0 con un numero molto piccolo.

Dato:

X <- c(0,0,0,8,6,2,0,0)
p <- c(0.406197174,0.088746395,0.025193306,0.42041479,0.03192905,0.018328576,0.009190708,0)

Potresti fare:

> p2 <- p + 1e-6
> chisq.test(X,p2)

        Pearson's Chi-squared test

data:  X and p2 
X-squared = 24, df = 21, p-value = 0.2931

Ma questo non è un risultato corretto. In ogni caso, si dovrebbe evitare di usare il test chi-quadro in questi casi limite. Un approccio migliore consiste nell'utilizzare un approccio bootstrap, calcolando una statistica di test adattata e confrontando quella dal campione con la distribuzione ottenuta dal bootstrap.

Nel codice R questo potrebbe essere (passo dopo passo):

# The function to calculate the adapted statistic.
# We add 0.5 to the expected value to avoid dividing by 0
Statistic <- function(o,e){
    e <- e+0.5
    sum(((o-e)^2)/e)
}

# Set up the bootstraps, based on the multinomial distribution
n <- 10000
bootstraps <- rmultinom(n,size=sum(X),p=p)

# calculate the expected values
expected <- p*sum(X)

# calculate the statistic for the sample and the bootstrap
ChisqSamp <- Statistic(X,expected)
ChisqDist <- apply(bootstraps,2,Statistic,expected)

# calculate the p-value
p.value <- sum(ChisqSamp < sort(ChisqDist))/n
p.value

Questo dà un valore p di 0, che è molto più in linea con la differenza tra osservato e atteso. Intendiamoci, questo metodo presuppone che i vostri dati siano tratti da una distribuzione multinomiale. Se questa ipotesi non regge, il valore p non regge.


1
Potresti riconsiderare la tua prima affermazione, che non credo sia corretta. Se per alcuni i e i conteggi osservati sono zero (che è meglio che siano), allora questo si riduce a un sottomodello. L'effetto è che il numero di gradi di libertà è ridotto di uno per ciascuno i tale che p i = 0 . Ad esempio, considera di test per omogeneità di un dado a sei facce (cioè p i = 1 / 6 per i 6 ). Ma supponiamo che (stranamente) decidiamo di registrare il numero di volte che i numeri 1 ,pi=0iipi=0pi=1/6i6 presentano. Quindi, il test chi-quadrato è ancora valido; sommiamo solo i primi sei valori. 1,,10
cardinale il

@cardinal: ho appena descritto i dati, dove il valore atteso è 0 ma l'osservato non deve essere. È ciò che ci ha dato OP (anche se in secondo luogo sembra davvero piuttosto irrealistico). Quindi aggiungere un po 'al valore p per renderlo altamente improbabile invece che impossibile aiuterà, ma anche in questo caso il chi-quadrato non è valido a causa della grande quantità di celle della tabella con conteggi inferiori a 5 (come dimostrato dal codice). Ho aggiunto la considerazione nella mia risposta, grazie per il puntatore.
Joris Meys,

sì, direi se , ma osservi un conteggio per quella cella, allora hai comunque problemi più seri tra le mani. :)pi=0
cardinale

4

Il test chi-quadro è buono fintanto che i conteggi previsti sono elevati, di solito sopra 10 va bene. sotto questo il tende a dominare il test. Una statistica esatta del test è data da:1E(xi)

ψ=ixilog(xinpi)

Dove è il conteggio osservato nella categoria i . i { rosso, blu, verde, giallo } nel tuo esempio. n è la dimensione del campione, pari a 55 nel tuo esempio. p i è l'ipotesi che desideri testare - il più ovvio è p i = p j (tutte le probabilità sono uguali). Puoi mostrare che la statistica chi-quadro:xiii{red, blue, green, yellow}n55pipi=pj

χ2=i(xinpi)2npi2ψ

In termini di frequenze osservate otteniamo:fi=xin

χ2=ni(fi-pi)2

ψ=nifilog(fipi)
χ2=ni(fipi)2pi

(Si noti che è effettivamente la divergenza KL tra l'ipotesi e i valori osservati). Si può essere in grado di vedere in modo intuitivo perché ψ è meglio per le piccole p io , perché non ha un 1ψψpi1piψ

H1H2piψ1ψ2exp(ψ1ψ2)H2H1exp(12χ1212χ22)

H2ψ2=χ22=0 , e quindi la statistica chi-quadro e psi indicano entrambi "quanto lontano" la misura perfetta per ogni singola ipotesi, da una che si adatta esattamente ai dati osservati.

χ22npi<10ψ


1
Sono abbastanza sicuro che le frequenze previste non possano essere maggiori di 10. :)
cardinale il

@cardinal - felice che questa fosse la tua obiezione - perché significa che il resto della mia risposta deve essere stato buono :).
probabilityislogic

Wow, spero di non ottenere la reputazione di essere così schizzinoso / scontroso.
cardinale il

1
ψ2ψχ2χ22ψ0χ22ψχ2
cardinale il

Inoltre, Agresti ( Categorical Data Analysis , 2nd ed., P. 80) afferma cheχ2 converge effettivamente in una distribuzione chi-quadrato più veloce di 2ψ, che sembra in contrasto con la tua raccomandazione. :)
cardinale il

3

Sì, è possibile verificare l'ipotesi nulla: "H0: prop (rosso) = prop (blu) = prop (verde) = prop (giallo) = 1/4" utilizzando un test chi quadrato che confronta le proporzioni del sondaggio (0.273 , ...) alle proporzioni previste (1/4, 1/4, 1/4, 1/4)


Just to confirm, it will also work with expected proportions that are unequal to each other?
hpy

4
the test won't be meaningful unless you know the full sample size. Proportions of 1.0 / 0.0 / 0.0 / 0.0 mean very different things if they are from a sample of size 1 as opposed a sample of size 100.
Aaron

Yes, I DO know the total sample size.
hpy

2

The test statistic for Pearson's chi-square test is

i=1n(OiEi)2Ei

If you write oi=Oin and ei=Ein to have proportions, where n=i=1nOi is the sample size and i=1nei=1, then the test statistic is is equal to

ni=1n(oiei)2ei

so a test of the significance of the observed proportions depends on the sample size, much as one would expect.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.