Introdução à Programação
Linguagem R
1
2
Introdução
• O que escrevermos na linha de comando,
depois de fazermos “Enter”
– assumiremos a partir de agora, que se faz
sempre Enter no fim de escrever os
comandos
• Vai ser processado pelo R.
3
Introdução
• Por exemplo, se escrever
(2+7+5)/5
• aparece o resultado
[1] 2.8
• O número [1] não tem,
significado.
para
já,
4
Objectos
5
Objectos
• Um objecto podem ser
– Constantes,
– Vectores,
– etc.
6
Objectos
• Cada objecto tem um nome formado por
letras, por números e pelo carácter ponto,
“.”
• Não pode ter espaços.
• As letras maiúsculas são diferentes da
minúsculas
7
Objectos
• Constantes. Eu posso criar a constante X
executando
X <- 45 (que é diferente de x minúsculo).
• Para ver o conteúdo de um objecto,
executo o seu nome. Se executar
X
• aparece
[1] 45
8
Objectos
• Se atribuir outra vez outro valor a X, o
valor anterior será destruído e substituído.
• Também poderia fazer a atribuição
usando = em vez de <X = 45
9
Objectos
• Expressões. Posso executar expressões
algébricas e ver o resultado ou colocar o
resultado numa constante.
• São parecidas com as formulas do Excel
• Números; +, –, /, *, ^
• Mas tem “nomes” em vez de referências
10
Objectos
• Se executar
i <- ((X*2 + 5^2)^2) / log(1.05)
• e depois
i
• aparece
[1] 271058.7
11
Exercício
• Ex.3.1. Emprestei 1000€ a uma taxa anual
de 5%/ano. Quanto dinheiro receberei ao
fim de 10 anos (capitalização composta)?
12
Exercício
Tx.de.jr.an<-0.05
Cap.inic<-1000
Prazo<-10
Cap.final<-Cap.inic*(1+Tx.de.jr.an)^Prazo
Cap.final
[1] 1628.895
13
Objectos
• Vectores. Um vector é uma “constante” multidimensional.
• Para dar a indicação de que vou criar um vector,
usa o “comando” c(valor1, valor2).
• Os vectores têm um “modo” (se são números
reais, complexos, valores lógicos, palavras, etc.)
onde todas as dimensões do vector têm que ser
do mesmo “modo”.
14
Objectos
• E.g., durante um empréstimo a 3 anos
capitalizado, a taxa de juro dos anos foi
3.7%, 4.1% e 4.9%. Posso guardar essas
taxas num vector executando
Juros<-c(0.037,0.041,0.049)
• Se quiser saber quantos elementos tem o
vector executo
length(Juros)
15
Objectos
• Resumindo sabemos como definir
• Constantes
X = 45
• Expressões
i <- ((X*2 + 5^2)^2) / log(1.05)
• Vectores
Juros <- c(0.037,0.041,0.049)
16
Operações com vectores
• Eu posso usar os vectores na expressões
algébricas
• O R vai calcular a expressão para cada
um dos elementos e retorna como
resultado outro vector.
• Não se trata de cálculo vectorial normal
17
Operações com vectores
• Por exemplo, as taxas de juro são
Juros<-c(0.037,0.041,0.049)
• E eu emprestei 5000€, recebendo os juros
no fim de cada ano. Obtenho os juros
recebidos nos 3 anos executando o
comando … de que resulta
5000*Juros
[1] 185 205 245
18
Operações com vectores
• Nota. Uma constante é um vector de
dimensão unitária.
19
Operações com vectores
• Se eu executar operações com dois
vectores, as operações vão ser realizada
entre os elementos de igual índice.
• Por exemplo, se eu executar … resultará
v1 <- c(4, 6, 87)
v2 <- c(34, 32.4, 12)
v1 + v2
[1] 38.0 38.4 99.0
20
Operações com vectores
• Se eu aplicar funções a vectores, a função
é aplicada a cada elemento do vector.
• Por exemplo, se eu executar… resultará
v1 <- c(4, 6, 87)
v1^0.5
[1] 2.000000 2.449490 9.327379.
21
Exercício
• Ex.3.2. Um banco personaliza as taxas de
juro dos depósitos dos seus clientes.
• i) Crie, para 10 clientes, um hipotético
vector de taxas de juro, um vector de
saldos e calcule os juros a pagar a cada
cliente.
• ii) Capitalize esses saldos com a taxa de
juro respectiva a 5 anos.
22
Exercício
Tx.juros<- c(4.5, 5.1, 4, 3.6, 3, 5, 4.6, 4.8,
3.6, 5)/100
Saldos<- c(10, 150, 45, 20, 100, 75, 15, 67,
9, 2)*1000
Juros <- Saldos*Tx.juros
• ii) Cap.final<- Saldos*(1 + Tx.juros)^5
23
Operações com vectores
• Reciclagem. Se realizar operações com
dois vectores de tamanhos diferentes,
o vector mais pequeno vai ser
“reciclado” até ficar com o tamanho do
maior.
24
Operações com vectores
• Por exemplo, se executar … resultará
v3 <- c(1, 2, 3, 4)
v4 <- c(10, 2)
v3 + v4
[1] 12 4 13 6
• É como se o vector v4 fosse
v4 <-(10, 2, 10, 2)
25
Operações com vectores
• Se, numa operação com vectores, usar
uma constante, esta vai ser reciclada
até ficar com o tamanho do vector.
• Capital.final<- Saldos*(1 + Tx.juros)^5
• Nota. Se os tamanhos não forem
múltiplos um do outro, o R imprime um
aviso.
26
Exercício
• Ex.3.3. Quero saber, em função do
prazo, qual é o capital final de
emprestar 1000€ a uma taxa anual de
4%.
• Experimente 1, 2, 5 e 10 anos.
27
Exercício
• R. Vou usar as potencialidades do R
relativamente a “operações” com vectores.
Anos <- c(1, 2, 5, 10)
Tx.juro.anual<-0.04
Capital.final <- 1000*(1+Tx.juro.anual)^Anos
Capital.final
[1] 1040.000 1081.600 1216.653 1480.244
28
Operações com vectores
• Sequências. Quando os elementos do
vector são uma série, podemos usar o
operador “:” para criá-lo.
• Por exemplo, se executar … resulta
v5 <- 1:10
V5
[1] 1 2 3 4 5 6 7 8 9 10
29
Operações com vectores
• Devemos ter cuidado com a
precedência do operador “:” pelo que
se aconselha a usar parênteses:
• -(1:10) é diferente de -1:10
• Por exemplo, um vector de dimensão
10 com 5 em todos os elementos,
posso fazer
v <- (1:5)*0 + 5
30
Exercício
• Ex.3.4. Como criar num vector a
sequência (10, 10.5, 11, 11.5, 12)?
v <- 10 + (0:4)/2
31
Exercício
• Calculo de um VAL
• Ex.3.5. Num investimento, apliquei
1000€ e recebi 250€, 350€, 450€ a
intervalos de um ano. Sendo que a taxa
de desconto é de 4.5% ao ano, qual o
VAL deste investimento?
32
Exercício
Cash.flow<-c(-1000, 250, 350, 450)
Taxa.de.desconto<-0.045
Desconto<-(1+Taxa.de.desconto)^-(0:3)
Vai<-Cash.flow*Desconto
Vai
[1] -1000.0000 239.2344 320.5055 394.3335
Va<-sum(Vai)
Va
[1] -45.9266
33
Método de Monte Carlo
Sequências de números aleatórios. O R
(contrariamente
ao
Excel)
tem
geradores de números aleatórios de
muitas funções de distribuição.
34
Método de Monte Carlo
Para criar um vector com 1000 números
aleatórios que seguem Distribuição
Normal com, por exemplo, média 10 e
desvio padrão 5, executo
va<-rnorm(10000, mean=10, sd=5)
Depois, posso usar este vector nas
minhas simulações
35
Método de Monte Carlo
Por exemplo, a taxa de juro futura
assume-se ser N(0.03;0.015). Pretendese saber qual a prestação antecipada
de amortizar 250mil€ em 50 anos.
P  V .i /(1  (1  i)^ (600)) /(1  i)
36
Método de Monte Carlo
r<-rnorm(10000, mean=0.03, sd=0.015)
rm<-(1+r)^(1/12)-1
P<-25000*rm/(1-(1+rm)^(-600))/(1+rm)
c(mean(P),sd(P))
[1] 80.81870 21.28977
summary(P)
Min. 1st Qu. Median Mean 3rd Qu. Max.
18.69 65.63 79.86
80.82 94.65
164.80
37
Download

1 aula de R