Upload
lamnhi
View
232
Download
0
Embed Size (px)
Citation preview
Estatística Computacional A - Aula SAS 01 Estatísticas Descritivas
Prof. José Carlos Fogo
/* Linha de comando com configurações de página */
options ps=60 ls=80 nodate pageno=1;
/* Entrando com um arquivo de dados: SAS dataset.
Exemplo de um arquivo de dados com peso,
em kg, de coelhos híbridos Norfolk abatidos
aos 90 dias de vida. */
data coelhos;
input peso tempo;
cards;
2.50 14.9
2.58 16.2
2.60 15.4
2.62 15.9
2.65 16.8
2.66 16.1
2.58 14.7
2.70 17.3
2.55 14.5
2.57 14.3
2.70 17.7
2.62 16.0
2.59 16.3
2.54 15.0
2.53 15.5
2.20 11.8
;
proc print data=coelhos;
var peso;
run;
proc means data=coelhos;
output out=saida;
run;
The SAS System 1
The MEANS Procedure
Variable N Mean Std Dev Minimum Maximum
------------------------------------------------------------------------------
peso 16 2.5743750 0.1152371 2.2000000 2.7000000
tempo 16 15.5250000 1.3916417 11.8000000 17.7000000
------------------------------------------------------------------------------
/* Avaliando o dataset de saída */
proc print data=saida;
run;
The SAS System 2
Obs _TYPE_ _FREQ_ _STAT_ peso tempo
1 0 16 N 16.0000 16.0000
2 0 16 MIN 2.2000 11.8000
3 0 16 MAX 2.7000 17.7000
4 0 16 MEAN 2.5744 15.5250
5 0 16 STD 0.1152 1.3916
proc univariate data=coelhos plot;
var peso;
run;
The SAS System 3
The UNIVARIATE Procedure
Variable: peso
Moments
N 16 Sum Weights 16
Mean 2.574375 Sum Observations 41.19
Std Deviation 0.11523707 Variance 0.01327958
Skewness -2.379303 Kurtosis 7.74564229
Uncorrected SS 106.2377 Corrected SS 0.19919375
Coeff Variation 4.47631268 Std Error Mean 0.02880927
Basic Statistical Measures
Location Variability
Mean 2.574375 Std Deviation 0.11524
Median 2.585000 Variance 0.01328
Mode 2.580000 Range 0.50000
Interquartile Range 0.09000
Note: The mode displayed is the smallest of 3 modes with a count of 2.
Tests for Location: Mu0=0
Test -Statistic- -----p Value------
Student's t t 89.35926 Pr > |t| <.0001
Sign M 8 Pr >= |M| <.0001
Signed Rank S 68 Pr >= |S| <.0001
Quantiles (Definition 5)
Level Quantile
100% Max 2.700
99% 2.700
95% 2.700
90% 2.700
75% Q3 2.635
50% Median 2.585
25% Q1 2.545
10% 2.500
5% 2.200
1% 2.200
0% Min 2.200
The SAS System 4
The UNIVARIATE Procedure
Variable: peso
Extreme Observations
----Lowest---- ----Highest---
Value Obs Value Obs
2.20 16 2.62 12
2.50 1 2.65 5
2.53 15 2.66 6
2.54 14 2.70 8
2.55 9 2.70 11
/* Criando um dataset de saída */
proc univariate data=coelhos;
var peso;
output out=saida2
NOBS=n_obs SUM=soma MEAN=media STD=desv_pad
CV=coef_var VAR=variancia MAX=maximo MIN=minimo
GEOMEAN=gmedia SKEW=assim KURT=curtose;
run;
proc print data=saida2;
run;
The SAS System 5
Obs media desv_pad assim coef_var soma variancia
1 2.57438 0.11524 -2.37930 4.47631 41.19 0.013280
curtose n_obs maximo minimo gmedia
7.74564 16 2.7 2.2 2.57179
/* Abrindo um dataset de uma pasta em disco */
data Peruanos;
infile "C:\Users\JCFogo\Documents\Disciplinas\ECA\Aulas SAS\PeruanosSAS.txt";
input Idade Tempo Peso Altura Pulso Sistol Diastol;
run;
proc print data=Peruanos;
title "Exemplo dados Peruanos";
run;
Exemplo dados Peruanos 6
Obs Idade Tempo Peso Altura Pulso Sistol Diastol
1 21 1 71.0 1629 88 170 76
2 22 6 56.5 1569 64 120 60
3 24 5 56.0 1561 68 125 75
4 24 1 61.0 1619 52 148 120
5 25 1 65.0 1566 72 140 78
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38 50 43 70.0 1630 72 132 90
39 54 40 87.0 1542 92 152 88
/* Ordenando os dados pela variável Peso */
proc sort data=Peruanos;
by Peso;
run;
Exemplo dados Peruanos 7
Obs Idade Tempo Peso Altura Pulso Sistol Diastol
1 28 5 53.0 1494 64 120 76
2 28 25 53.0 1568 80 108 62
3 37 16 55.0 1505 64 120 76
4 47 1 55.0 1536 64 116 54
5 24 5 56.0 1561 68 125 75
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38 39 24 74.0 1647 64 128 84
39 54 40 87.0 1542 92 152 88
/* Representações Gráficas no SAS pelo proc plot */
proc chart data=Peruanos;
title 'Histograma Pressao Sistolica';
vbar Sistol;
run;
Histograma Pressao Sistolica 8
Frequency
15 + *****
| *****
14 + *****
| *****
13 + *****
| *****
12 + ***** *****
| ***** *****
11 + ***** *****
| ***** *****
10 + ***** *****
| ***** *****
9 + ***** *****
| ***** *****
8 + ***** *****
| ***** *****
7 + ***** *****
| ***** *****
6 + ***** ***** *****
| ***** ***** *****
5 + ***** ***** *****
| ***** ***** *****
4 + ***** ***** ***** *****
| ***** ***** ***** *****
3 + ***** ***** ***** *****
| ***** ***** ***** *****
2 + ***** ***** ***** *****
| ***** ***** ***** *****
1 + ***** ***** ***** ***** ***** *****
| ***** ***** ***** ***** ***** *****
-------------------------------------------------------------------------
108 120 132 144 156 168
Sistol Midpoint
/* Representação Gráfica no SAS pelo proc gplot */
proc plot data=Peruanos;
title 'Grafico Sistol x Peso';
plot Sistol*Peso;
run;
Grafico Sistol x Peso 9
Plot of Sistol*Peso. Legend: A = 1 obs, B = 2 obs, etc.
Sistol |
|
170 + A
168 +
166 +
164 +
162 +
160 +
158 +
156 +
154 +
152 + A
150 +
148 + A
146 +
144 +
142 + A
140 + A A
138 + A A
136 + A
134 + AA A A A
132 + A
130 + A
128 + B A
126 + AA
124 + AA A
122 +
120 + A A AA
118 + A A
116 + A A
114 + A B
112 + A
110 + A
108 + A
106 + A
|
---+-------+-------+-------+-------+-------+-------+-------+-------+--
50 55 60 65 70 75 80 85 90
Peso
proc gplot data=Peruanos;
title "Peruanos - Pressao Sistolica x Peso";
symbol i=none v=dot h=1 c=blue;
plot Sistol*Peso;
run;
Sistol
100
110
120
130
140
150
160
170
Peso
50 60 70 80 90
Peruanos - Pressao Sistolica x Peso
Estatística Computacional A - Aula SAS 02 Manipulando SAS dataset ’s
Prof. José Carlos Fogo
/* Lendo o arquivo de dados PeruanosSAS.txt e criando novas variáveis:
1) Pressao, indicadora de pressão alta, classificando os indivíduos em
hipertenso ou normal;
2) rq_altura, raiz quadrada da altura. */
title "Exemplos de manipulação de dados no ambiente data";
data Peruanos;
infile "C:\Users\JCFogo\Documents\Disciplinas\ECA\Aulas SAS\PeruanosSAS.txt";
input Idade Tempo Peso Altura Pulso Sistol Diastol;
if Sistol > 130 then Pressao='Hipertenso';
else Pressao='Normal';
rq_altura=sqrt(altura);
run;
/* Arquivo PeruanosSAS.txt, com as novas variáveis */
proc print data=Peruanos;
run;
Exemplos de manipulação de dados no ambiente data 1
Obs Idade Tempo Peso Altura Pulso Sistol Diastol Pressao rq_altura
1 21 1 71.0 1629 88 170 76 Hipertenso 40.3609
2 22 6 56.5 1569 64 120 60 Normal 39.6106
3 24 5 56.0 1561 68 125 75 Normal 39.5095
4 24 1 61.0 1619 52 148 120 Hipertenso 40.2368
5 25 1 65.0 1566 72 140 78 Hipertenso 39.5727
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38 50 43 70.0 1630 72 132 90 Hipertenso 40.3733
39 54 40 87.0 1542 92 152 88 Hipertenso 39.2683
/* Criando um novo SAS dataset "pressao" com as variáveis Sistol e Diastol
Comandos: set e keep */
data pressao; set Peruanos;
keep Sistol Diastol;
run;
proc print data=pressao;
run;
quit;
Exemplos de manipulação de dados no ambiente data 2
Obs Sistol Diastol
1 170 76
2 120 60
3 125 75
4 148 120
. . . . . . . . . . .
38 132 90
39 152 88
/* Separando os dados em dois conjuntos: Hipertensos e Normais
Comando: if */
data Hipertensos; set Peruanos;
if Pressao='Hipertenso';
run;
data Normais; set Peruanos;
keep Idade Tempo Altura Pulso Sistol Diastol Peso;
if Pressao='Normal';
run;
proc print data=Hipertensos;
title "Peruanos com Pressao Sistolica Elevada";
run;
Peruanos com Pressão Sistólica Elevada 3
Obs Idade Tempo Peso Altura Pulso Sistol Diastol Pressao raiz_alt
1 21 1 71.0 1629 88 170 76 Hipertenso 40.3609
2 24 1 61.0 1619 52 148 120 Hipertenso 40.2368
3 25 1 65.0 1566 72 140 78 Hipertenso 39.5727
4 32 13 57.0 1530 60 134 64 Hipertenso 39.1152
5 35 2 64.0 1648 60 138 78 Hipertenso 40.5956
6 36 12 56.5 1521 72 134 86 Hipertenso 39.0000
7 38 11 61.0 1653 76 136 78 Hipertenso 40.6571
8 39 14 72.0 1620 68 134 92 Hipertenso 40.2492
9 41 5 63.4 1647 76 134 92 Hipertenso 40.5832
10 43 25 69.0 1625 72 140 72 Hipertenso 40.3113
11 43 26 73.0 1615 68 138 74 Hipertenso 40.1871
12 44 18 71.0 1572 72 142 84 Hipertenso 39.6485
13 45 10 60.2 1534 56 134 70 Hipertenso 39.1663
14 50 43 70.0 1630 72 132 90 Hipertenso 40.3733
15 54 40 87.0 1542 92 152 88 Hipertenso 39.2683
proc print data=Normais;
title "Peruanos com Pressão Sistólica Normal";
run;
quit;
Peruanos com Pressão Sistólica Normal 4
Obs Idade Tempo Peso Altura Pulso Sistol Diastol
1 22 6 56.5 1569 64 120 60
2 24 5 56.0 1561 68 125 75
3 27 19 62.0 1639 72 106 72
4 28 5 53.0 1494 64 120 76
5 28 25 53.0 1568 80 108 62
6 31 6 65.0 1540 76 124 70
7 33 13 66.5 1622 68 116 76
8 33 10 59.1 1486 72 114 74
9 34 15 64.0 1578 88 130 80
10 35 18 69.5 1645 60 118 68
11 36 15 57.0 1547 84 120 70
12 37 16 55.0 1505 64 120 76
13 37 17 57.0 1473 72 114 80
14 38 10 58.0 1538 64 124 64
15 38 18 59.5 1513 80 114 66
16 38 11 57.0 1566 60 126 72
17 39 21 57.5 1580 64 124 62
18 39 24 74.0 1647 64 128 84
19 41 25 62.5 1637 76 112 80
20 41 32 68.0 1528 60 128 82
21 42 12 68.0 1605 88 128 90
22 43 10 64.0 1640 60 118 66
23 44 19 65.0 1610 74 110 70
24 47 1 55.0 1536 64 116 54
/* Ordenando os dados com mais de uma chave de classificação:
Pressao e Peso (dentro de Pressao) */
proc sort data=peruanos;
by pressao peso;
run;
proc print data=Peruanos;
title "Dados ordenados por mais de uma chave de classificação";
run;
quit;
/* proc univariate com arquivo de saída (saida2) selecionando as estatísticas
Descritivas: nobs, Média, Variância, Q1, Mediana e Q3 */
proc univariate data=Peruanos;
var Peso;
output out=saida2 N=nobs mean=media var=Variancia
q1=Quartil_1 median=Mediana q3=Quartil_3;
run;
proc print data=saida2;
run;
quit;
/* Algumas análises e gráficos para o grupo hipertenso */
proc univariate data=Hipertensos normal plot;
var Sistol Diastol;
run;
proc chart data=Hipertensos;
title 'Histograma';
vbar Sistol;
run;
proc plot data=Hipertensos;
plot Sistol*Peso;
run;
proc gplot data=Hipertensos;
title "Peruanos com Pressao Sistolica Elevada";
symbol i=line v=dot h=1 c=blue;
plot Sistol*Peso;
run;
quit;
/* proc univariate para o grupo com pressão normal */
proc print data=Normais;
title "Peruanos com Pressão Sistólica Normal";
run;
proc univariate data=Normais normal plot;
var Sistol Diastol;
run;
quit;
Estatística Computacional A - Aula SAS 03 O proc iml para manipulação de matrizes e vetores
Prof. José Carlos Fogo
title "O proc iml para manipulação de vetores e matrizes";
proc iml;
/* definição de um vetor de dados */
x1={100,60,45,33,75,35};
/* ou ainda */
x2={100,
60,
45,
33,
75,
35};
print "vetores de dados";
print x1 x2;
/*numero de linhas do vetor */
n=nrow(x1);
/* vetor de 1's: a função j() */
um=j(n,1);
/* produto escalar */
sumx=t(x1)*um;
sumxq=x1`*x1;
print "somas dos dados e dos seus quadrados com produto escalar";
print sumx sumxq;
/* produto elemento-a-elemento */
xq = x1#x1;
sxq = sum(xq);
print "dados ao quadrados e sua soma";
print xq sxq;
/* estatísticas descritivas média e variância amostrais */
xbar=sumx/n;
sx=(sumxq-n*(xbar**2))/(n-1);
dpx=sqrt(sx);
print "média, variância e desvio-padrão amostrais";
print n xbar sx dpx;
quit;
/* Resultado dos comandos do proc iml */
O proc iml para manipulação de vetores e matrizes 1
vetores de dados
x1 x2
100 100
60 60
45 45
33 33
75 75
35 35
somas dos dados e dos seus quadrados, com produto escalar
sumx sumxq
348 23564
dados ao quadrado e sua soma
xq sxq
10000 23564
3600
2025
1089
5625
1225
média, variância e desvio-padrão amostrais
n xbar sx dpx
6 58 676 2