Sumrio
1 Recursos Bsicos
1.1 1.2 1.3 2.1 2.2 2.3 2.4 2.5 2.6 3.1 3.2 3.3 3.4 Operaes Elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variveis Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comentrios e Pontuao . . . . . . . . . . . . . . . . . . . . . . . . . . . . Polinmios . . . . . . . . . . . . . Vetores . . . . . . . . . . . . . . . Matrizes . . . . . . . . . . . . . . Acessando Vetores e Matrizes . . Operaes com Vetores e Matrizes Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 4 4 5 5 6 7 8 8
3 Arquivos
Diretrio dos Dados . . . . . . . . . . . . . . Importando Arquivos de Outros Programas Nomeando as Variveis . . . . . . . . . . . . Salvando e Avaliando Dados e Arquivos . . .
9 9 10 10
4 Figuras
4.1 4.2
13
13 15
16 17 19 23
23 26 26
27
27 27
5. 6. 5. 8.
Caso fssemos criar variveis ou constantes a partir das operaes bsicas, faramos:
% observe que, no Scilab, como em muitas calculadoras, as operaes $a+b*c$ difere de $(a+b)*c$
A linha em questo no ser, portanto, tomada como parte das operaes matemticas. um recurso especialmente til nos arquivos de programao. Outro recurso a pontuao nal, indicando se desejas ou no exibir o produto na tela. Ilustrando:
-->Y=[1 2; 3 4] Y = ! 1. 2. ! ! 3. 4. !
Se no queres visualiz-la, ponha ponto e vrgula no nal:
-->Y=[1 2; 3 4];
desejvel quando estamos operando com transformaes longas, notadamente com matrizes ou sries, permitindo nos concentrar nas simples operaes lgicas, deixando de lado a computao numrica, que podemos deixar para o nal. 4
2.2 Vetores
Um vetor y qualquer denido pelas variveis que o compe. No Scilab, faramos:
y=[1 2 3 4]';
Note que o ' aps o colchete dene a transposta de um vetor denido em [..]. Como a forma normal o vetor coluna, y do exemplo seria um vetor linha. Vamos criar dois outros vetores e fazer algumas operaes com eles.
ct=[1 1
1]';
O Scilab tem funes especcas para gerar alguns vetores ou matrizes especiais. No caso dos vetores, podemos ger-los pelas funes para sequncias do Scilab. Tomemos alguns exemplos de vetores de constantes:
z=ones(1:4) z2=3*ones(1:3)
5
z2 = ! 3.
3.
3. !
z3=zeros(1:5) z3 = 0. 0. 0.
0.
0. !
Note que, dentro do parnteses, denimos a quantidade de termos do vetor, ou da seqencia, e fora do parnteses os termos constantes que o compe. Se quisermos operar com vetores dados por uma seqncia que progridem numa seqencia denida, dentro de um intervalo estabelecio, faramos:
-->v=[5:1:10] v = ! 5. 6.
7.
8.
9.
10. !
-->v1=[5:-.5:1] v1 = ! 5. 4.5 4.
3.5
3.
2.5
2.
1.5
1. !
Geramos, desta forma, tendncias temporais, ou outra srie temporal como seqencia denida, as quais so muito teis na anlise estatstica e economtrica.
2.3 Matrizes
Criam-se matrizes de forma semelhante, usando o operador ; para inserir linhas novas. Convm, tambm, seguir a conveno matemtica, usando maiscula para matrizes:
-->D=[A B C] D = ! 1. 2. ! 3. 4.
5. 7.
6. 8.
9. 11.
10. ! 12. !
E=matrix(D,3,4)
Podemos, nalmente, transformar E numa matriz identidade:
F=eye(E)
6
-->Z=eye(3,3) z ! ! ! 1. 0. 0. 0. 1. 0.
= 0. ! 0. ! 1. !
-->A=[1 2; 3 4] A = ! 1. 2. ! ! 3. 4. !
-->evstr(E) ans = ! 1. 4. ! ! 3. 2. 5. 7.
6. 8. 9.
Suponha que tivssemos uma matriz muito grande, cuja exibio na tela ocuparia enorme espao, quando nos interessa avaliar apenas algumas de suas colunas, ou linhas. Neste caso, usamos os seguintes operadores:
M (1, :) M (2, :)
Os dois pontos tudo e a vrgula denota linha, quando antes dela, e coluna, quando posterior a ela. Se queres apenas os dados da primeira linha, segunda coluna seria (1,2). Abaixo exemplicamos como procedemos no caso da matrix tbl61. Para o caso de vetores, tomemos por ilustrao o vetor y denido acima. Os operadores
-->y(:) ans = ! 1. ! !
x2=(x.^2);
A2=(A.^2);
Como x2 denido a partir de uma transformao de x, a funo que opera tal transformao denida entre parnteses. Outra observao importante: usamos o ponto antes do operador exponencial, , pois estamos transformando uma varivel, x, e no um nmero.
2.6 Listas
Captulo 3 Arquivos
3.1 Diretrio dos Dados
Ao operar com uma base de dados, ou manipulaes numricas, um primeiro passo saber em que diretrio o Scilab est operando, o que feito com a funo pwd:
-->pwd ans
= C:\WINDOWS\Desktop
Desejando mudar de diretrio, use a funo 'chdir'. Assim, supondo que seu arquivo esteja em C:\cursos\IEconometria\Apostila, faramos:
>chdir(C:\cursos\IEconometria\Apostila) ans = 0.
M = excel2sci("C:\arquivos\alguma-coisa\filename.csv", ",")
. Outra opo :
M = excel2sci("C:\arquivos\alguma-coisa\filename.csv", ":,:")
A despeito da funo excel2sci remeter ao Excel, veja que ela se aplica a outros arquivos ascii, como o csv do exemplo. Na realidade, para o caso de arquivos Excel, convm transform-los antes para bloco de notas, o que pode ser feito ou abrindo-o e salvando no 9
Bloco de Notas (entre os programas acessrios do Windows), ou pedindo, no Excel, para salv-lo como txt (com separador de vrgulas). Pelo mesmo caminho, possvel transformar um arquivo txt para csv, pedindo que o Excel salve-o como 'csv' (com separador de vrgulas). O Scilab no reconhecer corretamente as variveis se, no arquivo original, elas estavam denidas por um nome inserido na primeira linha de cada coluna. preciso retirar toda a linha contendo o nome das variveis. Abaixo, mostramos um caminho rpido para nomear as variveis do arquivo importado. Se o nome das variveis j foram retirados, outro caminho simplesmente colar. Suponha que os dados estejam no Excel, onde cada coluna est associada a uma varivel, com a primeira linha indicando o nome desta. Corte tal linha, faa o copy e insira, via paste, no Scilab, para posterior associao dos valores. Isto , ters que denir tais dados como uma matriz, com um nome e escrito na forma correspondente a uma matriz, como denido no captulo anterior.
-->YEAR=tbl6(:,1); G=tbl6(:,2); PG=tbl6(:,3); Y=tbl6(:,4); PNC=tbl6(:,5); PUC=tbl6(:,6); PPT=tbl6(:,7); PD=tbl6(:,8); PN tbl6(:,9); PS=tbl6(:,10); POP=tbl6(:,11);
Note que zemos a transformao de todas as variveis de uma s vez, usando o separador ; aps a denio de cada nome.
-->X=[1960 1961 1962 1963 1964; 129.7 131.3 137.1 141.6 148.6; 0.925 0.914 .919 .918 .949]' X = 1960. 129.7 0.925 1961. 131.3 0.914 1962. 137.1 0.919 1963. 141.6 0.918 1964. 148.6 0.949
Para salv-la:
-->save('C:\DATA\dados.dat', X)
O arquivo data do tipo binrio, comum s formas de operaes matemticas no Scilab. Desocupamos a memria do Scilab com tal arquivo fazendo:
-->clear X
que poderia ser aplicada, tambm, matrix de nosso arquivo de programao, fazendo:
-->clear x
embora isto s tenha sentido caso estssemos operando com x no ambiente prprio do Scilab; isto , no aplicaramos clear num arquivo de programao. Para recarregar o arquivo, faramos:
-->load('C:\DATA\dados.dat', 'y,C,I')
Numa anlise estatsticas, podemos precisar de apenas um conjunto de variveis de uma matriz de dados, e variveis, contida em determinado arquivo. ttulo de exemplo, considere a matrix x criada acima, que nos interessaria apenas . eventualmente, quere tomar apenas algumas das variveis
xenw=read('x.dat',2,3)
xenw = ! 1.
2.
3.1415927 ! !
2.7182818
3.
4. !
12
Captulo 4 Figuras
Em anlise estatstica usaramos anlise grca tanto para analisar a correlao entre dados, ou entre pontos previstos e pontos observados, quanto para simulaes das propriedades matemticas de alguns estimadores ou estatsticas. Nesta seo introduziremos a projeo de grcos de funes, o que ser til tanto para os dois ltimos tipos de anlise grca em estatstica. Nos captulos Estatsticas Bsicas e .. exporemos outros recursos grcos, trantando dos respectivos problemas estatsticos. Veremos, aqui, os comandos para a gerao de grcos mais comuns, em duas e trs dimenses. As novas verses do Scilab, como a 3.0, j dispe de uma interface grca para manipulao de grcos, facilitando muito o trabalho. Como esta. porm no est totalmente implementada, utilizares o prompt de comando para executar os grcos.
-->deff("[y]=f(x)","y=sin(x)")
A funo seno uma das muitas j denidas no Scilab. Precisamos, agora, denir o domnio da funo:
-->x=[0:0.1:10]*%pi/10;
Isto posto, solicitamos plotar a funo f, como segue:
-->fplot2d(x,f)
cujo resultado est exposto na 4.1 abaixo. Para plotarmos duas funes juntas, basta colocarmos dentro dos colchetes:
plot2d([3.5*x x^2-3])
13
1.0 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.0 0.0 0.4 0.8 1.2 1.6 2.0 2.4 2.8 3.2
37 33 29 25 21 17 13 9 5 1 -3 0 10 20 30 40 50 60 70
Figura 4.2: Plot em 2D da funo Seno O resultado: Vamos agora apenas utilizar valores de x, sem denir funes. Declarando
x=[0:0.1:2*%pi]';
Podemos plotar sen(x), sen(2x) e sen(3x) juntos e dar nomes as curvas:
O resultado:
2.0 1.6 1.2 0.8 0.4 0.0 -0.4 -0.8 -1.2 -1.6 -2.0 0 L1 L2 L3 1 2 3 4 5 6
r r r
15
16
-->a=[26:-3:2]; -->b=[2:3:26];
E tambm nossa matrx E,
E=matrix(D,4,3) E = ! 1. 5. 9. ! ! 3. 7. 11. !
Tabela 6.1: Funes para Estatsticas Bsicas mean(e) mdia de e geomean(e) mdia geomtrica variance(e) variance de e varincia variance(e,2) std eviation(e) desvio padro covarincia, com freq para frequncia covar(e,a, fre) correl (e,a, fre) correlao entre a e b momentos, com ,.. indicando o momento especco moment(e,2) center(e) e centrado; desvios da mdia quart(e) quartis percentis perctl(e) 17
! !
2. 4.
6. 8.
10. ! 12. !
Na ilustrao abaixo, damos um nome para cada varivel, necessrio quando queremos operar matematicamente com tais resultados.
-->m=mean(b) m = 14. -->varb=variance(b) varb = 67.5 -->varE=variance(b) varE = 67.5 -->stde=st_deviation(e) stde = 8.2158384
18
-->Y=grand(100,1,'nor',0,1)
e fazer o seu histograma, utilizando 10 barras:
--> histplot(10,Y)
O resultado esta na gura 7.1. Vamos, agora, gerar 1000 pontos de apenas uma gerao aleatria de uma normal com mdia 10 e varincia 4.2 e colocar em outro histograma, agora com 50 bins:
-->Y=grand(100,1,'nor',10,4.2); -->histplot(50,Y)
O resultado, na gura 7.2. Finalmente, como exemplo, vamos introduzir o grco de uma distribuio, gamma, bastante usada em inferncia bayesiana como priori para a varincia de um modelo. O comando: 19
0.6
0.5
0.4
0.3
0.2
0.1
0.0 2 1 0 1 2 3
Y=grand(500,1,'gam',5,50)
As distribuies disponveis esto listadas abaixo. Quanto aos parmetros, estes podem ser vistos utilizando o comando help do Scilab (help grand).
beta:
Y=grand(m,n,'bet',A,B);
binomial:
Y=grand(m,n,'bin',N,p);
binomial negativa:
Y=grand(m,n,'nbn',N,p);
chi-quadrada:
Y=grand(m,n,'chi', Df);
chi-quadrada no-central:
Y=grand(m,n,'nch',Df,Xnon);
20
0.12
0.10
0.08
0.06
0.04
0.02
0.00 8 4 0 4 8 12 16 20 24
exponencial:
Y=grand(m,n,'exp',Av);
Distribuio F:
Y=grand(m,n,'f',Dfn,Dfd);
Distribuio F no central:
Y=grand(m,n,'nf',Dfn,Dfd,Xnon);
Gauss Laplace (normal):
Y=grand(m,n,'nor',Av,Sd);
gaussian multivariada:
Y=grand(n,'mn',Mean,Cov);
geomtrica:
Y=grand(m,n,'geom', p);
21
Markoviana:
Y=grand(n,'markov',P,x0);
multinomial:
Y=grand(n,'mul',nb,P);
Poisson :
Y=grand(m,n,'poi',mu);
Permutaes aleatrias:
Y=grand(n,'prm',vect);
uniforme (0,1):
Y=grand(m,n,'def');
variaes da uniforme.
22
y=[74 15 46 45 85 32 65 98 54 87 21 26 45 56]'; //Varivel dependente x=[1 1 1 1 1 1 1 1 1 1 1 1 1 1; 12 23 32 45 45 96 45 32 65 96 36 76 34 56; 67 98 34 23 56 67 78 57 34 98 45 34 54 65; 54 58 24 51 68 26 35 20 1 41 36 85 58 46]'; //variaveis independentes
Precisamos denir as dimenses do vetor y, nossa varivel independente, e da matrix x de nossas variveis independentes.
y1=log(y); x1=log(x(:,2:4)); //Tranformando os dados, menos a constante. Note que podemos transformar uma grande quantidade de variaveis de uma s vez z=[x(:,1) x1]; //Nova matriz de Variaveis independentes
Anlise da Varincia(ANOVA)
yhat=z*betas;//Valores ajustados y chapu (previsto) e=y1-yhat;//erros da regresso
24
sqt=y1'*y1;//Soma dos quadrados totais sqr=e'*e;//Calculo da somado quadrado dos residuos SQR sqe=yhat'*yhat;//soma dos quadrados explicados msqt=sqt/(n-1);//sqt mdios msqr=sqr/(n-k);//sqr mdios msqe=sqe/k-1;//sqe mdios
25
26
27