Análise exploratória e modelação com r parte 3

Post on 15-Apr-2017

256 views 4 download

Transcript of Análise exploratória e modelação com r parte 3

Minicurso I

Análise Exploratória e Modelação com R 3. Tópicos de Inferência Estatística

Amílcar Oliveira ; Teresa Oliveira

amilcar.oliveira@uab.pt teresa.oliveira@uab.pt

DCeT, Universidade Aberta & CEAUL, Universidade de Lisboa

Manaus, 12 a 15 de agosto, 2014

Tópicos

1. Distribuições de Probabilidade

2. Intervalos de Confiança

3. Testes de hipóteses

4. Métodos não Paramétricos

2 MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Distribuições de Probabilidade

3

DISTRIBUIÇÕES CONTÍNUAS

DISTRIBUIÇÕES DISCRETAS

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Distribuição Descrição

rnorm(n,mean,sd)

runif(x,min,max)

rt(x,df)

rf(x)

rexp(x)

rchisq(x,df)

rbinom(x,n,p)

rgeom(x,p)

rpois(x,lambda)

rhyper(x,m,n,k)

Normal Uniforme t de Student F Exponencial Qui-Quadrado Binomial Geométrica Poisson Hipergeométrica

Distribuições de Probabilidade

4

DISTRIBUIÇÃO NORMAL

Como gerar valores de uma distribuição normal de média µ e variância 𝜎2 ?

Exemplo: gerar 20 valores de uma distribuição normal de média µ=10 e variância=4

X <- rnorm(20,mean=10,sd=2)

[1] 10.454307 10.109470 10.819990 7.593200 14.135418 6.808652

9.907171 12.377358 9.653927 10.555182 9.588058 12.041869 8.157866

8.119346 8.003958 10.399826 11.971313 13.579755 12.913764

7.725487

O R aceita usar uma função dentro de outra função, assim podemos também resolver da

forma

x <- rnorm(20,mean=10,sd=sqrt(4))

Como todas as funções em geral, a função rnorm() considera valores dos parâmetros

“por defeito”:

x<-rnorm(20) # apresenta 20 valores de uma distribuição normal de

média 0 e variância 1

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Distribuições de Probabilidade

5

DISTRIBUIÇÃO NORMAL

Vamos verificar a ideia anterior, gerando 10000 valores de uma Normal (0,1) e calculando

de seguida a média e a variância dos valores gerados.

> x<-rnorm(10000)

> mean(x)

[1] 0.0007968414

> sd(x)

[1] 1.003954

O resultado não dá os valores exatos, pois trata-se da geração de números pseudo-

aleatórios. No entanto a medida que se aumente o número de valores gerados a precisão

aumenta.

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Distribuições de Probabilidade

6

DISTRIBUIÇÃO NORMAL

Podemos visualizar a distribuição gerada inicialmente usando a função plot().

> x<-rnorm(20,10,2)

> plot(x)

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

5 10 15 20

68

10

12

Index

x

Distribuições de Probabilidade

7

DISTRIBUIÇÃO NORMAL

E na forma de histograma usando a função hist().

> hist(x)

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Histogram of x

x

Fre

qu

en

cy

6 8 10 12 14

01

23

45

Distribuições de Probabilidade

8

DISTRIBUIÇÃO NORMAL

Usando o gráfico de estremos e quartis (boxplot) boxplot().

> boxplot(x)

máximo

3º quartil

mediana

1º quartil

mínimo

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

68

10

12

Distribuições de Probabilidade

9

DISCRETAS

Comecemos por considerar uma função de probabilidade

𝑃 𝑋 = 𝑘 =

0.2 𝑠𝑒 𝑥 = 10.1 𝑠𝑒 𝑥 = 20.4 𝑠𝑒 𝑥 = 30.3 𝑠𝑒 𝑥 = 4

0 𝑜𝑢𝑡𝑟𝑜𝑠 𝑐𝑎𝑠𝑜𝑠

Como representar graficamente no R?

> x<-0:4

> y<-c(0,0.2,0.1,0.4,0.3)

> plot(x,y, type="h")

> points(1,0.2)

> points(2,0.1)

> points(3,0.4)

> points(4,0.3)

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

0 1 2 3 4

0.0

0.1

0.2

0.3

0.4

x

y

Distribuições de Probabilidade

10

DISCRETAS

E agora a função acumulada

𝑃 𝑋 ≤ 𝑘 = 𝐹 𝑋 =

0.2 𝑠𝑒 𝑥 < 10.3 𝑠𝑒 𝑥 < 20.7 𝑠𝑒 𝑥 < 31 𝑠𝑒 𝑥 ≥ 4

Como representar graficamente no R?

x<-0:4

y<-c(0,0.2,0.3,0.7,1)

plot(x,y, type="s")

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

0 1 2 3 4

0.0

0.2

0.4

0.6

0.8

1.0

x

y

Distribuições de Probabilidade

11

DISTRIBUIÇÃO BINOMIAL

A probabilidade de serem observados k sucessos é dada por

𝑃 𝑋 = 𝑘 =𝑛𝑘

𝑝𝑘(1 − 𝑝)𝑛−𝑘

No R a função que permite gerar números com distribuição binomial é rbinom()

Exemplo: Gerar 50 valores de uma distribuição binomial cuja probabilidade de sucesso é

de 10%, sendo o número de experiências (observações), 150.

> x <- rbinom(50, size=150, p=0.1)

> x

[1] 20 11 16 18 9 12 7 15 8 14 25 15 16 22 12 18 18 18 8 7

15 8 20 17 19

[26] 14 16 11 17 14 15 15 9 13 18 18 17 18 17 13 15 15 13 20 15

20 12 18 18 15

Este resultado poderia ser o de um estudo de epidemiologia, com

150 participantes, com uma prevalência de uma determinada doença

de 10% (correspondendo a uma probabilidade de sucesso de 0.1).

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Distribuições de Probabilidade

12

DISTRIBUIÇÃO BINOMIAL (abordagem gráfica)

Representando através do diagrama de caule e folhas com a função stem()

> stem(x)

The decimal point is at the |

6 | 00

8 | 00000

10 | 00

12 | 000000

14 | 000000000000

16 | 0000000

18 | 0000000000

20 | 0000

22 | 0

24 | 0

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Distribuições de Probabilidade

13

DISTRIBUIÇÃO BINOMIAL (abordagem gráfica)

E se quisermos duplicar a escala do gráfico… por exemplo 2 vezes…

> stem(x,scale=2)

The decimal point is at the |

7 | 00

8 | 000

9 | 00

10 |

11 | 00

12 | 000

13 | 000

14 | 000

15 | 000000000

16 | 000

17 | 0000

18 | 000000000

19 | 0

20 | 0000

21 |

22 | 0

23 |

24 |

25 | 0 MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Distribuições de Probabilidade

14

DISTRIBUIÇÃO BINOMIAL (abordagem gráfica)

Agrupando gráficos …

> par(mfrow=c(2,3))

> hist(rbinom(50, size=200, p=0.02))

> hist(rbinom(50, size=200, p=0.04))

> hist(rbinom(50, size=200, p=0.06))

> hist(rbinom(50, size=200, p=0.08))

> hist(rbinom(50, size=200, p=0.1))

> hist(rbinom(50, size=200, p=0.5))

Desta forma podemos ver no conjunto, como se altera a distribuição do número de pessoas atingidas pela doença ao aumentarmos o valor da prevalência da doença.

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Histogram of rbinom(50, size = 200, p = 0.02)

rbinom(50, size = 200, p = 0.02)

Fre

quen

cy

1 2 3 4 5 6 7 8

02

46

810

12

Histogram of rbinom(50, size = 200, p = 0.04)

rbinom(50, size = 200, p = 0.04)

Fre

quen

cy

2 4 6 8 10 14

05

1015

Histogram of rbinom(50, size = 200, p = 0.06)

rbinom(50, size = 200, p = 0.06)

Fre

quen

cy

6 8 10 14 18

05

1015

20

Histogram of rbinom(50, size = 200, p = 0.08)

rbinom(50, size = 200, p = 0.08)

Fre

quen

cy

10 15 20 25

02

46

810

Histogram of rbinom(50, size = 200, p = 0.1)

rbinom(50, size = 200, p = 0.1)

Fre

quen

cy

10 15 20 25 30

02

46

810

Histogram of rbinom(50, size = 200, p = 0.5)

rbinom(50, size = 200, p = 0.5)

Fre

quen

cy

80 90 100 110

05

1015

Inferência Estatística na comparação de amostras (alguns exemplos)

15

O R possui funções e permite procedimentos para a realização de um vasto número de

testes estatísticos.

Vamos a partir de agora abordar alguns deles e nos quais usaremos os seguintes

conjuntos de dados:

x<-c(16.1,15.2,18.7,10.2,13.6,14.2,19.3,17.7,12.1,13.2,14.2,15.2,15.8,16.0,15.0)

y<-c(13.1,13.6,14.7,12.2,14.2,13.9,15.3,13.7,13.5,14.0,16.9,16.0,13.1,17.0,11.9)

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Intervalos de Confiança / Testes de hipóteses

16

Teste t (de Student) Para uma média simples

Vamos testar se a média da população (de onde a amostra x foi retirada) é igual a 14. Para realizarmos este teste no R basta usar o comando:

> t.test(x, mu=14, conf.level=0.99)

One Sample t-test

data: x

t = 1.7802, df = 14, p-value = 0.09675

alternative hypothesis: true mean is not equal to 14

99 percent confidence interval:

13.26059 16.93941

sample estimates:

mean of x

15.1

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Intervalos de Confiança / Testes de hipóteses

17

Interpretação do output

One Sample t-test

data: x

t = 1.7802, df = 14, p-value = 0.09675

alternative hypothesis: true mean is not equal to 14

99 percent confidence interval:

13.26059 16.93941

sample estimates:

mean of x

15.1

Agora basta fazer a interpretação correta do output do R.

Para saber se a hipótese nula não é rejeitada, basta verificar o valor do p-value

e compará-lo com o nível de significância estipulado, neste caso 1%.

Dado que o valor do p-value é maior que o nível de significância estabelecido,

então não rejeitamos a hipótese nula, o que significa que a população de onde

foi retirada a amostra x possui média estatísticamente igual ao valor 14.

Podemos concluir também que o I.C. para a média populacional, considerando

o mesmo nível de significância de 1% é [13.26059 , 16.93941].

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

18

Teste t (de Student) – duas amostras independentes

Para a realização do teste t, teremos neste caso de admitir ainda dois

pressupostos: populações homocedásticas, e que seguem uma

distribuição normal. Vejamos o seguinte exemplo:

Suponha que queremos testar se “x” e “y” possuem médias

estatisticamente iguais a um nível de significância de 5%. Suponha

também que essas amostras são independentes.

> t.test(x,y,conf.level=0.95)

Welch Two Sample t-test

data: x and y

t = 1.2181, df = 23.806, p-value = 0.2351

alternative hypothesis: true difference in means is not equal to 0

95 percent confidence interval:

-0.6209537 2.4076204

sample estimates:

mean of x mean of y

15.10000 14.20667 MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Intervalos de Confiança / Testes de hipóteses

19

Interpretação do Output

Dado que o valor do p-value é maior que o nível de significância estabelecido

(5%), então não rejeitamos a hipótese nula, o que significa que estatísticamente

ambas as populações têm a mesma média.

Podemos concluir também que o I.C. para a diferença entre médias populacionais, considerando o mesmo nível de significância de 5% é

[-0.6209537 , 2.4076204]

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

20

Teste t (de Student) – duas amostras dependentes Para a realização do teste t, teremos neste caso de admitir dois

pressupostos: amostras homocedásticas, seguem uma distribuição normal.

Considerando o mesmo exemplo:

Suponhamos que queremos testar se “x” e “y” possuem médias

estatisticamente iguais a um nível de significância de 5%. > t.test(x,y,conf.level=0.95, paired=T)

Paired t-test

data: x and y

t = 1.4431, df = 14, p-value = 0.171

alternative hypothesis: true difference in means is not equal

to 0

95 percent confidence interval:

-0.4343352 2.2210019

sample estimates:

mean of the differences

0.8933333 MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Intervalos de Confiança / Testes de hipóteses

21

Interpretação do Output

Dado que o valor do p-value é maior que o nível de significância estabelecido

(5%), então não rejeitamos a hipótese nula, o que significa que estatísticamente

ambas as populações têm a mesma média.

Podemos concluir também que o I.C. para a diferença entre médias populacionais, considerando o mesmo nível de significância de 5% é

[-0.4343352 , 2.2210019]

Através deste resultado, podemos também chegar à mesma conclusão, ou seja

estando o valor da diferença entre médias a testar(neste caso é zero) contido

no intervalo leva-nos a concluir pela não rejeição da hipótese nula.

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

22

Teste F > x<-

c(16.1,15.2,18.7,10.2,13.6,14.2,19.3,17.7,12.1,13.2,14.2,15.2,15.

8,16.0,15.0)

> y<-

c(13.1,13.6,14.7,12.2,14.2,13.9,15.3,13.7,13.5,14.0,16.9,16.0,13.

1,17.0,11.9)

> var.test(x,y)

F test to compare two variances

data: x and y

F = 2.4468, num df = 14, denom df = 14, p-value = 0.1055

alternative hypothesis: true ratio of variances is not equal to 1

95 percent confidence interval:

0.8214631 7.2880075

sample estimates:

ratio of variances

2.4468

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Intervalos de Confiança / Testes de hipóteses

Métodos não paramétricos

23

As técnicas estatísticas não paramétricas procuram providenciar

procedimentos estatísticos inferenciais menos exigentes do que no caso

paramétrico, ou seja com pressupostos relaxados relativamente às

distribuições subjacentes às populações.

São técnicas de um modo geral bastante simples e portanto acessíveis para

um elevado número de pessoas, não necessariamente estatísticos,

encontrando-se muitas aplicações em áreas como as Ciências Sociais, os

Recursos Humanos e a Psicologia.

Sabe-se que, quanto maior for a informação disponível acerca da distribuição

subjacente aos dados, melhores serão os procedimentos inferenciais

respectivos. Verifica-se que um procedimento não paramétrico geralmente

conduz a uma maior variância (no caso da estimação pontual) e a uma menor

potência (nos testes de hipóteses) quando comparado com um paramétrico.

No entanto muitas são as situações em que é desejável dispensar

pressupostos, sendo nesta altura bastante importante o recurso aos métodos

não paramétricos. MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

Métodos não paramétricos

24

De um modo geral os testes não paramétricos são de simples recursos

computacionais, apresentando ainda a vantagem de se poderem aplicar a

situações de variáveis com tipologias pobres em termos de quantificação

ou de ordenação, sendo muitos deles aplicáveis a dados de caracter

qualitativo, ou que apenas se apresentam de acordo com uma escala

ordinal.

Serão abordados os seguintes tipos de testes:

• Teste para a independência (Qui-quadrado)

• Testes para a comparação de médias (O teste U de Mann-Whitney:

comparação de duas amostras independentes ; Kruskal-Wallis

comparação de k amostras independentes)

• Testes de ajustamento (Qui-quadrado, Kolmogorov-Smirnov, Shapiro-

Wilk

• Teste de aleatoriedade (Qui-quadrado)

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

25

Exemplo(teste para a independência):

Num gabinete de planeamento familiar, foi efectuado um estudo, para averiguar

se existe associação entre o estado civil do casal (casados, solteiros) e a

existência de filhos no agregado familiar (com filhos, sem filhos).

Para tal, durante um certo período de tempo, foram registadas observações, que

se apresentam na tabela

Com base nestes valores verifique se de facto existe associação.

Com filhos Sem filhos

Casados 35 25

Solteiros 20 45

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

26

R: Seja X a variável aleatória representativa do estado civil e Y a variável

aleatória representativa da situação (ter ou não ter filhos). As hipóteses a

testar serão H0 : Há independência entre X e Y

H1 : Não há independência entre X e Y

Apresenta-se de seguida o procedimento a seguir no R para resolução deste

exercício:

> count<-matrix(c(35,20,25,45),nrow=2)

> count

[,1] [,2]

[1,] 35 25

[2,] 20 45

> chisq.test(count,correct=F)

Pearson's Chi-squared test

data: count

X-squared = 9.6206, df = 1, p-value = 0.001924

Conclusão: Uma vez que o valor obtido p-value = 0.001924 < 0.05

então rejeita-se H0 , ao nível de significância de 5%. Concluindo-se que não

há independência entre o estado civil e o ter ou não ter filhos

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

27

Exemplo 2 (teste para a comparação de médias):

Na tabela encontram-se os valores das resistências à compressão (MPa) de

provetes cúbicos de betão, obtidos por dois processos distintos de

produção. Com base nesses dois processos retiram-se de forma aleatória,

duas amostras, uma com 12 provetes e outra com 8 provetes. Pretende-se

saber se existe ou não, diferenças significativas entre os dois processos de

produção. Para tal use o teste U de Mann-Whitney, considerando um nível

de significância de 1%.

Amostra A 24.3 23.5 26.4 25.5 27.4 25.8 23.4 25.9 28.5 25.5 29.4 27.2

Amostra B 24.1 25.5 24.8 23.3 24.5 26.7 25.7 27.9

R: Uma das possibilidades para resolver é utilizar o teste de Wilcoxon Rank

Sum Test implementado no R e que é equivalente ao teste U de Mann-

Whitney.

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

28

Assim teremos

> amostraA <-

c(24.3,23.5,26.4,25.5,27.4,25.8,23.4,25.9,28.5,25.5,29.4,27.2)

> amostraB <- c(24.1,25.5,24.8,23.3,24.5,26.7,25.7,27.9)

wilcox.test(amostraA,amostraB)

Wilcoxon rank sum test with continuity correction

data: amostraA and amostraB

W = 61, p-value = 0.3341

alternative hypothesis: true location shift is not equal to 0

Como p-value=0.3341>0.01, não rejeitamos a hipótese nula, ou seja ao

nível de significância considerado (1%), concluímos que não existem

diferenças entre os diferentes sistemas de produção.

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

29

Exemplo 3 (teste de ajustamento):

Escolheram-se 80 pessoas de forma aleatória e registou-se o peso de cada

uma (em quilogramas).

Pretendemos saber se esse conjunto de dados segue a distribuição de qui-

quadrado, considerando-se um nível de significância de 5%.

> pesos

[1] 46.88 47.17 64.46 67.84 85.76 65.41 60.10 75.84 61.21

61.65 63.87 53.95

[13] 63.66 69.06 76.41 75.56 69.04 35.18 66.42 58.78 73.02

51.69 90.88 53.01

[25] 64.31 61.91 79.42 57.78 62.73 60.63 63.29 46.53 84.64

61.76 85.08 59.66

[37] 54.89 94.18 59.89 68.56 75.66 72.06 62.00 43.43 73.38

73.31 66.37 73.72

[49] 66.15 67.79 47.17 64.46 67.84 51.23 34.33 65.43 76.34

87.23 98.23 76.34

[61] 86.34 65.44 45.44 67.99 67.44 65.87 86.29 76.88 55.44

34.67 46.78 34.99

[73] 76.44 56.78 65.87 57.29 73.27 32.44 67.45 68.45

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

30

Agora basta entrar com o comando corretamente:

ks.test(pesos, #amostra a ser testada

“pchisq”, #”p” seguido do nome da distribuição

79) #são os graus de liberdade da amostra

One-sample Kolmogorov-Smirnov test

data: pesos

D = 0.6402, p-value < 2.2e-16

alternative hypothesis: two.sided

Como o p-value é menor ou igual a 0,05 (5%) podemos assumir que os

dados não tem distribuição qui-quadrado ao nível de significância de 5%.

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

31

Exemplo 4 (teste para verificação da normalidade):

> shapiro.test(pesos)

Shapiro-Wilk normality test

data: pesos

W = 0.9777, p-value = 0.1756

Aplicando o teste de Shapiro-Wilk ao exemplo anterior obtemos:

Concluimos (ao nível de significância de 5%) pela não rejeição da hipótese

de normalidade das observações.

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

32

> qqnorm(pesos) #obtendo o normal probability plot só para

comparação

>qqline(pesos) # colocando uma linha auxiliar

-2 -1 0 1 2

30

40

50

60

70

80

90

10

0

Normal Q-Q Plot

Theoretical Quantiles

Sa

mp

le Q

ua

ntile

s

MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014

33

Exemplo 5 (teste de aleatoriedade):

Suponha que você pretende averiguar se uma amostra de tamanho (n= 200)

com números de 0 a 10 é realmente aleatória.

Para gerar a amostra basta fazer:

amostra<-round(runif(200)*10)

Para obter as freqüências basta usar a função table: >freq<-table(amostra)

>freq

>amostra

0 1 2 3 4 5 6 7 8 9 10

10 18 24 32 17 18 20 18 18 16 9

Uma forma prática de se obter essas frequências é usar o comando

as.numeric().

>chisq.test(as.numeric(freq))

Chi-squared test for given probabilities

data: as.numeric(freq)

X-squared = 21.21, df = 10, p-value = 0.01968 MINICURSO CIAEEAR

MANAUS (AM), 12-15 AGOSTO 2014