Statistikens grunder och 2, GN, hp, deltid, kvällskurs TE/RC Datorövning 3 Syfte:. Lära sig göra betingade frekvenstabeller 2. Lära sig beskriva en variabel numeriskt med proc univariate 3. Lära sig rita histogram 4. Lära sig rita diagram med avseende på en annan variabel. Lära sig beskriva en variabel numeriskt med avseende på en annan variabel För att beskriva en kategorisk variabel numerisk använder vi frekvenstabeller. Om vi vill beskriva en variabel med avseende på en annan variabel kan vi göra det med i SAS med proc freq kommandot. Vi använder filen rokdata.xls från hemsidan(ni laddade ner den i upg. 3, datorövn. ). För att göra en frekvenstabell för variabeln rökvana betingat på kön (betingad korstabell) använder vi koden: proc freq data=work.rokdata; tables smoke; by gender; Vi får utskriften: ---------------------------------------------- gender= -------------------------------------- The FREQ Procedure smoke Cumulative Cumulative smoke Frequency Percent Frequency Percent ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 4 43.7 4 43.7 8 6.2 32. ---------------------------------------------- gender= ------------------------------------- The FREQ Procedure smoke Cumulative Cumulative smoke Frequency Percent Frequency Percent ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 3.7 3.7 8 64.29 28. Givet att gender= (kvinna) och smoke= (röker ej) ser vi att 4 av 32 kvinnor inte röker. Givet att gender= (man) och smoke= (röker) ser vi att 8 av 28 män röker
Vill vi göra en frekvenstabell för variabeln kön betingat på rökvana (betingad korstabell) använder vi koden: proc freq data=work.rokdata; tables gender; by smoke; När vi kör denna kod får vi ingen utskrift. I loggen ser vi: ERROR: Data set WORK.ROKDATA is not sorted in ascending sequence. The current BY group has smoke = and the next BY group has smoke =. NOTE: The SAS System stopped processing this step because of errors. NOTE: There were 2 observations read from the data set WORK.ROKDATA. NOTE: PROCEDURE FREQ used (Total process time): real time. seconds cpu time. second Vi får ett felmeddelande om att datamaterialet måste vara sorterat för den variabel vi vill betinga på (by smoke). För att sortera datat använder vi koden: proc sort data=work.rokdata; by smoke; Resultatet blir: ---------------------------------------------- smoke= --------------------------------------- The FREQ Procedure gender Cumulative Cumulative gender Frequency Percent Frequency Percent ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 4 8.33 4 8.33 4.67 24. ---------------------------------------------- smoke= --------------------------------------- The FREQ Procedure gender Cumulative Cumulative gender Frequency Percent Frequency Percent ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 8. 8. 8. 36. Av icke-rökare (smoke=) är det 4 kvinnor (gender=) av totalt 24. 2
Vi har lärt oss att använda proc means för att beskriva en variabel numerisk. Om vi vill ha en utförligligare numerisk beskrivning kan man använda proc univariate. Vi tar filen langdalder (datorövn.). Vi vill numeriskt beskriva variabeln langd. Skulle vi vilja beskriva båda (alla) variablerna i filen så behöver vi inte precisera ( ) variablerna dvs. vi utelämnar rad 2 i koden. Koden blir: proc univariate data=work.langdalder; var langd; och utskriften för variabeln langd blir: The UNIVARIATE Procedure Variable: langd Moments N Sum Weights Mean 72.6 Sum Observations 863 Std Deviation 4.7499 Variance 27.3 Skewness.627726 Kurtosis -.2442436 Uncorrected SS 49823 Corrected SS 869.2 Coeff Variation 8.4636 Std Error Mean 6.924989 Basic Statistical Measures Location Variability Mean 72.6 Std Deviation 4.74 Median 73. Variance 27.3 Mode. Range 37. Interquartile Range 9. Tests for Location: Mu= Test -Statistic- -----p Value------ Student's t t 26.88 Pr > t <. Sign M 2. Pr >= M.62 Signed Rank S 7. Pr >= S.62 Quantiles (Definition ) Quantile Estimate % Max 92 99% 92 9% 92 9% 92 7% Q3 8 % Median 73 2% Q 62 % % % % Min 3
Percent The UNIVARIATE Procedure Variable: langd Bland annat ger proc univariate Antalet observationer Medelvärde, median, typvärde Standardavvikelse och varians Standardfel + en hel del ytterligare Extreme Observations ----Lowest---- ----Highest--- Value Obs Value Obs 4 4 62 62 73 3 73 3 8 8 92 2 92 2 För att beskriva en kontinuerlig variabel grafiskt används ofta histogram. Vi ritar ett histogram i SAS med proc univariate. Vi använder samma fil igen (work.langdalder). Vi ritar för variabeln alder. Koden blir: proc univariate data=work.langdalder; histogram alder; med följande resultat: 4 3 3 2 2 22. 27. 32. 37. alder 4
Percent I exemplet ovan så bestämmer SAS klassindelningen automatiskt och anger det mittersta värdet, den s.k. midpoint, för varje stapel på x-axeln. Klassindelningen går att ändra och midpoints kan bytas mot endpoints dvs. värdena för staplarnas början och slut. Koden blir: proc univariate data=work.langdalder; histogram alder / endpoints = 2 to 4 by 4; 4 3 3 2 2 2 24 28 32 36 4 alder Vi väljer startålder 2 och slutålder 4 med en stapelbredd av 4 år. Vad man väljer beror på hur datamaterialet ser ut. För att rita ett cirkel- och ett stapeldiagram för en variabel betingad på en annan variabel, vi använder data-setet (filen) rokdata, från datorövn../datorövn.2. Koden blir: proc gchart data=work.rokdata; pie smoke / discrete; vbar smoke / discrete; by gender; quit; OBS! om datamaterialet inte är sorterat efter variabeln vi anger efter kommandot by måste det sorteras först (se exemplet betingad korstabell, sid 2, datorövn 3).
graferna blir: gender= FREQUENCY of smoke 4 8 gender= FREQUENCY of smoke 8 6
gender= FREQUENCY 8 7 6 4 3 2 9 8 7 6 4 3 2 smoke gender= FREQUENCY 8 7 6 4 3 2 9 8 7 6 4 3 2 smoke 7
Skulle man vilja ange procent istället för frekvens används koden: proc gchart data=work.rokdata; pie smoke / discrete percent=outside; vbar smoke / discrete type=percent; by gender; quit; Vilket ger graferna (visar bara 2 grafer): gender= FREQUENCY of smoke 4 43.7% 8 6.2% PERCENT 6 gender= 4 3 2 smoke 8
Percent Percent För att rita ett histogram uppdelat på en annan variabel använder vi proc univariate (jag använder filen rokdata). Jag visar även sorteringen för variabeln (variabeln vi betingar på) efter kommandot by. Vi betingade på variabeln smoke och ritade åldersfördelningen. Koden blir: /*proc sort data=work.rokdata; by smoke; */ proc univariate data=work.rokdata; histogram age; by smoke; smoke= 2 2 3 4 6 7 age smoke= 3 3 2 2 2 3 4 6 age 9
När vi kör proc univariate -koden ovan får vi ut histogram som är betingade på variabeln vi anger efter kommandot by. Vi får också ut en numerisk beskrivning av alla variabler i data-setet, betingade på samma variabel. Vill vi inte ha något/några histogram, utan bara en numerisk beskrivning uppdelat på en annan variabel tar vi bort kommandoraden histogram. Uppgifter. Använd data från Datorövning,upg.. Clas Ohlson H&M Teknikmagasinet MQ Kvinnor 7 6 26 Män 46 4 32 8 och skapa en frekvenstabell för variabeln butik som är betingad på kön. 2. Använd rokdata.xls från Datorövning / hemsidan. Beskriv variabeln age numeriskt med proc univariate. Vad blir medelvärdet, medelvärdet, medianen och typvärdet ( mode )? Vilket är det största - respektive minsta värdet för variabeln? 3. Vi utökar datamaterialet i simma, datorövn.. uppgift 4, med ytterligare en variabel. Variabeln kön Obs. 2 3 4 6 7 8 Tid 34.2 3.72 34.72 34. 34.3 3.72 36.7 3.7 Puls 2 24 4 2 46 28 36 44 Kön Obs. 9 2 3 4 6 Tid 3.37 3.7 3.43 36. 34.8 34.7 34.7 33.93 Puls 48 44 36 24 48 44 4 6 Kön läs in variabeln i SAS. Skapa histogram över variablerna tid och puls uppdelat på kön. 4. Använd datamaterialet i uppgift. Rita stapeldiagram för variabeln butik på kön. Eftersom datat är inläst med en frekvensvariabel behövs ett tillägg i koden, se datorövn.2.sid 3.