domenica 16 novembre 2008

Confronto tra due proporzioni: metodo parametrico e non parametrico

Verifica di ipotesi tra due proporzioni: metodo parametrico (test Z su proporzioni) e non parametrico (test del chi quadro).

È possibile effettuare la verifica di ipotesi anche su dati che seguono una distribuzione binomiale. Consideriamo ad esempio il seguente problema.
Il proprietario di una società di scommesse vuole verificare se un suo clienti sta barando oppure no. Per fare questo vuole confrontare il numero di successi del suo cliente col numero di successi di un suo dipendente, del quale ha la certezza che non bara. In un mese di tempo, il suo dipendente effettua 74 scommesse e ne vince 30; il suo cliente nello stesso arco di tempo effettua 103 scommesse, vincendone 65. Il suo cliente è un baro, oppure no?


Un problema del genere può essere risolto in due diversi modi: utilizzando un metodo parametrico, e uno non parametrico.

  • Risoluzione col metodo parametrico: test z.

Si ricorre a un test z nel caso in cui si possano fare le seguenti due assunzioni: la probabilità comune di successo è approssimabile a 0.5, e il numero di giocate è molto elevato (assunzioni indispensabili per poter approssimare una binomiale ad una Gauss). Supponiamo che questo sia il nostro caso. In R non esiste una funzione per calcolare il valore di z; perciò riprendiamo la formula matematica, e scriviamo la nostra funzione:



> z.prop = function(x1,x2,n1,n2){
+ numeratore = (x1/n1) - (x2/n2)
+ p.comune = (x1+x2) / (n1+n2)
+ denominatore = sqrt(p.comune * (1-p.comune) * (1/n1 + 1/n2))
+ z.prop.ris = numeratore / denominatore
+ return(z.prop.ris)
+ }


La funzione z.prop calcola il valore di z, ricevendo in input il numero di successi (x1 e x2), e il numero di giocate totale (n1 e n2). Applichiamo la funzione appena scritta coi dati del nostro problema:

> z.prop(30, 65, 74, 103)
[1] -2.969695


Abbiamo ottenuto un valore di z superiore al valore di z-tabulato (1.96), il che ci porta a concludere che il cliente che il direttore stava controllando è effettivamente un baro, in quanto le sue probabilità di successo sono più elevate rispetto ad un utente che non bari al gioco.

  • Risoluzione col metodo non parametrico: il test del chi-quadro.

Supponiamo adesso di non poter fare alcuna assunzione sui dati del problema, e quindi di non poter approssimare la binomiale ad una Gauss. Risolviamo il problema con il test del chi-quadro applicato ad una tabella di contingenza 2x2. In R esiste la funzione prop.test che fa al caso nostro.

> prop.test(x = c(30, 65), n = c(74, 103), correct = FALSE)

2-sample test for equality of proportions without continuity
correction

data: c(30, 65) out of c(74, 103)
X-squared = 8.8191, df = 1, p-value = 0.002981
alternative hypothesis: two.sided
95 percent confidence interval:
-0.37125315 -0.08007196
sample estimates:
prop 1 prop 2
0.4054054 0.6310680


La funzione prop.test calcola il valore del chi-quadro, dati i valori dei successi (contenuti nel vettore x) sul numero totale di tentativi (contenuti nel vettore n). I vattori x ed n possono anche essere dichiarati esternamente, e poi venir richiamati come di consueto: prop.test(x, n, correct=FALSE).

Nel caso di campioni piccoli (basso valore di n), si deve specificare correct=TRUE, che nel calcolo del chi-quadro modifica la formula in base alla continuità di Yates:

> prop.test(x = c(30, 65), n = c(74, 103), correct=TRUE)

2-sample test for equality of proportions with continuity correction

data: c(30, 65) out of c(74, 103)
X-squared = 7.9349, df = 1, p-value = 0.004849
alternative hypothesis: two.sided
95 percent confidence interval:
-0.38286428 -0.06846083
sample estimates:
prop 1 prop 2
0.4054054 0.6310680


In entrambi i casi, abbiamo ottenuto p-value minore di 0.05, che ci porta a rifiutare l’ipotesi di uguaglianza delle probabilità. In conclusione, il cliente è un baro. Per conferma confrontiamo il valore chi-quadro-calcolato con il valore chi-quadro-tabulato, che calcoliamo in questo modo:

> qchisq(0.950, 1)
[1] 3.841459


La funzione qchisq calcola il valore del chi-quadro in funzione di alpha e dei gradi di libertà. Poiché chi-quadro-calcolato è maggiore di chi-quadro-tabulato, concludiamo col rifiutare l’ipotesi H0 (come già affermato dal p-value, e dal test parametrico).

NOTA
Da notare è che il valore di Z-calcolato nel primo z-test è esattamente pari alla radice quadrata del valore del chi-quadro calcolato nel prop.test senza la correzione di Yates. Questo non è certo un caso. Per applicare il z test abbiamo supposto che il numero di prove fosse sufficientemente grande per approssimare la binomiale alla Gauss. Nell'esercizio proposto, questo è vero, e proprio per questa ragione abbiamo la uguaglianza dei valori ottenuti (zeta-quadro = chi-quadro). Se il numero delle prove fosse stato più piccolo, avremmo eseguito il test del chi-quadro con la continuità di Yates, ottenendo come risultato un chi-quadro che non è pari al quadrato di zeta.
In altre parole, quando il numero di prove è sufficientemente elevato, non è necessario effettuare il test del chi-quadro (senza la correzione di Yates), perchè possiamo tranquillamente assumere che la binomiale è approssimabile alla Gauss (e difatti i valori sono uguali), procedendo pertanto con un z-test.
Viceversa, in caso di un numero di prove ridotto, bisogna ricorrere al test del chi-quadro con la correzione di Yates, senza effettuare uno zeta-test.

3 commenti:

  1. ciao tutto molto utile!
    ma se io ho un test con ipotesi alternativa unilaterale lo posso fare col chi quadro? io ho provato (mettendo alternative=c("greater)) ma alcuni dei test mi danno un p-value significativo ma il chi quadro inferiore al valore tabulato. come mi devo muovere?

    RispondiElimina