Datorövning 5 Statistisk teori med tillämpningar Hypotestest i SAS Syfte Lära sig beräkna konfidensintervall och utföra hypotestest för: 1. Populationsmedelvärdet, µ. 2. Skillnaden mellan två populationsmedelvärden, µ 1 µ 2. 3. Populationsproportionen, p. 4. Skillnaden mellan två populationsproportioner, p 1 p 2. Exempel 1. Populationsmedelvärdet, µ Exemplet som vi ska använda för att visa hur man kan ta fram ett konfidensintervall och utföra hypotestest för µ kommer från MS boken (övning 8.86 sidan 432). Datafilen som vi läser in innehåller pris på olika typer av tonfisk. data ex886 ; input vatten olja ; datalines ; 0.99 2.56 1.92 1.92 1.23 1.30 0.85 1.79 0.65 1.23 0.69 0.62 0.60 0.66 0.53 0.62 1.41 0.65 1.12 0.60 0.63 0.67 0.67. 0.60. 0.66. ; proc print data = ex886 ; 1
Genom att använda proc means-kommandot och ange "mean", "std", "alpha=0.05" och "clm" låter vi SAS räkna ut medelvärdet, standardavvikelsen och ett 95% konfidensintervall för alla variabler i datafilen. Om vi bara är intresserade av en av variablerna lägger vi till, i en ny rad, "var" och namnet på variabeln. proc means data = ex886 mean std alpha =0. 05 clm ; var vatten ; Observera att proc means räknar ut ett konfidensintervall för litet urval (Small sample Confidence interval) enligt formeln ȳ ± t α/2 ( s n ), df = n 1 Vi kan sen använda proc ttest till att testa: H 0 : µ = 1 H a : µ < 1 proc ttest data = ex886 h0 =1 alpha =0. 05 sides = L; var vatten ; Vi anger "sides=l", där L står för lower, för att låta SAS utföra ensidigt test med H a :µ < 1. Dubbelsidigt test får man genom att välja "sides=2" och testet med mothypotes H a :µ > 1 genom att sätta "sides=u". Vi får utskriften The TTEST Procedure Variable : vatten N Mean Std Dev Std Err Minimum Maximum 14 0. 8964 0. 3995 0. 1068 0. 5300 1. 9200 Mean 95% CL Mean Std Dev 95% CL Std Dev 0. 8964 - Infty 1. 0855 0. 3995 0. 2896 0. 6437 DF t Value Pr < t 13-0.97 0. 1749 Utskriften ger oss olika mått. Intressant för hypotestestning för µ är det som står i raden längst ner. Teststatistikan är t = ȳ µ 0 s/ = 0.97 och jämförelse med t-fördelningen med n df=13 ger p-värdet 0.1749. Vad innebär p-värdet? Kan man förkasta H 0? 2
2. Skillnaden mellan två populationsmedelvärden, µ 1 µ 2 Vi fortsätter med samma exempel. Vi tar datafilen ex886 och sätter i samma kolumn värden för både tonfisk i vatten och tonfisk i olja. För att hålla reda på de olika kategorierna lägger vi till en ny variabel, grupper. data Tonfisk ; set ex886 ; if vatten ne. then do; pris = vatten ; grupp =1; output ; end ; if olja ne. then do; pris = olja ; grupp =2; output ; end ; keep pris grupp ; Nu kan vi använda proc ttest till att låta SAS beräkna ett konfidensintervall för µ 1 µ 2 och utföra hypotestestet H 0 : µ 1 = µ 2 H a : µ 1 µ 2 proc ttest data = tonfisk alpha =0. 1 sides =2; var pris ; class grupp ; Utskriften ger oss många olika mått. Det som är intressant för hypotestestning av µ 1 µ 2 har vi tagit fram i tabellen nedan The TTEST Procedure grupp Method Mean 90% CL Mean Std Dev Diff (1-2) Pooled 0. 2508-0.1213 0. 6230 0. 5389 Method Variances DF t Value Pr > t Pooled Equal 23 1. 16 0. 2598 Observera att proc ttest-kommandot beräknar konfidensintervallet för ett litet urval (small sample confidenveinterval) och använder formeln (ȳ 1 ȳ 2 ) ± t α/2 s p (1/n1 + 1/n 2 ), df = n 1 + n 2 2. Teststatistikan beräknas sen enligt formeln T = ȳ 1 ȳ 2 0 s p (1/n1 + 1/n 2 ) Jämförelse med t-fördelningen med df=23 ger p-värdet 0.2598. Ni kan jämföra värdet på utskriften med egna uträkningar. 3
3. Populationsproportionen, p Exemplet som vi ska använda för att visa hur man kan ta fram ett konfidensintervall och utföra hypotestest för p kommer från MS boken (övning 10.57 sidan 517). Andelen personer som förnyar sitt abonnemang för ett nyhetsmagasin har visat sig vara 60% de senaste åren. För att testa om andelen har förändrats dras ett urval om 200 observationer. 108 personer i urvalet vill förnya sitt abonnemang. För att skatta p och testa H 0 : p = 0.6 H a : p 0.6 kan man använda proc freq-kommandot. data ex1057 ; input renew $ count ; datalines ; 1 108 2 92 ; proc freq data = ex1057 ; tables renew / alpha =0. 05 binomial ( level =1 p =0. 6); weight count ; I output fönstret får vi utskriften. The FREQ Procedure Cumulative Cumulative renew Frequency Percent Frequency Percent ------------------------------------------------------------- 1 108 54. 00 108 54. 00 2 92 46. 00 200 100. 00 Binomial Proportion for renew = 1 -------------------------------- Proportion 0. 5400 ASE 0. 0352 95% Lower Conf Limit 0. 4709 95% Upper Conf Limit 0. 6091 Exact Conf Limits 95% Lower Conf Limit 0. 4683 95% Upper Conf Limit 0. 6105 Test of H0: Proportion = 0.6 ASE under H0 0. 0346 Z -1.7321 One - sided Pr < Z 0. 0416 Two - sided Pr > Z 0.0833 Sample Size = 200 4
Vi ser i utskriften att proportionen som vill förnya sitt abonnemang blev 0.54. De två första konfidensintervallgränserna är framräknade med formeln ˆp ± z α/2 ˆpˆq n De mått på teststatistikan vi är intresserade av är de tre sista; "Z", "one sided" och "two sided". "Z" anger det observerade z-värdet från testet. Det vill säga, SAS använder formeln Z = ˆp p 0 p0 q 0 /n. "One sided" och "two sided" anger p-värdet för ett enkelsidigt test H 0 : p = 0.6 respektive dubbelsidigt test H a : p < 0.6 H 0 : p = 0.6 H a : p 0.6 Vi skall i uppgiften testa om p 0.6 därför bör vårt beslut tas genom att titta på p-värdet 0.0833. Ska vi förkasta H 0? 4. Skillnaden mellan två populationsproportioner, p 1 p 2 Exemplet som vi ska använda för att visa hur man kan ta fram ett konfidensintervall och utföra hypotestest för p kommer från MS boken (exempel 8.8 sidan 413). Vi har ett urval om 50 kylskåp av typ A varav 12 är felaktiga och 60 kylskåp av typ B dras varav 12 är felaktiga. Vi vill beräkna et 98% konfidensintervall för p 1 p 2 och testa, (med signifikansnivå α = 0.02) H 0 : p 1 = p 2 H a : p 1 p 2 Man kan använda proc freq-kommandot även här till att utföra hypotestestet. data ex88 ; input status $ brand $ count ; datalines ; fail A 12 work A 38 fail B 12 work B 48 ; proc freq data = ex88 ; tables brand * status / alpha =0. 02 riskdiff ( equal ); weight count ; 5
Vi får utskriften The FREQ Procedure Statistics for Table of brand by status Column 2 Risk Estimates ( Asymptotic ) 98% ( Exact ) 98% Risk ASE Confidence Limits Confidence Limits -------------------------------------------------------------- Row 1 0. 7600 0. 0604 0. 6195 0. 9005 0. 5923 0. 8847 Row 2 0. 8000 0. 0516 0. 6799 0. 9201 0. 6536 0. 9049 Total 0. 7818 0. 0394 0. 6902 0. 8734 0. 6763 0. 8662 Difference -0.0400 0. 0795-0.2249 0. 1449 Proportion ( Risk ) Difference Test H0: P1 - P2 = 0 Proportion Difference -0.0400 ASE ( Sample ) 0. 0795 Z -0.5034 One - sided Pr < Z 0. 3074 Two - sided Pr > Z 0.6147 Sample Size = 110 Vi ser i utskriften att ˆp 1 ˆp 2 = 0.04. Konfidensintervallet för skillnaden, "Difference, "är framräknad med formeln ( ˆp 1 ˆp 2 ) ± z α/2 ˆp1 ˆq 1 n 1 + ˆp 2 ˆq 2 n 2 De mått på teststatistikan vi är intresserade av är de tre sista; "Z", "one sided" och "two sided". "Z" anger det observerade z-värdet från testet. Det vill säga, SAS använder formeln Z = ˆp 1 ˆp 2. ˆp 1 ˆq 1 n 1 + ˆp 2 ˆq 2 n 2 Vi skall i uppgiften testa om p 1 p 2 därför bör vårt beslut tas genom att titta på p-värdet 0.6147. Ska vi förkasta H 0? Övningar Lös följande uppgifter ur MS med hjälp av SAS 10.33 10.54 10.71 10.75 6