Antes de qualquer coisa…

Não se esqueça de verificar o diretório de trabalho usando as funções getwd() e setwd(), esses passos foram detalhados nas rotinas anteriores.


Importar banco de dados e visualizar

Vamos continuar com a base de dados que você baixou no Classroom e que foi trabalhada na prática 2, Exemplo_AGUA.csv, fizemos algumas alterações nesta base e agora ela está nomeada como dados_agua_sna. Caso seja necessário importá-la novamente e prepará-la verifique a Prática 2.


Probabilidades

Certamente existe uma dezena de formas de construir os comandos para calcular probabilidades no R/RStudio, aqui faremos uma dessas maneiras usando as funções básicas do software, ou seja, sem nenhum pacote. A ideia é entender a construção dos cálculos.


  • Probabilidade Clássica: vamos calcular a probabilidade de selecionar, aleatoriamente, um município que seja da região de Ribeirão Preto. O evento A é ser um município da região de Ribeirão Preto. A função nrow() nos dá o número de linhas / colunas de uma matriz, então, informamos o banco de dados, dentro do banco de dados qual a coluna e, por fim, qual o critério.

A fórmula empregada será P(A): número de resultados no evento A dividido pelo número de resultados no espaço amostral.

Neste exemplo, o número de resultados no evento A é de 44 municípios (pertecem a região de Ribeirão Preto) e o espaço amostral é o total de municípios que apresentam informações, 506.

nrow(dados_agua_sna[dados_agua_sna$Regic_interm =="Ribeirão Preto",])
[1] 44
nrow(dados_agua_sna)
[1] 506
PA <- nrow(dados_agua_sna[dados_agua_sna$Regic_interm == "Ribeirão Preto",])/nrow(dados_agua_sna)
PA
[1] 0.08695652

Ou seja, a probabilidade de ao selecionar aleatoriamente um município dentre os 506 e este ser da região de Ribeirão Preto é de 8,7%.


  • Probabilidade Condicional:

Probabilidade condicional simples: vamos calcular a probabilidade de selecionar, aleatoriamente, um município que tenha o IDHM_Tipo “alto”, dado que é da Região de Ribeirão Preto. O evento A é ser um município da região de Ribeirão Preto e o evento B é ser IDHM_Tipo alto, considerando que é da região de Ribeirão Preto.

A fórmula empregada será P(B|A): número de resultados no evento B condicionado ao evento A dividido pelo número de resultados no espaço amostral do evento A.

Neste exemplo, o número de resultados no evento B condicionado ao evento A é de 42 municípios (pertecem a região de Ribeirão Preto e apresentam IDHM do tipo “alto”) e o número de resultados no espaço amostral do evento A é de 44 municípios (pertecem a região de Ribeirão Preto). Seguindo as mesmas funções utilizadas anteriormente:

nrow(dados_agua_sna[dados_agua_sna$IDHM_tipo == "alto" & dados_agua_sna$Regic_interm == "Ribeirão Preto",])
[1] 42
nrow(dados_agua_sna[dados_agua_sna$Regic_interm == "Ribeirão Preto",])
[1] 44
PBdadoA <- nrow(dados_agua_sna[dados_agua_sna$IDHM_tipo == "alto" & dados_agua_sna$Regic_interm == "Ribeirão Preto",])/nrow(dados_agua_sna[dados_agua_sna$Regic_interm == "Ribeirão Preto",])
PBdadoA
[1] 0.9545455

Ou seja, a probabilidade de um município ter o IDHM_Tipo “alto”, dado que é da Região de Ribeirão Preto é de 95,45%.


  • Probabilidade condicional e Regra da Multiplicação: vamos calcular a probabilidade de um município selecionado, aleatoriamente, seja da região de Ribeirão Preto e tenha um IDHM_Tipo “alto”.

O evento A é ser um município da região de Ribeirão Preto e o evento B|A é ser IDHM_Tipo alto, dado que é da região de Ribeirão Preto. A fórmula empregada será P(A)*P(B|A), pois os eventos são dependentes:

P(A) = número de resultados no evento A dividido pelo número de resultados no espaço amostral. Neste exemplo, o número de resultados no evento A é de 44 municípios (pertecem a região de Ribeirão Preto) e o espaço amostral é o total de municípios que apresentam informações, 506.

P(B|A) = número de resultados no evento B condicionado ao evento A dividido pelo número de resultados no espaço amostral do evento A. Neste exemplo, o número de resultados no evento B condicionado ao evento A é de 42 municípios (pertecem a região de Ribeirão Preto e apresentam IDHM do tipo “alto”) e o número de resultados no espaço amostral do evento A é de 44 municípios (pertecem a região de Ribeirão Preto).

Note que, nos dois exemplos anteriores já calculamos P(A) e P(B|A), vamos aproveitar que criamos objetos para cada um e usá-los aqui:

PA
[1] 0.08695652
PBdadoA
[1] 0.9545455
PA*PBdadoA
[1] 0.08300395

Ou seja, a probabilidade de que um município selecionado, aleatoriamente, seja da região de Ribeirão Preto e tenha um IDHM_Tipo “alto” é de 8,3%.


DICA: usando a função prob.table() é possível obter as probabilidades que calculamos anteriormente, conforme os critérios indicados.

Verifique na coluna “Ribeirão Preto”, o resultado foi exatamente o que encontramos detalhando cada passo em PA, ou seja, a probabilidade de ao selecionar aleatoriamente um município dentre os 506 e este ser da região de Ribeirão Preto é de 8,7%.

prop.table(table(dados_agua_sna$Regic_interm))

Araçatuba       Araraquara       Bauru       Campinas    Marília    Presidente Prudente  Ribeirão Preto 
0.06916996      0.02766798       0.07312253  0.13241107  0.07114625  0.08498024          0.08695652 
São José RPreto São José Campos  São Paulo   Sorocaba 
0.14822134      0.06324111       0.09881423  0.14426877 

Verifique na coluna “alto” e na linha “Ribeirão Preto” o resultado foi exatamente o que encontramos detalhando cada passo em PBdadoA, ou seja, a probabilidade de um município ter o IDHM_Tipo “alto”, dado que é da Região de Ribeirão Preto é de 95,45%.

prop.table(table(dados_agua_sna$Regic_interm,dados_agua_sna$IDHM_tipo),1)
                              alto      medio muito alto
  Araçatuba             0.91428571 0.05714286 0.02857143
  Araraquara            0.78571429 0.00000000 0.21428571
  Bauru                 0.89189189 0.05405405 0.05405405
  Campinas              0.82089552 0.08955224 0.08955224
  Marília               0.88888889 0.08333333 0.02777778
  Presidente Prudente   0.93023256 0.04651163 0.02325581
  Ribeirão Preto        0.95454545 0.02272727 0.02272727
  São José do Rio Preto 0.98666667 0.01333333 0.00000000
  São José dos Campos   0.78125000 0.15625000 0.06250000
  São Paulo             0.84000000 0.04000000 0.12000000
  Sorocaba              0.65753425 0.34246575 0.00000000

Verifique na coluna “alto” e na linha “Ribeirão Preto” o resultado foi exatamente o que encontramos detalhando cada passo em PA*PBdadoA, ou seja, a probabilidade de que um município selecionado, aleatoriamente, seja da região de Ribeirão Preto e tenha um IDHM_Tipo “alto” é de 8,3%.

prop.table(table(dados_agua_sna$Regic_interm,dados_agua_sna$IDHM_tipo))
                               alto       medio  muito alto
  Araçatuba             0.063241107 0.003952569 0.001976285
  Araraquara            0.021739130 0.000000000 0.005928854
  Bauru                 0.065217391 0.003952569 0.003952569
  Campinas              0.108695652 0.011857708 0.011857708
  Marília               0.063241107 0.005928854 0.001976285
  Presidente Prudente   0.079051383 0.003952569 0.001976285
  Ribeirão Preto        0.083003953 0.001976285 0.001976285
  São José do Rio Preto 0.146245059 0.001976285 0.000000000
  São José dos Campos   0.049407115 0.009881423 0.003952569
  São Paulo             0.083003953 0.003952569 0.011857708
  Sorocaba              0.094861660 0.049407115 0.000000000
  

Distribuições de Probabilidade

Cada distribuição de probabilidade tem seu próprio conjunto de parâmetros que precisam ser passados como argumentos nas funções do R/RStudio.

O R/RStudio fornece as seguintes funções para as distribuições, onde name representa o nome da distribuição fornecida:

dname(): função densidade

pname(): função distribuição cumulativa

qname(): quantis

rname(): geração de número aleatório


Distribuição Binomial (Discreta)

A distribuição binomial modela variáveis binárias (sim/não), ou seja, a probabilidade de x sucessos em n realizações.

n é o número de tentativas

x é o número de sucessos em n tentativas

p = probabilidade de sucesso em uma única tentativa

q = probabilidade de fracasso em uma única tentativa


Suponha que gostaríamos de saber qual a probabilidade de um município com IDHM_tipo “médio” ao selecionarmos, aleatoriamente, 8 municípios.

n é o número de tentativas

n <- 8
n
[1] 8

p = probabilidade de sucesso em uma única tentativa

p <- nrow(dados_agua_sna[dados_agua_sna$IDHM_tipo =="medio",])/nrow(dados_agua_sna)
p
[1] 0.09683794

q = probabilidade de fracasso em uma única tentativa

q <- 1-p
q
[1] 0.9031621


Considere os seguintes casos:

  • Exatamente 3 municípios serem IDMH_tipo “médio”, portanto, x = 3.
dbinom(3,size = n, prob = p)
[1] 0.03055998
  • menos de 4 municípios serem IDMH_tipo “médio”, portanto, x = 3.
pbinom(3, size = n, prob = p) 
[1] 0.9955334
  • pelo menos 4 municípios serem IDMH_tipo “médio”, portanto, x = 3 no complementar.
1-pbinom(3, size = n, prob = p)
[1] 0.004466588

Notem que, no caso em que temos o número de sucessos exato usamos a função densidade dbinom() e nos casos em que não temos um número de sucessos exato usamos a função distribuição cumulativa pbinom().Além disso, usamos os objetos (n e p), mas também poderíamos colocar os valores direto nos argumentos, por exemplo dbinom(3,size = 8, prob = 0.09683794).


Distribuição Normal Padrão (Contínua - populacional)

A distribuição normal modela variáveis contínuas que apresentem média, mediana e moda centralizadas de maneira a produzir uma forma de sino simétrica em torno da média (ou pelo menos aproximadamente).


ATENÇÃO: como nosso conjunto de dados não é populacional, pois não estamos trabalhando com os 645 municípios do estado de São Paulo, mas sim com uma amostra de 506, deveríamos utilizar a distribuição t-Student por meio de um intervalo de confiança e ou um teste de hipótese para confirmar nossa inferência com certo grau de confiança. Contudo, vamos usar os dados para ilustrar a distribuição normal padrão apenas a título de exemplo.


Antes de proceder com os cálculos de distribuição vamos dar uma olhada na adequação dos dados à distribuição normal, usando o gráfico Qqplot. A distribuição de uma determinada variável também pode ser visualizada com um qqplot, que compara duas distribuições de dados traçando quantis. Para desenhar um qqplot comparando a distribuição de cons1 com uma curva normal, usaremos as funções qqnorm() e qqline(). Vamos escolher a variável consumo de água per capita em m3/ano (cons1):

qqnorm(dados_agua_sna$cons1)
qqline(dados_agua_sna$cons1, col = "red")

Figura 2 - Q-QPlot

O qqplot de cons1 sugere uma certa linearidade pela proximidade com a curva normal (em vermelho) nos quantis centrais, desviando da curva em valores extremos (muito altos e muito baixos - outliers).


Suponha que gostaríamos de saber qual a probabilidade de um município apresentar um consumo de água per capita em m3/ano (cons1) menor ou igual à 30 m3/ano. Precisamos informar na função os argumentos:

  • q: o valor da variável que estamos interessados em saber a probabilidade

  • mean: a média da variável que estamos interessados em saber a probabilidade

  • sd: o desvio padrão da variável que estamos interessados em saber a probabilidade

pnorm(q= 30, mean = mean(dados_agua_sna$cons1), sd = sd(dados_agua_sna$cons1))
[1] 0.1567932


Suponha que gostaríamos de saber qual a probabilidade de um município apresentar um consumo de água per capita em m3/ano (cons1) maior do que 65 m3/ano. Precisamos informar na função os mesmos argumentos citados anteriormente. Contudo, a função acumula a probabilidade até 65 m3/ano, mas queremos acima desse valor, então, usamos o complementar (1-)

1-pnorm(q= 65, mean = mean(dados_agua_sna$cons1), sd = sd(dados_agua_sna$cons1))
[1] 0.1327564

Notem que, usamos os objetos do banco de dados para a média(mean) e o desvio padrão (sd), mas também poderíamos colocar os valores direto nos argumentos.


Distribuição t-Student (Contínua - amostral)

Para uma variável aleatória que é normalmente distribuída (ou aproximadamente normalmente distribuída), a variável média amostral comporta-se tal qual outro modelo, a distribuição t.

A distribuição t é uma família de curvas, cada uma determinada por um parâmetro chamado de graus de liberdade n-k; sendo “n” o tamanho da amostra e “k” o número de coeficientes de análise. Assim, quando usamos a distribuição t para estimar uma média populacional (apenas um coeficiente), os graus de liberdade são iguais ao tamanho da amostra menos um.

Usaremos essa distribuição na construção de intervalos de confiança e testes de hipótese na análise inferencial.

A função mais usada será qt() para descobrir o t crítico (ou o t tabelado) para construir a margem de erro no intervalo de confiança e decidir sobre a rejeição ou não rejeição da hipótese nula no teste de hipótese.


Suponha que precisamos descobrir qual é o t crítico (ou t tabelado) para um nível de confiança de 95% quando o tamanho da amostra é o do nosso exemplo, ou seja, 506. Considere ainda, que queremos estimar a média populacional (apenas um coeficiente), os graus de liberdade (gl) são iguais ao tamanho da amostra menos um (n-1).

  • nível de confiança: colocar o nível de confiança com a expressao (1-alpha, sendo alpha o nível de significância) e dividir por dois, pois, no geral queremos bicaudal. Vamos usar 1-0.05 para obter 95% de nível de confiança.

  • gl ou df (degrees of freedom): 506-1 = 505

qt (p= 1-0.05 / 2, df=505)
[1] 1.964673

Notem que, a partir dos 30 g.l., a distribuição t tende a se aproximar da distribuição normal padrão, muito próximo do score z de 95%.


ATENÇÃO: não se esqueça de salvar seu script e exportar seus dados caso tenha feita alguma modificação, esses passos foram detalhados nas rotinas anteriores!