Matematisk institutt STAT 200 Anvendt statistikk Universitetet i Bergen 11. februar 2004 Dataøvelse 2 Utregning av enkle observatorer A. Formål med øvelsen Denne øvelsen skal dels vise hvordan man kan utnytte SAS til å regne ut enkle beskrivende størrelser ved analyse av datasett. Spesielt er vi interessert i mål for spredning i et observasjonsmateriale. Øvelsen tar også sikte på å gi mer erfaring i bruk av de praktiske hjelpemidlene som er bygget inn i SAS-systemet. Oppsettene som skal brukes med styresetninger for SAS, er i hovedsak gitt i oppgaveteksten. Likevel er det meningen at man etter hvert også skal legge mer vekt på selve oppbygningen av slike sett med styresetninger. I tillegg skal øvelsen gi noe erfaring i bruk av resultater fra simulering. B. Hovedprinsipper for oppstilling av styresetninger for SAS ( SAS-programmet ) Et SAS-program er i prinsippet oppdelt i forskjellige steg. Disse stegene kan være av to typer: data-steg og proc-steg (se LSB side 6). Et data-steg (LSB side 8 og fra side 24 og utover) vil produsere et SASdatasett ved å følge de ulike spesifikasjonene nedover i steget. I kompliserte situasjoner vil det spesielle språket for SAS her minne mye om vanlige programmeringsspråk. Vi kan også lese inn data i et slikt steg, enten fra en ekstern fil skrevet på vanlig måte i et eller annet program, eller ved tall inkorporert i selve datasteget. Den første linjen i et data-steg vil være typen data <datasettnavn>. I proc-stegene (LSB side 170 og utover) vil vi benytte forskjellige prosedyrer som SAS inneholder. Dette er ulike deler av programsystemet som kan utføre forskjellige typer statistiske beregninger, avhengig av hva slags analyse vi ønsker. Et proc-steg innledes med setningen proc <prosedyrenavn>. Etter selve navnet på prosedyren kan det følge forskjellige opsjoner, avhengig av hvilken prosedyre vi vil bruke. Senere linjer kan angi mer generelle spesifikasjoner som gjelder for den aktuelle prosedyren. Legg merke til at hver setning i et SAS-program avsluttes med semikolon. Det er vanlig å avslutte hvert steg med en setning, som vil starte utførelsen av steget det er tale om. I visse situasjoner settes det også inn andre typer setninger i SAS, som ikke hører til data-steg eller proc-steg. Et eksempel er title -setningen, som vi bruker til å lage riktig overskrift på hver side i utskriften.
2.2 C. Behandling i SAS av data med manglende verdier SAS er formelt i stand til å behandle variable som vi ikke kjenner noen bestemt verdi for (se LSB side 5). Hvis slike manglende verdier inngår i videre regninger, vil de som oftest lede til nye resultater som også blir satt lik en manglende verdi (LSB side 67). I regneuttrykk er den vanlige betegnelsen i SAS for en manglende verdi et isolert punktum. Ved innlesning av data der de forskjellige variablene skal innta bestemte posisjoner, vil imidlertid et sett med blanke posisjoner også kode for manglende verdi. D. Oppslag i manualen for SAS på Internett SAS har en innebygget en mulighet med hjelp på menyene, men denne informasjonen krever at det er installert bestemte filer i systemet. Dessuten er hjelpen relativt begrenset. Det foreligger en annen mulighet, nemlig å bruke et omfattende sett med manualer for programsystemet. Det enkleste er å skaffe seg adgang til de aktuelle delene over Internett, f. eks. med Internet Explorer. Manualene omtales som SAS Online Documentation, eller forkortet onlinedoc. De ligger på adressen v8doc.sas.com/sashtml Adgangen kan være begrenset til autoriserte brukere av systemet, og man trenger i så fall en brukerkode og et passord for å komme inn. Konferer eventuelt med gruppelederen. Etter at man har fått kontakt med riktig adresse, blir det vist en todelt skjerm, der en kan holde oversikt over de ulike delene av programsystemet til venstre og virkelig se på manualsider til høyre. Det er mulig å arbeide seg innover i oversikten over delene av SAS ved å klikke på kryssene for de relevante seksjonene. I dette kurset er det stort sett snakk om Base SAS Software og SAS/STAT. Når en kommer inn på separate prosedyrer, blir det vist tilsvarende informasjon i høyre del av skjermbildet. Det går også an å lete etter bestemte begreper under Search oppe på venstresiden. E. Mer omfattende bruk av Editor-vinduet i SAS Det er ofte aktuelt å editere en tekst i Editor-vinduet. Start i slike tilfeller med å gjøre dette vinduet aktivt. Enkel editering kan fås ved å flytte markøren direkte i vinduet og skrive inn endringer fra tastaturet. Man kan også merke områder i teksten ved å plassere markøren et bestemt sted, klikke med venstre knapp, holde knappen nede og flytte markøren. Et slikt område kan man så f. eks. fjerne ved å trykke Delete-knappen. I andre tilfeller er det aktuelt å velge alternativet Edit på nestøverste linje i SAS. Her kommer det en rekke muligheter på menyen. F. eks. kan man finne bestemte bokstavkombinasjoner i teksten ved hjelp av Find. I en egen dialogboks som kommer opp på skjermen, skal man oppgi hvilken kombinasjon som er aktuell.
2.3 Man kan også bruke Replace til å erstatte en bokstavkombinasjon med en annen. Er et område merket, kan det fjernes ved Cut, eller det kan kopieres inn et annet sted ved hjelp av Copy. Selve plasseringen på det nye stedet skjer ved å klikke på Paste. F. Editering av SAS-datasett Som forklart i Øvelse 1 kan en i Explorer-vinduet åpne SAS-datasett som er definert i den aktuelle kjøringen, ved å klikke på et tilsvarende ikon. Verdiene i datasettet blir da vist i en egen editor kalt VIEWTABLE (se LSB side 44). Noen ganger er man bare interessert i å titte på dataene, og da passer det å bruke Browse Mode. Skal en forandre noen verdier i datasettet, må en gå over i Edit Mode. Hvis man klikker på Edit-menyen, blir det vist hvilken tilstand man er i, og det er enkelt å hoppe mellom tilstander. I Edit-tilstanden kan man klikke på bestemte celler i tabellen, og skrive inn nye verdier. Hvis man gjør en bestemt linje aktiv, kan man også fjerne linjen ved å klikke på Delete Row i Edit-menyen. Ellers kan man tilføye nye linjer ved Add Row. Det blir da bare vist en ny blank linje der det kan settes inn passende verdier. Etter at verdiene er skrevet inn, må man velge Commit New Row for virkelig å få linjen tilføyd datasettet. Når man er helt ferdig med editeringen, kan man klikke på Save under File-menyen og avslutte VIEWTABLE. G. Beskrivelse av den praktiske situasjonen som skal studeres Vi vil studere variasjonen av forskjellige karakterer hos vann-nymfearten Calopteryx maculata. I en populasjon er det valgt ut tilfeldig 26 hanindivider. Disse insektene har to vingepar. På hvert individ har vi målt totallengden av venstre forvinge og totallengden av venstre bakvinge. Dessuten har vi målt lengden av en bestemt svart flekk som forekommer på venstre bakvinge. Vi vil spesielt sammenligne variasjonsgraden av de ulike lengdemålingene. H. Øvelsesopplegg dataanalyse Dataene ligger på den ordinære filen nymfe.dat under katalogen d2 på samme sted på Internett der det lå filer for øvelse 1. De tre målingene for hvert individ er angitt på samme linje, med forvingelengden i posisjon 1 4, bakvingelengden i posisjon 6 9, og flekklengden i posisjon 11 14. Alle størrelser er i mm, og de er skrevet med desimalpunktum. Siden vingene var delvis ødelagt, er materialet ufullstendig. Manglende vingelengder er angitt som blanke posisjoner, mens manglende flekklengder er kodet med verdien 99.0. 1. Hent inn datafilen nymfe.dat til ditt eget lagringsområde. 2. Start opp SAS. Skriv inn følgende SAS-program i Editor-vinduet, med ditt
eget navn i tittelen: 2.4 title Oppgave 2a for Harald Haarfagre ; data lengder; infile \stat200\nymfe.dat input forvinge 1 4 bakvinge 6 9 flekk 11 14; if flekk=99.0 then flekk=. ; Her skal data-steget lese inn dataene fra den ytre filen nymfe.dat og lagre dem i det spesielle SAS-datasettet lengder (i biblioteket WORK). Istedenfor katalogbetegnelsen \stat200 må du skrive navnet på det stedet der du har lagt filen på eget område. Kommandoen som begynner med input, viser hvilke posisjoner de tre variablene er kodet i. Setningen som begynner med if, rekoder verdiene 99.0 for flekklengdene til koden for manglende verdi. 3. La SAS utføre kommandoene i dette programmet. Se på beskjedene som blir gitt i Log-vinduet om feil i SAS-programmet. 4. Gå tilbake til Editor-vinduet og titt på kommandoene. Oppsettet inneholder en elementær feil i struktureringen av de ulike beskjedene. Rett opp denne feilen og la SAS utføre programmet på nytt. 5. Forutsatt at kjøringen har gått riktig denne gangen, er det virkelig blitt generert et SAS-datasett med navn lengder. Finn frem til dette datasettet i Explorer-vinduet, og åpn det slik at alle verdiene blir vist i VIEWTABLE. Dessverre ble det ved selve innskrivingen av dataene gjort en del kodefeil: (i) De fire første linjene ble skrevet om igjen på begynnelsen av filen. (ii) Et individ med bakvingelengde lik 33.9 fikk feilaktig flekklengde. Riktig verdi av flekklengden skal være 11.8. (iii) Et individ som i virkeligheten har manglende forvingelengde, har fått verdien 77.0 kodet i dette feltet. (iv) Resultatene for et individ ble fullstendig uteglemt. De tre verdiene skulle her være henholdsvis 30.7, 30.6 og 10.2. 6. Sørg for at VIEWTABLE går over fra Browse -tilstand til Edit-tilstanden. Foreta så endringer i datasettet som retter opp feilene (i), (ii), (iii) og (iv). Lagr resultatet i SAS-datasettet lengder og avslutt VIEWTABLE. 7. Vi vil foreta en enkel statistisk beskrivelse av datasettet. Åpn et nytt, tomt Editor-vindu ved å klikke på valget View øverst i SAS og så velge Enhanced Editor. Skriv inn dette SAS-programmet: proc print data=lengder; proc freq data=lengder; table forvinge; proc univariate data=lengder stem; Dette programmet skal først skrive ut alle dataene (i Output-vinduet), så foreta
2.5 en frekvensopptelling av verdiene av forvingelengdene, og til slutt regne ut observatorverdier med proc univariate. Behandlingen med denne prosedyren skal samtidig produsere enkle boksplott og stengel-og-blad-diagram ( stem-and-leaf chart ; et slags histogram der observasjonene er avmerket med siffer) for de tre variablene. 8. Kjør dette SAS-programmet. Titt på resultatene som kommer i Output- og Log-vinduene. Antagelig har de to første prosedyrene gitt de ønskede resultatene, mens den siste har kommet ut med feil i Log-vinduet og ingen resultater i Output. 9. Gå tilbake til Editor-vinduet. Slett de delene av programmet som ga riktige resultater, nemlig for proc print og proc freq. For proc univariate vil vi finne ut hva vi skulle ha skrevet istedenfor opsjonen stem for å få stengel-ogblad-diagram. Gå inn på manualsidene for SAS på Internett, og finn frem til proc univariate under Base SAS Software. En må da først velge SAS Procedures Guide, så Procedures og deretter The UNIVARIATE Procedure. Den programsetningen det dreier seg om, er PROC UNIVARIATE Statement. Der står det beskrevet mange mulige opsjoner som gir forskjellige statistiske resultater, men let spesielt etter stem-and-leaf. Bla gjerne også i andre sider i nærheten som beskriver den aktuelle prosedyren. 10. Rett programmet for proc univariate og kjør det en gang til. Forhåpentligvis fås nå de ønskede resultatene i Output-vinduet. Send utskriften fra Outputog Log-vinduene til skriveren. I. Øvelsesopplegg simulering Som en separat del av øvelsen vil vi nå undersøke egenskaper ved gjennomsnitt og empirisk varians hvis vi betrakter datasett som bare består av 3 observasjoner, grovt sett tilsvarende målte forvingelengder. Undersøkelsen skal foregå ved simulering, der vi trekker observasjonene tilfeldig fra en normalfordeling med µ = 33.26 og σ = 1.75. Dette er tilnærmet estimatene vi fant i datasettet tidligere i øvelsen. 1. Avslutt SAS og start hele programmet opp på nytt. Skriv nå inn følgende SAS-program i Editor-vinduet: title Oppgave 2b for Harald Haarfagre ; data simulert; do i=1 to 5000; x1=33.26+1.75 rannor(123456); x2=33.26+1.75 rannor(0); x3=33.26+1.75 rannor(0); middel=(x1+x2+x3)/3; varians=var(x1,x2,x3); msd=2 varians/3; output; end;
2.6 proc univariate data=simulert; var middel varians msd; Foreta imidlertid følgende endringer: Bruk ditt eget navn i tittelen. Sett inn et vilkårlig tall, f. eks. din egen fødselsdag, istedenfor verdien 123456. Denne verdien blir brukt til å starte trekningen av tilfeldige verdier. Dette SAS-programmet vil generere et datasett med 5000 datalinjer, der hver linje omfatter de tre observasjonene x1, x2, x3 og de utregnede verdiene middel (gjennomsnittet av observasjonene), varians (vanlig empirisk varians, funnet ved den spesielle funksjonen var i SAS) og msd ( mean squared deviation eller gjennomsnittlig kvadratavvik, som tilsvarer varians i et datasett regnet med n i nevneren istedenfor n 1). Utskriften til slutt gir en sammenfatning av fordelingene for de tre størrelsene middel, varians og msd. 2. Kjør dette SAS-programmet. Hvis programmet går uten feil, send innholdet i Output- og Log-vinduene til skriveren. Hvis det er feil, rett opp programmet og kjør på nytt. J. Spørsmål som skal besvares ved innleveringen a) Vi vil sammenligne variasjonsgraden (spredningen) for de tre målte størrelsene forvingelengde, bakvingelengde og flekklengde. Drøft kort hvilke observatorer som kan være aktuelle, og sett opp i en tabell verdiene som disse observatorene har for de tre variablene. Finn for hver observator den størrelsen som viser mest variasjon og den størrelsen som viser minst variasjon. b) Bruk frekvenstabellen for forvingelengdene til å finne verdiene av medianen og de to kvartilene i datasettet. Kontroller at du får de samme verdiene som SAS har regnet ut. c) Hvis en bygger på vanlig statistisk teori, hva er forventningen og variansen til den stokastiske variabelen middel? Hva er forventningen til de de to variablene varians og msd? Vis at disse verdiene stemmer med sammenfatningen av fordelingene som vi fikk etter simuleringene.