91
1 Introdução à Programação Linguagem R

1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

Embed Size (px)

Citation preview

Page 1: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

1

Introdução à Programação Linguagem R

Page 2: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

2

Introdução

• A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do aluno e é uma vantagem comparativa na luta pelos empregos melhor remunerados.

• O R é uma linguagem simples mas que permite escrever programas para realizar tarefas computacionalmente complexas.

• É de distribuição gratuita (procurar R-project).

Page 3: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

3

Page 4: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

4

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.

Page 5: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

5

Introdução

• Por exemplo, se escrever

(2+7+5)/5

• aparece o resultado

[1] 2.8

• O número [1] não tem, para já, significado.

Page 6: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

6

Introdução

• Se executarmos o comando

q()

• saímos do R. (faz uma pergunta a que dizemos sim).

Page 7: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

7

Objectos

Page 8: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

8

Objectos

• Um objecto pode ser – uma variável,

– uma constante,

– um vector,

– uma matriz,

– uma tabela de dados,

– uma função, etc.

Page 9: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

9

Objectos

• Cada objecto tem um nome formado por letras (as maiúsculas são diferentes das minúsculas), por números e pelo carácter ponto, “.”, não podendo ter espaços.

Page 10: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

10

Objectos

• Constantes. Eu posso criar a constante X executando

X <- 45 (que é diferente do objecto x).

• Para ver o conteúdo de um objecto, executo o seu nome. Se executar

X

• aparece

[1] 45

Page 11: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

11

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

Page 12: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

12

Objectos

• Expressões. Posso executar expressões algébricas e ver o resultado ou colocar o resultado numa constante.

• Nas expressões posso ter números, operadores algébricos (+, –, /, *) e potenciação (^). Posso ainda usar outros objectos e funções.

Page 13: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

13

Objectos

• Se executar

i <- ((X*2 + 5^2)^2) / log(1.05)

• e depois

i

• aparece

[1] 271058.7

Page 14: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

14

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)?

Page 15: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

15

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

Page 16: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

16

Objectos

• Vectores. Um vector é uma “constante” multi-dimensional.

• 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”.

Page 17: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

17

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)

Page 18: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

18

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)

Page 19: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

19

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

Page 20: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

20

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

Page 21: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

21

Operações com vectores

• Nota. Uma constante é um vector de dimensão unitária.

Page 22: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

22

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

Page 23: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

23

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.

Page 24: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

24

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.

Page 25: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

25

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*(c(1,1,1,1,1,1,1,1,1,1) + Tx.juros)^5

Page 26: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

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.

Page 27: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

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

Page 28: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

28

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.

Page 29: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

29

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)

Page 30: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

30

Operações com vectores

• Se, numa operação com vectores, usar uma constante, esta vai ser reciclada até ficar com o tamanho do vector.

• No ex.3.2 bastaria executar

• Capital.final<- Saldos*(1 + Tx.juros)^5

• Nota. Se os tamanhos não forem múltiplos um do outro, o R imprime um aviso.

Page 31: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

31

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

Page 32: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

32

Operações com vectores

• Fazendo operações algébricas com este gerador de séries, posso criar series mais complicadas.

• Por exemplo se executar … resultav5<- (1+0.05)^-(1:10) v5 [1] 0.9523810 0.9070295 0.8638376 0.8227025[4] 0.7835262 0.7462154 0.7106813 0.6768394[9] 0.6446089 0.6139133• que é o factor que desconta os valores

futuros ao presente à taxa anual de 5%

Page 33: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

33

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

Page 34: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

34

Exercício

• Ex.3.4. Como criar num vector a sequência (10, 10.5, 11, 11.5, 12)?

v <- 10 + (0:4)/2

Page 35: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

35

Exercício

• 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?

Page 36: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

36

Exercício

Cash.flow<-c(-1000, 250, 350, 450)Taxa.de.desconto<-0.045Desconto<-(1+Taxa.de.desconto)^-(0:3)Vai<-Cash.flow*DescontoVai[1] -1000.0000 239.2344 320.5055 394.3335Va<-sum(Vai)Va[1] -45.9266

Page 37: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

37

Exercício

• Ex.3.6. Apliquei 5000€ a 10 anos. Sendo que as taxas de juro foram 3.1%, 3.7%, 4.1%, 3.9%, 4.2%,4.3%, 4.5%, 3.9%, 3.5%, 3.2%, quanto dinheiro recebi no fim do prazo?

• Terei que capitalizar os 10 anos multiplicando as taxas de todos os anos.

• Para isso uso a função prod() ou log(), somo os resultados e aplico a função exp()

Page 38: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

38

Exercício

Possso usar a função prod()

Tx.juro<-c(3.1, 3.7, 4.1, 3.9, 4.2,4.3, 4.5, 3.9, 3.5, 3.2)/100

Tx.juro.total<- prod(Tx.juro+1)

Capital<-5000*Tx.juro.total

Capital

[1] 7287.484

Page 39: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

39

Exercício

Tx.juro<-c(3.1, 3.7, 4.1, 3.9, 4.2,4.3, 4.5, 3.9, 3.5, 3.2)/100

Tx.juro.total<- sum(log(Tx.juro+1))

Capital<-5000*exp(Tx.juro.total)

Capital

[1] 7287.484

Page 40: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

40

Operações com vectores

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.

Page 41: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

41

Operações com vectores

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

Page 42: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

42

Operações com vectores

Por exemplo, a taxa de juro futura assume-se ser N(0.03;0.015). Pretende-se saber qual a prestação antecipada de amortizar 250mil€ em 50 anos.

)1/())600()^1(1/(. iiiVP

Page 43: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

43

Operações com vectores

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

Page 44: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

44

Indexação de vectoresAcesso a elementos do vector

Page 45: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

45

Indexação de vectores

Quando pretendo aceder um elemento do vector, uso o índice do elemento que eu quero, entre parênteses rectos. E.g., se quisesse saber a taxa de juro do 2º ano, executava … resultava

Tx.juro<-c(3.1, 3.7, 4.1, 3.9, 4.2, 4.3)/100

Tx.juro[2]

[1] 0.037

Page 46: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

46

Indexação de vectores

Posso alterar

E.g., para alterar o 4º ano da série fazia

Tx.juro[4] <- 0.043

Ou criar novo elemento (o 7º ano)

Tx.juro[7]<- 0.041

Page 47: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

47

Indexação de vectores

Também posso querer o valor que tem determinada característica e qual:

max(Tx.juro)

min(Tx.juro)

which.max(Tx.juro)

which.min(Tx.juro)

Page 48: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

48

Indexação de vectores

Se quiser aceder a vários elementos, uso um vector com os seus índices.

E.g., quero o 1º e o 5º ano

Tx.juro[c(1,5)]

Notar que tenho que usar o comando de vector c().

Page 49: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

49

Indexação de vectores

Posso também usar o gerador de séries executando (4 primeiros anos)

Tx.juro[1:4]

Page 50: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

50

Exercício

• Ex.3.7. i) Crie um vector com 1000 número aleatórios que seguem lei normal com média 100 e desvio padrão 50.

Page 51: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

51

Exercício

• serie<-rnorm(1000, mean=100, sd=50)

• i) Determine a diferença entre a média dos primeiros 500 valores para os últimos 500 valores.

Page 52: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

52

Exercício

diferenca<- mean(serie[1:500])-mean(serie[501:1000])

diferenca

[1] 0.4310512

Page 53: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

53

Exercício

• iii) Determine a média dos 100 maiores valores e dos 100 menores valores (use o comando sort( ) para ordenar de forma crescente).

Page 54: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

54

Exercício

ordenados<-sort(serie)

m.menores <- mean(ordenados[1:100])

m.maiores<- mean(ordenados[901:1000])

m.menores

[1] 9.373458

m.maiores

[1] 190.8691

Page 55: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

55

Exercício

• Ex.3.8. Num vector estão os salários anuais de determinado trabalhador que se quer reformar (crie aleatoriamente o vector com 40 elementos com média 600 e d.p. 200).

• Determine o valor da sua reforma que será 2.2% por cada ano da média dos maiores 10 anos dos últimos 15.

Page 56: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

56

Exercício

salarios<-rnorm(40, mean=600, sd=200)us.mel<- sort(salarios[26:40])[6:15]s.medio <- mean(us.mel)(reforma<-

s.medio*length(salarios)*2.2/100)[1] 596.2028colocando a expressão entre parêntesis,

atribui-se a variável e visualiza-se imediatamente o resultado

Page 57: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

57

Filtragem de vectores.

Page 58: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

58

Filtragem de vectores.

Pode acontecer eu precisar retirar do vector os elementos que obedecem a determinado critério. Por exemplo, quero os elementos que são maiores que zero.

Page 59: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

59

Filtragem de vectores.

Para isso uso uma condição no índice:

x <- rnorm(40,mean=0,sd=10)

x[x>0]

Reparar que o que está no índice é um vector com a mesma dimensão de x mas em que os elementos são TRUE ou FALSE.

Page 60: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

60

Filtragem de vectores.

Page 61: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

61

Filtragem de vectores.

Por exemplo, quero saber na distribuição normal de média zero quanto é a média dos maiores que zero

x<-rnorm(1000000,mean=0,sd=10)

mean(x)

[1] 0.009357231

mean(x[x>0])

[1] 7.973201

Page 62: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

62

Filtragem de vectores.

Posso usar como comparações

maior >

maior ou igual >=

menor <

menor ou igual <=

, igual == (dois iguais)

diferente !=

Page 63: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

63

Filtragem de vectores.

Pode ainda usar-se o “ou” de várias condições com o carácter | ou o “e” com o carácter &.

e.g., quero os valores maiores que 0 e menores ou iguais a 5 executo

X[X>0 & X<=5]

Para negar uma condição uso o carácter !.

Page 64: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

64

Exercício

Ex.3.9. Suponha que as notas de um disciplina seguem lei normal com média 11.47 valores e desvio padrão de 3.51 valores.

i) Crie um vector com 250 “indivíduos”.

Page 65: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

65

Exercício

notas <-rnorm(250, mean=11.47, sd=3.51)

ii) Retire para outro vector os alunos com nota maior ou igual a 9,5 valores e calcule a percentagem de passados.

Page 66: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

66

Exercício

passados <- notas [notas>=9.5]

length(passados)/length(notas)

• iii) Substitua os valores maiores que 20 por 20 e os menores que zero por zero.

Page 67: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

67

Exercício

passados[passados > 20] <- 20

passados[passados < 0] <- 0

• iv) arredonde as notas

• v) determine quantos alunos tiveram 10 valores

Page 68: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

68

Exercício

passados <- round(passados,0)

length(passados [passados == 10])

Page 69: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

69

Exercício

• Ex.3.10. Suponha que se prevê que a EURIBOR do próximo ano segue lei normal com média 5% e desvio padrão 3 pontos percentuais mas que nunca poderá ser menor que 0.25% nem maior que 10%.

Page 70: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

70

Exercício

• i) Crie um vector com 1000 “indivíduos” com estas características substituindo os valores “errados” por estas taxas limite.

• ii) extraia 2000, apague os “errados” e depois retire 1000 “certos”

Page 71: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

71

Exercício

tx.prox.ano <- rnorm(1000, mean=0.05, sd=0.03)

tx.prox.ano [tx.prox.ano < 0.0025] <- 0.0025

tx.prox.ano [tx.prox.ano > 0.1] <- 0.1

Page 72: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

72

Exercício

tx.prox.ano <- rnorm(2000, mean=0.05, sd=0.03)

tx.prox.ano <- tx.prox.ano [tx.prox.ano >= 0.0025 & tx.prox.ano <= 0.1]

tx.prox.ano <- tx.prox.ano [1:1000]

Page 73: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

73

Criação de uma Função

Page 74: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

74

Funções

• Eu posso criar uma função que

• tem uma variável de entrada (que também pode ser um vector) e

• tem um resultado de saída (que pode ser uma variável ou um vector).

Page 75: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

75

Funções

• Por exemplo, quero dividir as notas dos alunos em “reprovou” ou “passou”. Para isso escrevo num editor de texto a função:

Classifica <-function(nota){

if(nota >= 9.5) decisao<- ”passou” else decisao<- ‘reprovou’

decisao}

Page 76: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

76

Funções

• Depois copio estas linhas de comando e executo-as no R.

• Depois eu posso usar essa para classificar se os alunos passaram ou reprovaram.

• Na sintaxe da função, antes de escrever o comando de saída (i.e., decisao}) é obrigatório mudar de linha.

Page 77: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

77

Funções

Page 78: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

78

Funções

A função consiste em

1º objecto que a vai conter,

2º o sinal de atribuição

3º o comando function

4º nome das variáveis dentro de parênteses rectos.

5ºAbrem-se chavetas que apenas se fecham quando escrevermos o comando a dar o resultado (que tem que ser na última linha).

Page 79: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

79

Funções

A execução condicionada usa o comando

if(condição) Caso sim else Caso não.

Page 80: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

80

Funções

Ex.3.11. i) Escreva uma função que tem como variáveis o capital inicial, a taxa de juro e o prazo e retorna o capital final (capitalização composta).

Page 81: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

81

Funções

cc <-function(cap.ini, t.juro, prazo){

resultado<-cap.ini*(1+t.juro)^prazo

resultado}

Page 82: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

82

Funções

ii) Determine o capital final se aplicados 1000€ à taxa de juro anual de 5% durante 30 anos.

cc(1000, 0.05, 30)

[1] 4321.942

Page 83: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

83

Funções

iii) Experimente usar a função para determinar qual o capital final para três situações diferentes (a taxa de juro ser 4%, 5% ou 6%).

cc(1000, c(0.04,0.05,0.06) ,30)

[1] 3243.398 4321.942 5743.491

Page 84: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

84

Funções

iv) acrescente uma condição de forma que, se o capital for maior que 50000€, a taxa de juro é maior em 0.5pp e acrescente na saída a taxa de juro. Experimente a função.

Page 85: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

85

Funções

cc <-function(cap.ini, t.jr, prazo){

if(cap.ini < 50000) tx<- t.jr else tx<-t.jr+0.005

cap.final<-cap.ini*(1+tx)^prazo

resultado<-c(cap.ini, tx, prazo, cap.final)

names(resultado)<-c("Cap.ini", "Tx.juro", "Prazo", "Cap.final")

resultado}

Page 86: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

86

Execução repetida

Page 87: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

87

Execução repetida

Existe recorrentemente necessidade de repetir uma série de operações

Por exemplo, no Método de Monte Carlos1. Eu sei como resolver um modelo mas

uma variável segue uma variável aleatória

2. Experimento vários valores da variável3. Calculo o valor médio e o desvio padrão

e faço um histograma

Page 88: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

88

Execução repetida

E.x. Do 2ºteste

Invisto 1 milhão de euros por ano e dentro de N anos faço uma descoberta

N é desconhecido mas tem distribuição normal com média 10 anos e desvio padrão 5 anos.

Taxa de juro de 3% ao ano

Page 89: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

89

Execução repetida

#determino 1000 casos possíveis

N <- rnorm(1000,mean=10,sd=5)

#determino 1000 valores actuais

Tx.j<-0.03

VA<- 1/Tx.j*(1-(1+Tx.j)^-N)

mean(VA)

sd(VA)

Page 90: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

90

Execução repetida

Mas se eu repetir esta série de comandos, resultam outros valores

Essas diferenças traduzem “erros de calculo” que serão tanto menos quanto mais replicas usarmos

Posso fazer um ciclo para avaliar esse erro

Page 91: 1 Introdução à Programação Linguagem R. 2 Introdução A aprendizagem de uma linguagem de programação desenvolve a capacidade de raciocínio e análise do

91

Execução repetida

M=0 #crio o vector M senão não posso usar M[i]

Dp=0 #crio o vector Dp

for (i in 1:100) #Faço 100 replicações do cálculo

{

N <- rnorm(1000,mean=10,sd=5)

Tx.j<-0.03

VA<- 1/Tx.j*(1-(1+Tx.j)^-N)

M[i] =mean(VA)

Dp[i]=sd(VA)

}