Matematisk institutt STAT200 Anvendt statistikk Universitetet i Bergen 18. februar 2004 Dataøvelse 3 Histogram og normalplott A. Formål med øvelsen Denne øvelsen skal vise hvordan man med SAS-systemet kan konstruere histogram og normalplott for gitte datasett. Sammen med andre resultater produsert av SAS kan disse figurene gi grunnlag for å avgjøre om det er realistisk å tro at observasjonene kan følge en normalfordeling. Øvelsen krever at man på egen hånd kan sette opp litt større SAS-program som består av flere steg. Oppsettet for hvert enkelt steg er relativt enkelt, og støter man på spesielle problemer, kan man utnytte manualen for SAS på Internett (jfr. punkt D i øvelse 2). Leter en etter opplysninger om en bestemt prosedyre, f. eks. proc rank, er det ofte lurt å starte med hjelpesiden med Overview for denne prosedyren. Deretter kan en se på Procedure Syntax og sider for de bestemte statements som er tillatt. Av prosedyrene som er aktuelle i denne øvelsen, ligger proc rank, proc plot og proc univariate under Base SAS Software, mens proc gchart og proc gplot befinner seg i modulen SAS/GRAPH. Ellers kan programmene som ble anvendt i de to første øvelsene, i mange tilfeller brukes som forbilder for denne øvelsen. Den generelle oppbygningen av SASprogram blir i stor grad diskutert i The Little SAS Book (LSB). Av de aktuelle prosedyrene behandles proc univariate på side 170 i LSB og proc plot på side 116. B. Histogrammer med proc gchart Vanlige histogrammer for numeriske variable kan lett settes opp med proc gchart i SAS. Denne prosedyren har innebygget muligheter for konstruksjon av flere forskjellige typer diagrammer. I Øvelse 1 brukte vi proc gchart til å sette opp et histogram med vertikale søyler, ved hjelp av beskjeden vbar. I denne oppgaven skal vi isteden lage histogrammer med horisontale søyler. Fordelen er at vi samtidig får en frekvensopptelling langs kanten av plottet. Slike Horizontal bar charts fås ved å ta med en egen setning HBAR variable/opsjoner; For variable setter man inn en liste med navn på variable som er aktuelle i det SAS-datasettet som behandles.
3.2 Opsjoner angir i SAS spesielle tilleggsopplysninger til setningene som inngår i et SAS-program. I dette tilfellet er det særlig aktuelt å utnytte en mulighet for å spesifisere klasseinndelingen som skal brukes for kontinuerlige variable. Man kan her skrive MIDPOINTS= etterfulgt av en oppramsning av verdiene som skal representere midtpunktene i intervallene som benyttes. Særlig nyttig er det at man her kan angi lister av verdier med spesifikasjoner av typen 10 TO 100 BY 5 Dette er en forkortet skrivemåte for oppramsningen 10, 15, 20, 25,..., 95, 100. C. Konstruksjon av spredningsdiagrammer med proc plot Mange observasjonssett vil bestå av flere variable der det er knyttet spesiell interesse til graden av samvariasjon mellom bestemte variabelpar. Anta f. eks. at variablene betegnes som X og Y. Enkle spredningsdiagrammer som viser observasjonspunktene representert ved X- og Y -koordinatene i et vanlig aksesystem kan fås med proc plot. Som vanlig skal kallet av prosedyren i SAS-programmet innledes med en setning der man kan oppgi hvilket datasett det dreier seg om. Man kan så angi hvilke variable som skal inngå med en egen setning PLOT Y X; (eller med andre aktuelle variabelnavn istedenfor Y og X). Man kan gjerne inkludere flere slike PLOT-setninger etter hverandre i samme kall av proc plot. Selve genereringen av plottene kan startes med setningen RUN. Hele prosedyren vil bli avsluttet dersom den etterfølges av en ny prosedyre i oppsettet. Hvis utførelsen av proc plot er det siste steget, kan det være en fordel å avslutte prosedyren med en egen setning QUIT. Denne prosedyren gir bare enkle plott, der observasjonene vanligvis representeres ved bokstaver A, B (hvis to observasjoner faller nesten oppå hverandre) osv. Det finnes også en tilsvarende grafikkprosedyre proc gplot som gir punkter avmerket med bestemte tegn. D. Normalplott i SAS Normalplott kan lettest konstrueres i SAS ved bruk av proc univariate, som samtidig gir mye annen verdifull informasjon om et datasett. Vil man gjøre bruk av denne muligheten, skal man som opsjon angi PLOT i samme setning som kaller opp selve prosedyren. SAS skriver i så fall bl. a. ut et diagram med med selve normalplottet representert ved stjerner, mens den teoretisk riktige rette linjen som tilsvarer en normalfordeling blir angitt ved plusstegn. Man bør likevel være klar over at de observerte verdiene (som i teorien ellers blir betegnet med x (j) ), er avsatt langs y-aksen i diagrammet, mens verdiene y (j) bestemt ut fra den inverse fordelingsfunksjonen i standardnormalfordelingen blir avsatt langs x-aksen.
3.3 Er det imidlertid relativt mange observasjoner i datasettet som studeres, vil dette enkle plottet i proc univariate lett bli overfylt, så det er vanskelig å avgjøre visuelt om punktene tilnærmet ligger på en rett linje. I mange situasjoner vil det derfor være mer tilfredsstillende å konstruere normalplott på en annen måte, der man først foretar utregningen av de spesielle normalscorene y (j) for seg. Dette kan foregå ved proc rank. Denne prosedyren er i SAS primært ment for helt andre formål, men med opsjonene NORMAL=BLOM, NORMAL=TUKEY eller NORMAL=VW, vil den gjennomgå datasettet og regne ut normalscorene y (j) etter den oppgitte metoden. (Valget av metode har her svært liten praktisk betydning, med mindre datasettet er meget lite.) De nye verdiene vil vanligvis bli plassert i et nytt SAS-datasett. Det enkleste er å oppgi som vanlig med en opsjon DATA= hvilket datasett beregningene skal ta utgangspunkt i. Dessuten kan man her med en opsjon OUT= (etterfulgt av navnet på et nytt SAS-datasett) angi hvor resultatene skal lagres. Denne opsjonen skal tas med i den samme første setningen som kaller opp proc rank, på samme måte som opsjonen DATA=. Senere setninger (atskilt med komma) som hører med til samme prosedyre, kan angi hvilke variable utregningene skal utføres for (med VAR), og hvilke navn som skal knyttes til de beregnede normalscorene y (j) (med RANKS). Variabelrekkefølgen må passe sammen i de to oppramsningene etter VAR og RANKS. De opprinnelige variablene spesifisert etter VAR blir også lagret i det nye datasettet. Når man først har beregnet normalscore y (j) sammen med x (j) -verdiene, kan man lett utnytte proc plot til å skrive ut det egentlige normalplottet. Normalscorene kan også være nyttige for helt andre formål, f. eks. ved forsøk på å transformere observasjonene så datasettet tvinges til å bli normalfordelt. E. Testing av normalitet I proc univariate tilbyr SAS fire signifikanstester tilsvarende en nullhypotese som går ut på at et datasett av uavhengige observasjoner følger en normalfordeling. Testresultatene blir skrevet ut med opsjonen NORMAL i kallet på prosedyren. SAS viser verdien av testobservatoren og P -verdien for disse metodene: Shapiro-Wilks test, Kologorov-Smirnovs test, Cramer-von Mises test og Anderson- Darlings test. F. Beskrivelse av den praktiske situasjonen som skal studeres Vi har målt størrelsen av en rekke ertebelger produsert på planter tilhørende et bestemt erteslag. På filen belger.dat ligger det verdier som viser lengden og vekten av hver belg. Tallene er plassert slik på hver datalinje: I posisjonene 3 til 6 er belglengden angitt i cm med desimalpunktum, og i posisjonene 8 til 11 er vekten av belgen i gram oppgitt høyrejustert som heltall. Noen av datalinjene er merket i første posisjon med en stjerne, men dette tegnet skal eventuelt ignoreres. Manglende verdier for bestemte belger er kodet med 99.0 for belglengde og 9999
3.4 for belgvekt. Vi vil nå vurdere om variablene belglengde og belgvekt kan anses som normalfordelt. G. Øvelsesopplegg Det følgende opplegget bør leses gjennom på forhånd, før den praktiske kjøringen på PC. Oppsettene som skal brukes som SAS-program, bør skrives ned på papir så det er noenlunde klart hva som skal foregå. 1. Hent ned filen datafilen belger.dat fra katalogen d3 på det vanlige stedet på Internett. Start SAS. Les så denne filen inn i Editor-vinduet. Selv om dette ikke er noe SAS-program, kan vi likevel bruke vinduet for vanlig redigering. Titt på organiseringen av datasettet, med bruk av spesielle koder for manglende verdier. 2. Åpn så et nytt Editor-vindu. (Velg Enhanced Editor i menyen for View.) Her skal det nå skrives inn et SAS-program som for det første setter riktig tittel på hele kjøringen. Så skal det følge et data-steg som produserer et nytt SASdatasett på grunnlag av filen belger.dat. Angi hvilke variable som skal leses inn, med angivelse av posisjonene på linjene (jfr. datainnlesningen i Øvelse 2). Velg selv rimelige variabelnavn. Foreta riktig rekoding til manglende verdier for de to variablene (jfr. også oppsettet i Øvelse 2). Kjør dette SAS-programmet. 3. Hvis data-steget har gått igjennom uten feil, kan vi se på verdiene i det nye SAS-datasettet. Finn datasettet ved hjelp av Explorer-vinduet og se på verdiene i VIEWTABLE. Kontroller at de riktige tallene er satt inn i forhold det som sto i den opprinnelige filen. Lukk så VIEWTABLE. 4. Åpn enda et nytt Editor-vindu. Her skal det settes inn et SAS-program som først skal plotte sammenhørende belglengder og belgvekter i et spredningsdiagram. Så skal begge de aktuelle variablene behandles i proc univariate. Pass på å få med resultatene for normaltestene. Deretter skal det settes opp histogrammer (med horisontale søyler) for begge variablene. Sørg for at histogrammene får rimelige klasseinndelinger. I denne forbindelsen blir det oppgitt at belglengden varierer fra 4.5 til 7.3, mens belgvektene varierer fra 15 til 64. Kjør SAS-programmet. 5. I et nytt Editor-vindu skal man nå skrive inn et SAS-program som genererer normalscore for belglengder og belgvekter i et eget SAS-datasett. Så skal SAS sette opp de to tilsvarende normalplottene. Anvend også proc univariate på normalscorene for belglengdene for en ekstra kontroll av utregningene. Utfør dette SAS-programmet. 6. Titt ved hjelp av VIEWTABLE på datasettet med normalscore for å kontrollere at verdiene virker rimelige. Hvis alt ser riktig ut, kan utskriften fra Logvinduet, fra Output-vinduet og fra de to histogrammene (i grafikkvinduet) sendes til skriveren. Avslutt deretter SAS.
3.5 H. Spørsmål som skal besvares ved innleveringen Avgjør på grunnlag av utskriften om det kan være rimelig å beskrive fordelingene for belglengde eller belgvekt ved normalfordelinger. Utnytt i tillegg til diagrammene også forskjellige tallmessige resultater produsert av SAS.