Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs TE/RC Datorövning 1 Syfte: 1. Lära sig läsa in data i SAS 2. Importera data från Excel 3. Lära sig skriva ut data med proc print 4. Kunna orientera sig mellan de olika fönstren När vi vill skapa ett nytt data-set måste vi skriva kod i SAS. All kod skrivs in i fönstret Editor. Koden som omfattar inläsning av data kallar vi data-steget. Detta på grund av att detta steg börjar med kommandot data. Alla procedurer i SAS, inklusive data-steget avslutas alltid med run. Vad som måste anges emellan data och run är: Vad data-setet ska heta Vilka variabler som finns Samt variablerna, observationerna Exempel på hur ett data-steg kan se ut: data work.langdalder input namn$ langd alder Karin 162 28 Daniel 192 33 Maria 173 21 Anna 155 36 Bertil 181 37 Här har vi fem personer som vi noterat längd och ålder på. Dessa observationer vill vi spara i ett data-set som kallas langdalder. Här ser vi att varje rad I ett steg skall avslutas med ett semikolon (). Dock inte efter de radvisa observationerna, där sätter vi ett semikolon på en ny rad efter den sista observationen. För att läsa in data använder vi data kommandot, input där vi ger våra variabler namn (namn$, langd och alder), datalines för att tala om för SAS att våra observationer kommer att läsas in och till sist skriver vi run för att SAS skall köra koden som vi skrivit. När vi kör den här koden kommer vi inte att få någon output utan SAS lagrar bara våra variabler och observationer. SAS namnet består av två delar, i detta exempel först work som är namnet på biblioteket (max 8 positioner), där vi sparar datat. Efter biblioteksnamnet sätter vi en punkt och sedan filnamnet. I detta exempel, filnamnet langdalder (SAS kan inte skriva å, ä eller ö). Biblioteksnamnet work är en tillfällig plats som rensas varje dag. Man kan skapa egna bibliotek som man själv namnger. I SAS menyn finns en ikon New Library där man kan skapa ett nytt bibliotek.
Att skriva ut data i output gör vi genom processen proc print. Koden för exemplet ovan är: proc print data=work.langalder Detta är en av de många procedurer som finns i SAS. Koden för de olika procedurerna måste börja med proc. Efter att vi angett vilken procedur vi vill köra i SAS (här proc print ) skall vi tala om vilket dataset vi gör det för. data = work.langdalder talar om att vi vill jobba med filen langdalder. Skriver vi ut denna kod i SAS får vi i output-fönstret följande: The SAS System 16:57 Thursday, February 16, 2012 1 Obs namn langd alder 1 Karin 162 28 2 Daniel 192 33 3 Maria 173 21 4 Anna 155 36 5 Bertil 181 37 Det går även att läsa in observationerna horisontellt. Vi använder två snabel- a (at-tecken), @@, efter variabelnamnen, detta för att ange att observationerna kommer att läsas in på en rad. Vad som är viktigt är att variabelvärdena följer samma ordning som variabelnamnen. data work.langdalder input namn$ langd alder @@ Karin 162 28 Daniel 192 33 Maria 173 21 Anna 155 36 Bertil 181 37 Vi kan manipulera variabelvärdena direkt i data-steget, utan att behöva läsa in observationerna mer än en gång. Vi har en variabel X, som har tio värden, ett till tio. Vi har också en variabel X 2, som har motsvarande tio värden, ett, fyra, nio,, hundra. Vi kan göra det enkelt utan att behöva skriva alla värden på X 2 genom att skriva på följande sätt: På raden under input anger vi namnet på den nya variabeln xsquare och vad den skall vara lika med. Observera att X 2 skrivs som x**2 i SAS. data work.number input x @@ xsquare = x**2 1 2 3 4 5 6 7 8 9 10 /*proc print data=work.number */ Observera de /* som står före proc print och de */ som står efter run, dessa tar bort proc print när vi kör koden ovan, dvs. number skrivs inte ut.
VI kan lägga till ytterligare variabler som innehåller X. Vi lägger till logaritmen för X. data work.number input x @@ xsquare = x**2 logx = log(x) 1 2 3 4 5 6 7 8 9 10 Man kan även låta data-steget skriva variabelvärdena ett till tio, vi använder do och end kommandon. Koden blir: data work.number do x = 1 to 10 by 1 xsquare=x**2 logx=log(x) output work.number end proc print data=work.number med koden ovan skapar vi variabeln X som går från ett till tio med steglängd ett. Därefter talar vi om vad vi vill göra och det är att beräkna värden på x 2 och logx för varje x-värde. Efter output anger vi att vi vill spara dessa värden i work.number. Varje do måste avslutas med ett end. I output får vi följande: The SAS System 16:57 Thursday, February 16, 2012 2 Obs x xsquare logx 1 1 1 0.00000 2 2 4 0.69315 3 3 9 1.09861 4 4 16 1.38629 5 5 25 1.60944 6 6 36 1.79176 7 7 49 1.94591 8 8 64 2.07944 9 9 81 2.19722 10 10 100 2.30259 Har man många observationer som skall registreras och värdena dessutom återkommer kan det underlätta att skapa en variabel som anger frekvensen för hur många gånger ett visst utfall inträffar. Vi har undersökt hur många av studenterna på en viss skola som röker. Vi har även undersökt deras föräldrars rökvanor. Utfallet blev: Studenter som röker Studenter som inte röker Båda föräldrarna röker 400 1380 En av föräldrarna röker 416 1823 Ingen av föräldrarna röker 188 1168
När vi har skapat tabellen ovan behöver vi inte registrera ett utfall i taget (vilket skulle ta lång tid). Vi kan läsa in på följande sätt: data work.smoke input student$ parents$ frequency smoke both 400 not_smoke both 1380 smoke one 416 not_smoke one 1823 smoke none 188 not_smoke none 1168 proc print data=work.smoke Variabeln student har två utfall, smoke och not_smoke. Variabeln parents har tre utfall, both, one samt none. Detta ger 6 kombinationer för vilka vi registrerar frekvensen. Frekvenserna skrivs in under variabelnamnet frequency. Vi får följande utskrift: The SAS System 16:57 Thursday, February 16, 2012 3 Obs student parents frequency 1 smoke both 400 2 not_smok both 1380 3 smoke one 416 4 not_smok one 1823 5 smoke none 188 6 not_smok none 1168 Att importera data från Excel kan göras direkt från en sparad excel-fil, i detta exempel, filen langd.xls genom att skriva koden: proc import out=work.langd datafile = "C:\Users\Tomas\Documents\SAS statistikens grunder\datövn.1\langd.xls" dbms = excel replace getnames = yes proceduren vi använder kallas proc import. Det första vi anger är namnet på filen i SAS, i detta exempel work.langd. På nästa rad efter datafile anges var på datorn filen som skall importeras ligger (sökvägen). Spar ner filen på datorn och notera sökvägen. Sökvägen i koden ovan ("C:\Users\Tomas\Documents\SAS statistikens grunder\datövn.1\langd.xls") är bara ett exempel. Därefter kommer kommandot dbms där vi anger att det är en excel-fil vi vill importera. Efter det skriver vi replace om det är så att vi vill skriva över en redan befintlig SAS-fil med detta namn. Därefter kommer kommandot getnames vilket innebär att vi tar med oss variabelnamnen från Excel till SAS. Vi avslutar som vanligt med ett run.
Kom ihåg att vara uppmärksam vad som står i loggen. Om det är något fel med koden man skrivit så syns det i loggen Blå text betyder att koden var ok Grön text betyder en varning Röd text betyder att något är fel Uppgifter Basuppgifter 1. För att testa prestanda hos en ny bilmodell har ett urval om tio bilar provkörts och bensinförbrukningen har uppmätts. Följande värden (liter per mil) erhölls: 0.76 0.74 0.72 0.75 0.72 0.77 0.78 0.73 0.74 0.71 Skapa ett data-set i SAS och använd proc print för att titta på data-setet 2. Manipulera data-setet ovan för att göra en ny variabel som Anger bensinförbrukningen i centiliter (multiplicera med 100). Skriv ut data-setet i output. 3. Gå till hemsidan (http://gauss.stat.su.se/gu/sgk.shtml) och ladda ner filen rokdata.xls. Spara filen på datorn och notera sökvägen. Använd proc import för att importera excel-filen till SAS. Extra uppgifter 4. En person simmar 1800 meter i en simbassäng. Efter simturen registreras hans tid (minuter) och puls (slag/minut). Han har gjort 16 träningspass i simbassängen med följande resultat Obsv. 1 2 3 4 5 6 7 8 Tid 34.12 35.72 34.72 34.05 34.13 35.72 36.17 35.57 Puls 152 124 140 152 146 128 136 144 Obsv. 9 10 11 12 13 14 15 16 Tid 35.37 35.57 35.43 36.05 34.85 34.70 34.75 33.93 Puls 148 144 136 124 148 144 140 156 Läs in datat och granska det sedan med proc print. 5. För att studera könsskillnader i konsumentbeteende fick hundra slumpmässigt utvalda kvinnor och hundra slumpmässigt utvalda män svara på frågan om vilken av fyra nämnda butiker de helst besöker. Följande resultat erhölls: Clas Ohlson H&M Teknikmagasinet MQ Kvinnor 11 57 6 26 Män 46 4 32 18 Läs in datat i SAS. Filen skall innehålla tre variabler. Granska datat med hjälp av proc print.