luís torgo, 2002 fep, up 1 o r é um program gratuito que permite entre outras coisas: –escrever...

27
Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: Escrever programas para realizar tarefas complexas. Fazer análise estatística de forma tão ou mais poderosa que outros programas não gratuitos (SPSS, SAS, etc.). Visualizar os resultados da análise de dados através de gráficos bastante poderosos. Importar dados de outros programas (Access, Excel, SPSS, SAS, etc.). Realizar operações complexas de diversas áreas, como por exemplo: • Álgebra matricial, • Optimização, • Análise numérica, • Análise estatística, • Etc.

Upload: internet

Post on 17-Apr-2015

102 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 1

• O R é um program gratuito que permite entre outras coisas:– Escrever programas para realizar tarefas complexas.– Fazer análise estatística de forma tão ou mais poderosa que outros

programas não gratuitos (SPSS, SAS, etc.).– Visualizar os resultados da análise de dados através de gráficos

bastante poderosos.– Importar dados de outros programas (Access, Excel, SPSS, SAS,

etc.).– Realizar operações complexas de diversas áreas, como por

exemplo:• Álgebra matricial,• Optimização,• Análise numérica,• Análise estatística,• Etc.

Page 2: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 2

Informação básica sobre a interacção com o R• Iniciar o R na FEP

Page 3: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 3

A janela (consola) do R

O promptOnde se vão escreveros comandos

Page 4: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 4

Como se vai processar a interacção com o R

• Digitar comandos no prompt– Escreve-se o comando e carrega-se na

tecla Enter.

– O R executa o comando e apresenta oresultado dessa execução (pode ser textoou um gráfico).

> R.version _ platform i386-pc-mingw32arch i386 os mingw32 system i386, mingw32 status major 1 minor 5.1 year 2002 month 06 day 17 language R

• Escrever os comandos num ficheiro de texto (usando por exemplo o Notepad) e depois usar um comando do R para executar os comandos contidos nesse ficheiro, todos de uma vez.

–Mais prático para projectos maiores.

Page 5: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 5

Edição na linha de comando (prompt)

• É possível com as teclas das setas“ir buscar” os comandos digitadosanteriormente.

• Isto é prático quando se usam comandosparecidos, ou quando se pretende fazer uma pequena alteração a umcomando anterior, pois evita digitartudo de novo

Page 6: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 6

Acabar a sessão com o R

• Através do comando q()

– Responder “Yes” só deveser feito se se pretendercontinuar o que se estavaa fazer, numa posteriorexecução do R. Senão deve-seresponder “No”.

• Carregando no “X” da janela do R– Aparecer a mesma janela de diálogo com a mesma pergunta.

Page 7: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 7

Objectos do R

• O R é uma linguagem orientada aos objectos.– Qualquer calculo pode ser guardado num objecto.

– Um objecto é uma entidade com um nome à qual nós podemos associar um conteúdo. O nome do objecto pode depois ser usado para ver o conteúdo do objecto, ou para usar esse conteúdo em computações posteriores.

• Exemplo• Guardar o número 45 num objecto chamado X

> X <- 45• Ver o conteúdo do objecto X

> X

[1] 45

Instrução de atribuiçãoO operador “<-” serve paraatribuir (guardar) um valor numobjecto.

Page 8: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 8

A instrução de atribuição (alguns exemplos)

• A instrução de atribuição é destrutiva– Isto quer dizer que cada objecto só pode guardar 1 valor.

Exemplo:> y <- 78

> y

[1] 78

> y <- 90

> y

[1] 90

• Podem-se atribuir expressões numéricas a um objecto. – O que é guardado é o resultado e não a expressão!

> z <- 5

> w <- z^2

> w

[1] 25

> i <- (z*2 + 45)/2

> i [1] 27.5

Page 9: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 9

• O R pode ser usado como uma espécie de calculadora, pois o resultado das expressões não precisa de ser guardado num objecto:> (34 + 90)/12.5

[1] 9.92

• Sempre que atribuímos algo a um novo objecto, o R cria-o e o seu conteúdo fica na memória do computador.– Como esta é limitada, devemos apagar o objecto se já não

precisamos mais dele.

– Para ver que objectos estão na memória do R faz-se:> objects()

[1] "i" "w" "X" "y" "z"

– Para remover algum objecto faz-se:> rm(y)

> rm(z,w)

Page 10: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 10

Nomes válidos para os objectos

• Os nomes dos objectos podem incluir:– Qualquer letra (maiúscula ou minúscula)

– Qualquer dígito de 0 a 9 (excepto no início do nome)

– O ponto final “.”

• Os nomes dos objectos em R são sensíveis às letras maiúsculas / minúsculas. – Isto quer dizer que Cor e cor são dois objectos diferentes.

• Não se podem usar espaços nos nomes dos objectos. > taxa de juro <- 0.05

Error: syntax error

Em alternativa poderia usar o seguinte nome que já seria válido, > taxa.de.juro <- 0.05

Page 11: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 11

Vectores

• Um vector é uma estrutura usada para armazenar dados de um determinado tipo (ex. números), que estejam relacionados (ex. as taxas de juro dos países da UE).

• Um objecto pode guardar um vector.

• Os elementos que constituem um vector podem ser acedidos individualmente.

• Todos os vectores em R têm um modo e um tamanho.

• O modo determina o tipo de valores guardado no vector. – Podemos ter vectores com modo character, logical, numeric e complex.

– Ou seja, podemos ter vectores para armazenar conjuntos de caracteres, valores lógicos (F ou T ou FALSE ou TRUE), números, e números complexos.

• O tamanho de um vector é o número de elementos que ele contém, e pode ser obtido com a função length() aplicada ao vector.

Page 12: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 12

Criar vectores

• Para criar um vector usamos a função c(), separando os elementos do vector por vírgulas.

> v <- c(4,7,23.5,76.2,80)

> v

[1] 4.0 7.0 23.5 76.2 80.0

> length(v)

[1] 5

• Todos os elementos têm que ser do mesmo tipo (modo).– Caso tentemos criar um vector com elementos de tipo diferente o R vai forçá-los a ser do mesmo tipo, alterando-os. > v <- c(4,7,23.5,76.2,80,"rrt")

> v

[1] "4" "7" "23.5" "76.2" "80" "rrt"

Page 13: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 13

• As strings em R são conjuntos de caracteres englobados por aspas ou plicas,

> w <- c("rrt",'ola','isto e uma string')

> w

[1] "rrt" "ola" "isto e uma string"

• Todos os vectores podem ter um elemento especial que é o NA. Este valor representa um valor desconhecido. – Exemplo: se temos os lucros trimestrais de uma empresa

guardados num vector, mas desconhecemos o seu valor no terceiro trimestre, poderíamos usar a seguinte instrução para criar esse vector, > lucros <- c(234000,245000,NA,124500)

> lucros

[1] 234000 245000 NA 124500

Page 14: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 14

Aceder aos elementos dos vectores

• Os elementos de um vector podem ser acedidos através de um índice. – Na sua forma mais simples um índice é um número indicando o

elemento que pretendemos aceder. Esse número é colocado entre parênteses rectos a seguir ao nome do vector,

> lucros[2]

[1] 245000

• Podemos alterar o conteúdo de um elemento particular de um vector,

> lucros[3] <- 45000

> lucros

[1] 234000 245000 45000 124500

> lucros <- c(234000,245000,NA,124500)

> lucros

[1] 234000 245000 NA 124500

Page 15: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 15

• Podemos criar vectores vazios usando a função vector(), > k <- vector()

• O tamanho de um vector já existente pode ser alterado atribuindo mais elementos a índices até agora inexistentes,

> k[3] <- 45

> k

[1] NA NA 45

– Os dois primeiros elementos do vector k, que anteriormente era um vector vazio, ficaram com o valor NA ao colocarmos o valor 45 no terceiro elemento.

• Para diminuirmos o tamanho de um vector podemos usar a instrução de atribuição. Por exemplo,

> v <- c(45,243,78,343,445,645,2,44,56,77)

> v

[1] 45 243 78 343 445 645 2 44 56 77

> v <- c(v[5],v[7])

> v

[1] 445 2

Page 16: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 16

Operações com vectores

• Um dos aspectos mais poderosos da linguagem R é a possibilidade de ''vectorizar'' a maioria das suas funções.– Ao aplicar uma função a um vector, obtemos como resultado um

vector de resultados.• Cada elemento é o resultado de aplicar a função a cada um dos elementos do

vector inicial.

> v <- c(4,7,23.5,76.2,80)

> x <- sqrt(v)

> x

[1] 2.000000 2.645751 4.847680 8.729261 8.944272

– Ao atribuir a x o resultado de aplicar a função sqrt() ao vector v, estamos de facto a criar um vector com as raízes quadradas dos números contidos em v.

Page 17: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 17

Operações aritméticas com vectores

• Podemos aplicar os operadores aritméticos a vectores, > v1 <- c(4,6,87)

> v2 <- c(34,32.4,12)

> v1+v2

[1] 38.0 38.4 99.0

• O que acontece se tentamos realizar operações envolvendo vectores de tamanho diferente? – O R vai usar um regra de reciclagem dos valores do vector mais

curto até este atingir o tamanho do maior. Por exemplo, > v1 <- c(4,6,8,24)

> v2 <- c(10,2)

> v1+v2

[1] 14 8 18 26

– É como se o vector c(10,2) fosse de facto c(10,2,10,2).

Os elementos são somadosum a um.

Page 18: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 18

• Se os tamanhos não são múltiplos um do outro, o R imprime um aviso no écran,

> v1 <- c(4,6,8,24) > v2 <- c(10,2,4) > v1+v2 [1] 14 8 12 34 Warning message: longer object length is not a multiple of

shorter object length in: v1 + v2 – Repare-se que um aviso não é um erro, o que quer dizer que a operação foi

levada a cabo.

• Um número é de facto armazenado em R como um vector de tamanho 1. Logo, devido à regra da reciclagem, podemos fazer> v1 <- c(4,6,8,24) > 2*v1

[1] 8 12 16 48 – O número 2 (de facto o vector c(2)!) foi reciclado até atingir o tamanho do

vector v1– O resultado é a multiplicação dos elementos todos deste vector por 2.

Page 19: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 19

Factores

• Os factores proporcionam uma forma fácil e compacta de lidar com dados categóricos (variáveis nominais).

• O R possui várias funções que tiram partido do facto de guardarmos informação categórica como factores em vez de usarmos strings.

• Suponhamos que pretendemos guardar o sexo de 10 indivíduos num vector,

> s <- c('f','m','m','m','f','m','f','m','f','f') > s [1] "f" "m" "m" "m" "f" "m" "f" "m" "f" "f"

• Podemos transformar um vector de caracteres num factor da seguinte forma,

> s <- factor(s) > s [1] f m m m f m f m f f Levels: f m

Page 20: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 20

• Suponhamos que temos 4 novos indivíduos cujo sexo também pretendemos armazenar num factor. – Imaginemos que todos pertencem ao sexo masculino. Se

pretendemos que o factor resultante mantenha os 2 níveis possíveis para o sexo de um indivíduo teremos que fazer,

> outro.s <- factor(c('m','m','m','m'),levels=c('f','m'))

> outro.s

[1] m m m m

Levels: f m

– Sem o parâmetro “levels”, o factor resultante teria um único nível (m), uma vez que este é o único valor que ocorre no vector de caracteres que estamos a transformar num factor.

Page 21: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 21

Contagem de ocorrências em factores

• A função table() permite-nos contar o número de ocorrências de cada nível de um factor,

> table(s)

s

f m

5 5

> table(outro.s)

outro.s

f m

0 4

Page 22: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 22

• A função table() também pode ser usada para fazer tabulações cruzadas de dois factores.– desde que tenham o mesmo tamanho.

• Imaginemos que temos um outro vector com a gama de idades dos indivíduos cujo sexo está armazenado em s.

• Podemos fazer uma tabulação cruzada da idade e do sexo dos 10 indivíduos, da seguinte forma,

> idade <- factor(c('adulto','adulto','jovem','jovem','adulto','adulto', + 'adulto','jovem','adulto','jovem')) > idade [1] adulto adulto jovem jovem adulto adulto adulto jovem adulto jovem Levels: adulto jovem> s [1] f m m m f m f m f fLevels: f m > table(idade,s) sidade f m adulto 4 2 jovem 1 3

Prompt de continuaçãode linha

Page 23: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 23

Sequências

• Podem-se gerar sequências em R de várias formas. – Por exemplo, imaginemos que pretendemos criar um vector com

os número de 1 a 1000. Em vez de os escrevermos todos, podemos usar, > x <- 1:1000

• Devemos ter algum cuidado com a precedência do operador ``:'' em relação aos operadores aritméticos,

> 10:15-1

[1] 9 10 11 12 13 14

> 10:(15-1)

[1] 10 11 12 13 14

Page 24: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 24

• O operador ``:'' também pode ser usado para gerar sequências descendentes,

> 5:0

[1] 5 4 3 2 1 0

• Para gerar sequências com números reais podemos usar a função seq(),

> seq(-4,1,0.5)

[1] -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0

> seq(from=1,to=5,length=4)

[1] 1.000000 2.333333 3.666667 5.000000

> seq(from=1,to=5,length=2)

[1] 1 5

> seq(length=10,from=-2,by=.2)

[1] -2.0 -1.8 -1.6 -1.4 -1.2 -1.0 -0.8 -0.6 -0.4 -0.2

Page 25: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 25

• Uma outra função bastante útil para gerar sequências é a função rep()

> rep(5,10) [1] 5 5 5 5 5 5 5 5 5 5 > rep('sim',3) [1] "sim" "sim" "sim" > rep(1:3,2) [1] 1 2 3 1 2 3

• A função gl() pode ser usada para gerar sequências envolvendo factores. A sintaxe desta função é gl(k,n), em que k é o número de níveis do factor e n o número de repetições de cada nível.

> gl(3,5) [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 Levels: 1 2 3 > gl(2,5,labels=c('nao','sim')) [1] nao nao nao nao nao sim sim sim sim sim Levels: nao sim

Page 26: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 26

Sequências aleatórias

• O R tem uma série de funções para gerar sequências aleatórias de acordo com uma série de funções de distribuição de probabilidade.– Essas funções têm a forma genérica rfunc(n, par1, par2, ...), em que n é o

número de dados a gerar, e par1, par2, ... são valores de alguns parâmetros que a função específica a usar possa precisar.

– Por exemplo, se pretendemos 10 números gerados aleatoriamente de acordo com uma distribuição normal de média 0 e desvio padrão unitário, podemos fazer,

> rnorm(10)

[1] -0.306202028 0.335295844 1.199523068 2.034668704 0.273439339

[6] -0.001529852 1.351941008 1.643033230 -0.927847816 -0.163297158

• Se preferirmos 10 números provenientes de uma distribuição normal com média 10 e desvio padrão 3, faríamos

> rnorm(10,mean=10,sd=3)

[1] 7.491544 12.360160 12.879259 5.307659 11.103252 18.431678 9.554603

[8] 9.590276 7.133595 5.498858

Page 27: Luís Torgo, 2002 FEP, UP 1 O R é um program gratuito que permite entre outras coisas: –Escrever programas para realizar tarefas complexas. –Fazer análise

Luís Torgo, 2002 FEP, UP 27

• De igual modo para obter 5 números obtidos de forma aleatória de uma distribuição t de Student com 10 graus de liberdade, fazemos

> rt(5,df=10)

[1] -0.46608438 -0.44270650 -0.03921861 0.18618004 2.23085412

• O R tem muitas mais funções para outras distribuições de probabilidade, bem como funções semelhantes para obter a densidade de probabilidade, as densidades acumuladas e os quartis das distribuições.