Apostila Prog Estatistica (Apostila R)

Post on 03-Mar-2016

40 views

Category:

Documents

0 download

DESCRIPTION

programao estatistica no R

TRANSCRIPT

  • Apostila de Programacao Estatstica

    Jessica Kubrusly

    Departamento de EstatsticaInstituto de Matematica e Estatstica

    Universidade Federal Fluminenes

    marco de 2013

  • Prefacio

    Esta apostila foi desenvolvia com o objetivo de se tornar um roteiro de aula para a disci-plina Programacao Estatstica, oferecida aos alunos do curso de Graduacao em Estatsticapelo Departamento de Estatstica da Universidade Federal Fluminense - UFF.

    A disciplina de Programacao Estatstica e constituda por uma aula teorica e duaspraticas por semana. Cada captulo desta apostila aborda o conteudo trabalhado em cadasemana. Alem disso a apostila e separada em 3 partes. Ao final de cada parte os alunossao submetidos a uma prova teorica e uma prova pratica. O foco da disciplina e praticartecnicas de programacao usando a linguagem de programacao R e tendo como plano defundo conceitos de estatstica descritiva, algebra linear basica e calculo.

    O aluno matriculado nessa disciplina ja foi aprovado em uma disciplina introdutoriasobre programacao de computadores e por isso este nao e o seu primeiro contato como assunto. Ao final desta disciplina espera-se que o aluno tenha nao so aprimorado suahabilidade computacional como tambem reforcado conceitos de estatstica e calculo javistos em outras disciplinas.

    Para maiores informacoes sobre a linguagem de programacao R entre no site oficialdo projeto: http://www.r-project.org/. La e possvel obter informacoes sobre comobaixar e instalar o R em seu computador. Alem disso, manuais introdutorios sao dispo-nibilizados gratuitamente.

    i

  • Sumario

    Prefacio i

    I Conceitos Basicos de Programacao 1

    1 Objetos e Classes 21.1 Numeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Textos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Logicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4 Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.5 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.6 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2 Controle de Fluxo 102.1 if/else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.4 repeat/break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    3 Funcoes e o Conceito de Variavel Local 183.1 Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.2 Variaveis Locais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    4 Algoritmos para CalculosEstatsticos 264.1 Maximo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.2 Mnimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.3 Media . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.4 Mediana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.5 Quartis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.6 Frequencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.7 Moda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.8 Amplitude Total . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.9 Distancia Interquartlica . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.10 Variancia Amostral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.11 Desvio Medio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    ii

  • Sumario

    4.12 Covariancia Amostral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    5 Algoritmos para CalculosMatriciais 375.1 Multiplicacao de vetor por escalar . . . . . . . . . . . . . . . . . . . . . . 375.2 Soma entre vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.3 Subtracao entre vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.4 Produto interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.5 Multiplicacao de matriz por escalar . . . . . . . . . . . . . . . . . . . . . 395.6 Soma entre matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.7 Subtracao entre Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.8 Transposicao de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.9 Multiplicacao entre matriz e vetor . . . . . . . . . . . . . . . . . . . . . . 415.10 Multiplicacao entre matrizes . . . . . . . . . . . . . . . . . . . . . . . . . 42Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    II Recursao 45

    6 Algoritmos Recursivos 466.1 Fatorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.2 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.3 Sequencias Definidas a partir de

    Equacoes de Diferencas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.3.1 Padroes geometricos . . . . . . . . . . . . . . . . . . . . . . . . . 486.3.2 Matematica Financeira . . . . . . . . . . . . . . . . . . . . . . . . 496.3.3 Fibonacci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    7 Algoritmos Recursivos(continuacao) 567.1 Series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567.2 Maior Divisor Comum . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577.3 Torre de Hanoi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    8 Algoritmos de Ordenacao 638.1 Ordenacao Bolha (Bubble Sort) . . . . . . . . . . . . . . . . . . . . . . . 638.2 Ordenacao Rapida (Quick Sort) . . . . . . . . . . . . . . . . . . . . . . . 67Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    9 Complexidade deAlgoritmos 729.1 Nocao Introdutoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729.2 A Notacao O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739.3 Exemplos Basicos de Complexidade . . . . . . . . . . . . . . . . . . . . . 74

    9.3.1 Complexidade Constante - O(1) . . . . . . . . . . . . . . . . . . . 749.3.2 Complexidade Logartmica- O(log(n)) . . . . . . . . . . . . . . . 74

    Departamento de Estatstica - UFF iii

  • Sumario

    9.3.3 Complexidade Linear - O(n) . . . . . . . . . . . . . . . . . . . . . 749.3.4 Complexidade n log(n) - O(n log(n)) . . . . . . . . . . . . . . . . 749.3.5 Complexidade quadratica - O(n2) . . . . . . . . . . . . . . . . . . 759.3.6 Complexidade cubica - O(n3) . . . . . . . . . . . . . . . . . . . . 759.3.7 Complexidade exponencial - O(cn) . . . . . . . . . . . . . . . . . 75

    Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    III Uma Introducao ao Calculo Numerico 79

    10 Aproximacao de Funcoes porSeries de Taylor 8010.1 Serie de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8010.2 Aproximacao para a funcao exponencial . . . . . . . . . . . . . . . . . . 8110.3 Aproximacao para a funcao logaritmo . . . . . . . . . . . . . . . . . . . . 83Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    11 Aproximacao de Razes deFuncoes Reais 8711.1 Preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8711.2 Metodo da Bissecao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8811.3 Metodo de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . 9111.4 Comentarios Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    12 Derivacao Numerica 9612.1 Metodos Numericos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

    12.1.1 Primeiro Metodo . . . . . . . . . . . . . . . . . . . . . . . . . . . 9612.1.2 Segundo Metodo . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

    12.2 Analise dos erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9712.3 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

    13 Integracao Numerica 10413.1 Aproximacao por retangulos . . . . . . . . . . . . . . . . . . . . . . . . . 10513.2 Aproximacao por trapezios . . . . . . . . . . . . . . . . . . . . . . . . . . 10713.3 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

    Departamento de Estatstica - UFF iv

  • Parte I

    Conceitos Basicos de Programacao

    1

  • Semana 1: Objetos e Classes

    Toda variavel dentro da linguagem R e interpretada como um objeto que pertence a umadeterminada classe. Para saber qual a classe de um certo objeto podemos usar o comandoclass(obj), onde obj e o nome do objeto para o qual queremos saber a classe.

    Existem diversos tipos de classes. Algumas serao vistas ao longo deste curso e outrasapenas em disciplinas futuras. Por exemplo, podemos citar alguns tipos basicos que seraovistos na aula de hoje: "numeric", "logical", "character", "matrix" e "list".

    1.1 Numeros

    Os objetos numericos fazem parte da classe "numeric" e tratam-se dos numeros rais.Para criar um objeto desse tipo podemos usar, por exemplo, o comando x

  • Objetos e Classes

    Para saber mais sobre a classe "character" consulte o help do R atraves do comandohelp(character).

    1.3 Logicos

    Os objetos do tipo logico fazem parte da classe "logical" e podem ser de dois tipos:TRUE ou FALSE. Eles tambem podem ser simplesmente representados pelas letras T ouF. Para criar um objeto desse tipo podemos usar, por exemplo, o comando v

  • Objetos e Classes

    Um comando muito importante que pode ser usado em arrays e o length(), queretorna o tamanho do array. Por exemplo, se digitarmos length(a) a resposta sera onumero 3. Ou seja, se digitarmos n

  • Objetos e Classes

    Ao lado do sinal de = devemos colocar as informacoes da matriz que esta sendo criada:

    data= array com os objetos que serao alocado dentro da matriz;ncol= numero de colunas da matriz;nrow= numero de linhas da matriz;byrow= TRUE ou FALSE que indica se os objetos serao alocados

    por linha ou por coluna;dimnames = lista1 com os nomes para as linhas e colunas da matriz.

    Se alguma das informacoes nao for preenchida sera considerado o valor padrao paracada entrada, que nesse caso e: data=NA, ncol=1, nrow=1 e dimnames = NULL.

    Vejamos alguns exemplos de como usar este comando e criar matrizes. Considere osseguintes comandos digitados no prompt do R:

    > mdat1 mdat1[,1] [,2] [,3]

    [1,] 1 2 3

    [2,] 11 12 13

    Veja que mdat1 e um objeto da classe "matrix". Para verificar basta digitar:

    > class(mdat1)

    [1] "matrix"

    Veja que se mudarmos o numero de linhas ou colunas a matriz criada e totalmentediferente.

    > mdat2 mdat2[,1] [,2]

    [1,] 1 2

    [2,] 3 11

    [3,] 12 13

    Veja agora como ficaria a matriz se ela fosse alocada por colunas (byrow=FALSE).

    > mdat3 mdat3[,1] [,2]

    [1,] 1 11

    [2,] 2 12

    [3,] 3 13Quando criamos um objeto da classe "matrix", o numero de linhas e de colunas tem

    que ser determinado logo de incio e nao pode ser alterado depois.As posicoes de uma matriz sao acessadas usando o comando [ , ]. Por exemplo, se

    digitarmos mdat3[2,1] a resposta sera 2, que e o elemento guardado na segunda linha eprimeira coluna. Com esse mesmo comando podemos pegar linhas ou colunas inteirasde uma matriz: se digitarmos mdat3[1,] a resposta sera um array com os elementos dalinha 1; se digitarmos mdat3[,2] a resposta sera um array com os elementos da coluna2.

    Se quisermos o numero de linhas de uma matriz podemos usar o comando nrow(),se digitarmos nrow(mdat3) a resposta sera 3. Para saber o numero de colunas de umamatriz use, de forma analoga, o comando ncol().

    1A classe lista sera vista na proxima secao.

    Departamento de Estatstica - UFF 5

  • Objetos e Classes

    Para saber mais sobre a classe "matrix" consulte o help do R atraves do comandohelp(matrix).

    1.6 Listas

    Na linguagem R a classe que guarda os objetos em forma de lista e denominada "list".Esse objeto guarda uma sequencia de objetos e a sua principal diferenca para os arrays eque a lista pode guardar objetos de tipos diferentes.

    Para criarmos uma lista vamos usar o comando list(). Se simplesmente digitar-mos l1

  • Objetos e Classes

    Exerccios - 1 Semana

    1.1 Defina x, y e z como sendo objetos do tipo "numeric" que guardam os valores 0, -1 e32, respectivamente. Faca no prompt do R as contas a seguir e verifique se o resultado

    esta como o esperado.

    (a) a = x+ y + z, b = yz e c = zy;

    (b) z2, z3, zx e zy;

    (c)a,x ey;

    (d) 3b, 41c

    e3z2;

    (e) |x|, |y| e |z|;(f) exp(x), exp(y) e exp(c);

    (g) ln(x), ln(a) e ln(b);

    (h)pi e ex.

    1.2 Defina ch1, ch2 e ch3 como sendo objetos do tipo "character" que guardam ostextos a, b e c, respectivamente.

    (a) Usando a funcao paste a partir de ch1, ch2 e ch3 crie um quarto objeto da classe"character", ch4, definido por a.b.c.

    (b) Usando a funcao paste a partir de ch1, ch2 e ch3 crie um quinto objeto da classe"character", ch5, definido por abc.

    (c) Usando o comando == verifique se ch4 e ch5 sao iguais ou diferentes.

    (d) Usando o comando != verifique se ch4 e ch5 sao iguais ou diferentes.

    1.3 O operador %% fornece o resto da divisao entre dois numeros, por exemplo, 15%%4fornece o resto da divisao de 15 por 4, que e 3. Esse comando sera bastante usadodurante o curso. Faca os itens a seguir primeiros no papel e depois verifique a respostausando o R.

    (a) Qual a resposta para 18%%5, -5%%2, 15%%5 e 8.3%%3?

    (b) Como podemos usar o operador %% para testar se um numero e par? Faca o testeno prompt do R e use tambem os operadores == ou != de forma que a respostaseja TRUE se o numero for par e FALSE caso contrarios.

    (c) Como podemos usar o operador %% para testar se um numero e inteiro? Facao teste no prompt do R e use tambem os operadores == ou != de forma que aresposta seja TRUE se o numero for inteiro e FALSE caso contrarios.

    (d) Como podemos usar o operador %% para testar se um numero e natural, isto e,inteiro e positivo? Faca o teste no prompt do R e use tambem os operadores ==,!=, && ou || de forma que a resposta seja TRUE se o numero for natural e FALSEcaso contrarios.

    1.4 Digite no prompt do R:

    > a

  • Objetos e Classes

    (c) Crie um array z onde cada posicao de z e um objeto da classe "logic". A posicaoi de z va...