#-----------------------------------------------------# # # # LABORATORIO DI METODI STATISTICI # # PER LA FINANZA # # PROF F. BARTOLUCCI # # # # LAB-03 # #-----------------------------------------------------# ########################################################################## # Lezione 3: TEST DI IPOTESI ##########################################################################1 # # Indice: # # * importare i dati # * test di ipotesi sulla media di una popolazione # * test di ipotesi per il confronto tra le medie di due popolazioni # * test di ipotesi per la varianza di una popolazione # * test di ipotesi per il confronto tra le varianze di due popolazioni # ########################################################################## # --------------------------------------------------- # TEST SU UNA SINGOLA MEDIA # --------------------------------------------------- # Caricare dati dall'esterno # Il file voti.txt contiene gli esiti di una recente sessione di esame help(read.table) dati = read.table("voti.txt", header = TRUE) head(dati) voti = dati$voti # prime analisi sulla variabile VOTI mean(voti) var(voti) # 1) Verificare l'ipotesi che la media dei voti sia 20 contro ipotesi che sia minore # (assumendo varianza pari a 50, alpha = 0.05) # Ampiezza campionaria n = length(voti) # Media campionaria xm = mean(voti) # Costruiamo la statistica test z = (xm-20)/sqrt(50/n) # Calcoliamo il quantile (ipotesi alternativa unidirezionale) zal = - qnorm(1 - 0.05) # Risultato del test # 1) Regione di rifiuto z zal z < zal # 2) P-value pv = pnorm(z) pv pv < 0.05 # Conclusione: R H0 # 2) Verificare l'ipotesi che la media dei voti sia 20 contro ipotesi sia minore # (con varianza non nota, alpha = 0.05) # Varianza campionaria s2 = var(voti) # Calcoliamo la statistica test t = (xm-20)/sqrt(s2/n) # Calcoliamo il quantile (ipotesi alternativa unidirezionale) # Quanti gdl? gdl = n-1 tal = -qt(1 - 0.05, gdl) # Risultato del test # 1) regione di rifiuto t tal t < tal # 2) P-value pv = pt(t, gdl) pv pv < 0.05 # Conclusione: R H0 # ---------------------------------------------------- # Funzione t.test di R # ---------------------------------------------------- help(t.test) t.test(voti, alternative="less", mu=20) # ---------------------------------------------------- # Test su due medie # ---------------------------------------------------- # 1) Verificare l'ipotesi che la media dei voti sia uguale tra maschi (M) # e femmine (F) contro ipotesi sia diversa # (assumendo varianza nota e pari a 50 per M e 40 per F, alpha = 0.05) # Selezioniamo i sottocampioni voti1 = dati$voti[dati$sesso=="M"] voti2 = dati$voti[dati$sesso=="F"] # Calcoliamo le ampiezze campionarie n1 = length(voti1) n2 = length(voti2) # Calcoliamo le media campionarie xm = mean(voti1) ym = mean(voti2) # Calcoliamo il valore della statistica test numeratore = (xm-ym) denominatore2 = (50/n1) + (40/n2) z = numeratore / sqrt(denominatore2) # o pił velocemente z = (xm-ym) / sqrt((50/n1) + (40/n2)) # Calcoliamo il quantile (ipotesi alternativa bidirezionale) zal = qnorm(1 - 0.05/2) # Risultato del test: # 1) Regione di rifiuto z zal abs(z) > zal # 2) P-value pv = 2 * (1 - pnorm(abs(z))) pv pv < 0.05 # Conclusione: non R H0 # Verifichiamo l'ipotesi che la media dei voti sia uguale tra maschi (M) # e femmine (F) contro l'ipotesi che sia diversa # (con varianze non note ma uguali, alpha = 0.05) # Calcoliamo le varianze campionarie s21 = var(voti1) s22 = var(voti2) # Calcoliamo la varianza pooled s2p = ((n1-1)*s21 + (n2-1)*s22)/ (n1+n2-2) # Costruiamo la statistica test t = (xm-ym) / sqrt(s2p * (1/n1 + 1/n2)) # Calcoliamo il quantile gdl = n1 + n2 -2 tal = qt(1-0.05/2, gdl) # Risultato del test # 1) Regione di rifiuto t tal abs(t) > tal # 2) P value pv = 2 * (1 - pt(abs(t), gdl)) pv < 0.05 # Conclusione: non R H0 # Ripetiamo il test utilizzando funzione t.test di R t.test(voti1, voti2, mu = 0, alternative="two.sided", var.equal=TRUE) # ---------------------------------------------------- # Test su una singola varianza # ---------------------------------------------------- # 1) Verificare l'ipotesi che la varianza dei voti sia 50 # contro ipotesi sia minore (alpha = 0.05) # Calcoliamo l'ampiezza campionaria n = length(voti) # Calcoliamo la varianza campionaria s2 = var(voti) # Calcoliamo la statistica test # V = (n-1)s^2/sigma0 v = (n-1) * s2 / 50 # Calcoliamo il quantile val = qchisq(0.05,n-1) # Risultato del test # 1) Regione di rifiuto v val v < val # 2) P-value pv = 1-pchisq(v,n-1) pv pv<0.05 # Conclusione: non R H0 # --------------------------------------------------- # Test su due varianze # --------------------------------------------------- # 1) Verificare l'ipotesi che la varianza dei voti sia uguale # tra maschi (M) e femmine (F) contro ipotesi sia diversa (alpha = 0.05) # Selezionare i sottocampioni voti1 = dati$voti[dati$sesso=="M"] voti2 = dati$voti[dati$sesso=="F"] # Calcoliamo le ampiezze campionarie n1 = length(voti1) n2 = length(voti2) # Calcoliamo le varianze campionarie s21 = var(voti1) s22 = var(voti2) # Cacloliamo la statistica test f = s21 / s22 # Calcoliamo il quantile gdl1 = n1-1 gdl2 = n2-1 # Calcoliamo i quantili fUpal = qf(1 - 0.05/2, gdl1, gdl2) fLowal = qf(0.05 /2, gdl1, gdl2) # Risultato del test f fLowal fUpal f < fLowal | f > fUpal # Conclusione: non R H0 # Ripetiamo il test utilizzando funzione var.test di R help(var.test) var.test(voti1, voti2, alternative="two.sided")