Aula 8 – Tópicos de probabilidade e inferência estatística
Autor
Prof. Marcelo Ribeiro
Objetivo da Aula
Compreender e aplicar conceitos fundamentais de probabilidade e inferência estatística, incluindo algumas distribuições de probabilidade, inferência para média e proporção, análise de variância, tabelas de contingência e testes Qui-quadrado, além de análise de correlação e regressão linear simples.
Comentário do professor
Nesta aula, passaremos da descrição dos dados para procedimentos inferenciais. Em outras palavras, deixaremos de olhar apenas para a amostra observada e passaremos a usar essa amostra como base para tirar conclusões sobre uma população ou sobre mecanismos probabilísticos subjacentes.
1. Introdução
A Estatística Inferencial fornece ferramentas para quantificar incerteza, construir intervalos de confiança, testar hipóteses e modelar relações entre variáveis. Esses procedimentos não substituem a análise descritiva; ao contrário, eles dependem de uma boa compreensão prévia dos dados.
Nesta aula, estudaremos:
algumas distribuições de probabilidade;
inferência para média;
inferência para proporção;
análise de variância;
tabelas de contingência e testes Qui-quadrado;
correlação;
regressão linear simples.
Comentário do professor
Sempre que possível, utilizaremos gráficos e recursos de sumarização já trabalhados na aula anterior, pois bons procedimentos inferenciais começam com uma leitura cuidadosa da estrutura dos dados.
2. Pacotes utilizados
library(dplyr)
Warning: package 'dplyr' was built under R version 4.4.3
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
library(ggplot2)
Warning: package 'ggplot2' was built under R version 4.4.3
library(plotly)
Warning: package 'plotly' was built under R version 4.4.3
Attaching package: 'plotly'
The following object is masked from 'package:ggplot2':
last_plot
The following object is masked from 'package:stats':
filter
The following object is masked from 'package:graphics':
layout
Comentário do professor
Nesta aula: - dplyr será usado para organizar e resumir os dados; - ggplot2 será usado para visualizações estáticas; - plotly será usado em alguns gráficos interativos, especialmente quando isso ajudar na interpretação.
3. Conjunto de dados da aula
Utilizaremos um conjunto de dados sintético em contexto compatível com o curso de Estatística e Ciência de Dados.
Neste conjunto: - nota_r, horas_estudo, projetos e frequencia são variáveis quantitativas; - turma, linguagem e aprovado são variáveis qualitativas.
4. Algumas distribuições de probabilidade
Uma distribuição de probabilidade descreve como a probabilidade se distribui entre os possíveis valores de uma variável aleatória.
4.1 Distribuição Binomial
A distribuição Binomial é apropriada quando observamos o número de sucessos em um número fixo de ensaios independentes, cada um com a mesma probabilidade de sucesso.
Seja
\[
X \sim Bin(n, p)
\]
então a probabilidade de observar exatamente (k) sucessos é dada por
Suponha uma prova com probabilidade de aprovação (p = 0{,}7), aplicada a (n = 10) estudantes. Vamos calcular a probabilidade de exatamente 8 aprovações.
Execute este código
dbinom(8, size =10, prob =0.7)
[1] 0.2334744
Comentário do professor
A função dbinom(x, size, prob) devolve a probabilidade pontual da Binomial. - x: número de sucessos; - size: número de ensaios; - prob: probabilidade de sucesso em cada ensaio.
Visualização da Binomial
Execute este código
x_binom <-0:10prob_binom <-dbinom(x_binom, size =10, prob =0.7)binom_df <-tibble(x = x_binom,probabilidade = prob_binom)ggplot(binom_df, aes(x = x, y = probabilidade)) +geom_col(fill ="gray60", color ="black") +labs(title ="Distribuição Binomial: n = 10, p = 0.7",x ="Número de sucessos",y ="Probabilidade" ) +theme_minimal()
4.2 Distribuição Normal
A distribuição Normal é uma das distribuições mais importantes em Estatística.
Se
\[
X \sim N(\mu, \sigma^2)
\]
então (X) possui média () e variância (^2).
Exemplo com dnorm()
Vamos considerar uma distribuição Normal com média 7 e desvio-padrão 1,2.
Execute este código
x_norm <-seq(3, 11, by =0.1)dens_norm <-dnorm(x_norm, mean =7, sd =1.2)normal_df <-tibble(x = x_norm,densidade = dens_norm)ggplot(normal_df, aes(x = x, y = densidade)) +geom_line(linewidth =1, color ="navy") +labs(title ="Densidade da distribuição Normal",x ="x",y ="f(x)" ) +theme_minimal()
Comentário do professor
A função dnorm(x, mean, sd) devolve a densidade da Normal. - mean: média; - sd: desvio-padrão.
Probabilidade acumulada com pnorm()
Vamos calcular a probabilidade de um valor ser menor ou igual a 8.
Execute este código
pnorm(8, mean =7, sd =1.2)
[1] 0.7976716
Comentário do professor
A função pnorm(q, mean, sd) devolve a probabilidade acumulada \[
P(X \leq q)
\] para uma Normal com média e desvio-padrão especificados.
4.3 Distribuição t de Student
A distribuição t é muito utilizada em inferência para média quando o desvio-padrão populacional é desconhecido.
Exemplo com dt()
Execute este código
x_t <-seq(-4, 4, by =0.1)dens_t <-dt(x_t, df =10)t_df <-tibble(x = x_t,densidade = dens_t)ggplot(t_df, aes(x = x, y = densidade)) +geom_line(linewidth =1, color ="darkred") +labs(title ="Densidade da distribuição t de Student",x ="t",y ="f(t)" ) +theme_minimal()
Comentário do professor
A função dt(x, df) devolve a densidade da distribuição t. - df: graus de liberdade.
4.4 Distribuição Qui-quadrado
A distribuição Qui-quadrado aparece em testes de aderência, independência e homogeneidade, além de intervalos para variância.
Exemplo com dchisq()
Execute este código
x_chi <-seq(0, 20, by =0.1)dens_chi <-dchisq(x_chi, df =4)chi_df <-tibble(x = x_chi,densidade = dens_chi)ggplot(chi_df, aes(x = x, y = densidade)) +geom_line(linewidth =1, color ="darkgreen") +labs(title ="Densidade da distribuição Qui-quadrado",x =expression(chi^2),y ="f(x)" ) +theme_minimal()
5. Inferência para a média
A inferência para a média procura estimar ou testar valores plausíveis para a média populacional a partir de uma amostra.
5.1 Intervalo de confiança para a média
Vamos construir um intervalo de confiança para a média de nota_r.
Execute este código
t.test(dados$nota_r, conf.level =0.95)
One Sample t-test
data: dados$nota_r
t = 24.073, df = 17, p-value = 1.419e-14
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
6.893358 8.217753
sample estimates:
mean of x
7.555556
Comentário do professor
A função t.test() pode ser usada, entre outras coisas, para: - construir intervalo de confiança para a média; - realizar teste t para uma amostra; - comparar médias entre dois grupos.
Interpretação
O intervalo de confiança de 95% fornece uma faixa de valores plausíveis para a média populacional, com base na amostra observada.
One Sample t-test
data: dados$nota_r
t = 1.77, df = 17, p-value = 0.09465
alternative hypothesis: true mean is not equal to 7
95 percent confidence interval:
6.893358 8.217753
sample estimates:
mean of x
7.555556
Comentário do professor
Neste caso: - mu = 7 define o valor da média sob hipótese nula; - o resultado informa a estatística de teste, os graus de liberdade, o valor-p e o intervalo de confiança.
Ilustração 5.1 – Lógica de um teste de hipótese
flowchart LR
A["Definir H0 e H1"] --> B["Calcular estatística de teste"]
B --> C["Obter valor-p"]
C --> D["Tomar decisão estatística"]
6. Inferência para a proporção
Quando o interesse está em uma característica binária, trabalhamos com proporções.
6.1 Estimativa da proporção amostral
Vamos calcular a proporção de estudantes aprovados.
Execute este código
dados %>%count(aprovado) %>%mutate(proporcao = n /sum(n))
1-sample proportions test with continuity correction
data: sum(dados$aprovado == "Sim") out of nrow(dados), null probability 0.5
X-squared = 6.7222, df = 1, p-value = 0.009522
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.5773525 0.9559302
sample estimates:
p
0.8333333
Comentário do professor
A função prop.test(x, n, conf.level) pode ser usada para inferência sobre proporção. - x: número de sucessos; - n: tamanho da amostra; - conf.level: nível de confiança.
6.3 Teste para uma proporção
Suponha que se deseja testar se a proporção de aprovação é igual a 0,7:
\[
H_0: p = 0.7
\qquad \text{versus} \qquad
H_1: p \neq 0.7
\]
1-sample proportions test with continuity correction
data: sum(dados$aprovado == "Sim") out of nrow(dados), null probability 0.7
X-squared = 0.95503, df = 1, p-value = 0.3284
alternative hypothesis: true p is not equal to 0.7
95 percent confidence interval:
0.5773525 0.9559302
sample estimates:
p
0.8333333
Comentário do professor
Quando o argumento p é informado, prop.test() passa a realizar um teste de hipótese para a proporção.
7. Análise de variância (ANOVA)
A análise de variância é usada para comparar médias de três ou mais grupos.
7.1 Visualização inicial por boxplot
Antes da ANOVA, é recomendável visualizar os dados.
Execute este código
ggplot(dados, aes(x = turma, y = nota_r, fill = turma)) +geom_boxplot() +labs(title ="Nota em R por turma",x ="Turma",y ="Nota em R" ) +theme_minimal()
7.2 Ajustando o modelo ANOVA
Vamos comparar a média de nota_r entre as turmas.
Execute este código
modelo_anova <-aov(nota_r ~ turma, data = dados)summary(modelo_anova)
Df Sum Sq Mean Sq F value Pr(>F)
turma 2 1.441 0.7206 0.377 0.693
Residuals 15 28.703 1.9136
Comentário do professor
A função aov() ajusta um modelo de análise de variância. - nota_r ~ turma indica que a variável resposta é nota_r e o fator explicativo é turma.
Hipóteses da ANOVA
\[
H_0: \mu_A = \mu_B = \mu_C
\]
\[
H_1: \text{pelo menos uma média difere das demais}
\]
7.3 Comparações múltiplas com Tukey
Caso a ANOVA indique diferença significativa, podemos investigar quais grupos diferem entre si.
Execute este código
TukeyHSD(modelo_anova)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = nota_r ~ turma, data = dados)
$turma
diff lwr upr p adj
B-A 0.1166667 -1.957819 2.191153 0.9883138
C-A 0.6500000 -1.424486 2.724486 0.7004341
C-B 0.5333333 -1.541153 2.607819 0.7853138
Comentário do professor
A função TukeyHSD() realiza comparações múltiplas entre pares de grupos, controlando o erro do tipo I no conjunto das comparações.
8. Tabelas de contingência e testes Qui-quadrado
Tabelas de contingência resumem a relação entre duas variáveis qualitativas.
O teste Qui-quadrado de independência avalia se duas variáveis qualitativas estão associadas.
As hipóteses são:
\[
H_0: \text{as variáveis são independentes}
\]
\[
H_1: \text{as variáveis são associadas}
\]
8.4 Visualização da tabela de contingência
Execute este código
tab_df <-as.data.frame(tab_cont)ggplot(tab_df, aes(x = Var1, y = Freq, fill = Var2)) +geom_col(position ="dodge") +labs(title ="Tabela de contingência: turma e aprovação",x ="Turma",y ="Frequência",fill ="Aprovado" ) +theme_minimal()
9. Análise de correlação
A correlação mede a intensidade e a direção da associação linear entre duas variáveis quantitativas.
9.1 Visualização inicial
Execute este código
ggplot(dados, aes(x = horas_estudo, y = nota_r)) +geom_point(color ="darkred", size =3, alpha =0.8) +geom_smooth(method ="lm", se =FALSE, color ="navy", linewidth =1) +labs(title ="Horas de estudo versus nota em R",x ="Horas de estudo por semana",y ="Nota em R" ) +theme_minimal()
`geom_smooth()` using formula = 'y ~ x'
9.2 Gráfico interativo com plotly
Execute este código
grafico_cor <-ggplot( dados,aes(x = horas_estudo,y = nota_r,text =paste("Turma:", turma,"<br>Linguagem:", linguagem,"<br>Projetos:", projetos ) )) +geom_point(color ="darkred", size =3, alpha =0.8) +labs(title ="Horas de estudo versus nota em R",x ="Horas de estudo por semana",y ="Nota em R" ) +theme_minimal()ggplotly(grafico_cor, tooltip ="text")
Comentário do professor
Nesta versão interativa, mantemos apenas os pontos. Isso evita distorções visuais que podem ocorrer quando a linha de tendência ajustada no ggplot2 é convertida automaticamente pelo plotly.
9.3 Gráfico interativo com reta ajustada via plotly
Execute este código
modelo_plotly <-lm(nota_r ~ horas_estudo, data = dados)dados_plotly <- dados %>%mutate(ajustado =fitted(modelo_plotly))plot_ly(data = dados,x =~horas_estudo,y =~nota_r,type ="scatter",mode ="markers",text =~paste("Turma:", turma,"<br>Linguagem:", linguagem,"<br>Projetos:", projetos ),hoverinfo ="text",marker =list(color ="darkred", size =8),name ="Observações") %>%add_lines(data = dados_plotly %>%arrange(horas_estudo),x =~horas_estudo,y =~ajustado,line =list(color ="navy", width =2),name ="Reta ajustada" ) %>%layout(title ="Horas de estudo versus nota em R",xaxis =list(title ="Horas de estudo por semana"),yaxis =list(title ="Nota em R") )
A marker object has been specified, but markers is not in the mode
Adding markers to the mode...
Comentário do professor
Aqui, o gráfico é construído diretamente no plotly, e a reta ajustada é adicionada separadamente com add_lines(). Essa estratégia costuma produzir uma visualização interativa mais estável e esteticamente mais consistente.
9.4 Coeficiente de correlação de Pearson
Execute este código
cor(dados$horas_estudo, dados$nota_r)
[1] 0.9831319
Comentário do professor
A função cor(x, y) calcula o coeficiente de correlação linear de Pearson, que varia entre -1 e 1. - valor próximo de 1: forte associação linear positiva; - valor próximo de -1: forte associação linear negativa; - valor próximo de 0: fraca associação linear.
9.5 Teste para correlação
Execute este código
cor.test(dados$horas_estudo, dados$nota_r)
Pearson's product-moment correlation
data: dados$horas_estudo and dados$nota_r
t = 21.501, df = 16, p-value = 3.126e-13
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.9542643 0.9938363
sample estimates:
cor
0.9831319
Comentário do professor
A função cor.test() realiza inferência para o coeficiente de correlação, fornecendo: - estimativa da correlação; - estatística de teste; - valor-p; - intervalo de confiança.
10. Regressão linear simples
A regressão linear simples modela a relação entre uma variável resposta (Y) e uma variável explicativa (X).
O modelo é dado por
\[
Y_i = \beta_0 + \beta_1 X_i + \varepsilon_i
\]
No nosso contexto, podemos considerar:
(Y_i): nota em R;
(X_i): horas de estudo.
10.1 Ajustando o modelo
Execute este código
modelo_lm <-lm(nota_r ~ horas_estudo, data = dados)summary(modelo_lm)
Call:
lm(formula = nota_r ~ horas_estudo, data = dados)
Residuals:
Min 1Q Median 3Q Max
-0.39025 -0.20335 -0.01055 0.19283 0.48268
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.02910 0.21868 13.85 2.51e-10 ***
horas_estudo 0.42882 0.01994 21.50 3.13e-13 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.251 on 16 degrees of freedom
Multiple R-squared: 0.9665, Adjusted R-squared: 0.9645
F-statistic: 462.3 on 1 and 16 DF, p-value: 3.126e-13
Comentário do professor
A função lm() ajusta um modelo linear. - nota_r ~ horas_estudo indica que nota_r é explicada por horas_estudo.
10.2 Coeficientes estimados
Execute este código
coef(modelo_lm)
(Intercept) horas_estudo
3.0291024 0.4288219
Comentário do professor
Os coeficientes estimados representam: - (_0): intercepto; - (_1): inclinação da reta.
fitted(modelo_lm) devolve os valores ajustados pelo modelo;
resid(modelo_lm) devolve os resíduos, isto é, a diferença entre valor observado e valor ajustado.
10.4 Visualizando reta ajustada
Execute este código
ggplot(dados, aes(x = horas_estudo, y = nota_r)) +geom_point(color ="darkred", size =3, alpha =0.8) +geom_smooth(method ="lm", se =FALSE, color ="navy", linewidth =1) +labs(title ="Regressão linear simples: nota em R e horas de estudo",x ="Horas de estudo por semana",y ="Nota em R" ) +theme_minimal()
`geom_smooth()` using formula = 'y ~ x'
Ilustração 10.1 – Fluxo da regressão linear simples
flowchart LR
A["Definir variável resposta Y"] --> B["Definir variável explicativa X"]
B --> C["Ajustar modelo lm()"]
C --> D["Interpretar coeficientes"]
D --> E["Analisar ajuste e resíduos"]
11. Integração entre descrição e inferência
Antes de aplicar procedimentos inferenciais, é boa prática examinar os dados descritivamente.
Exemplo integrado para nota_r por turma
Execute este código
dados %>%group_by(turma) %>%summarise(media =mean(nota_r),desvio_padrao =sd(nota_r),n =n(),.groups ="drop" )
Execute este código
ggplot(dados, aes(x = turma, y = nota_r, fill = turma)) +geom_boxplot() +labs(title ="Distribuição de nota em R por turma",x ="Turma",y ="Nota em R" ) +theme_minimal()
Comentário do professor
Essa combinação entre sumarização e visualização ajuda a interpretar melhor o resultado da ANOVA e a verificar se faz sentido modelar diferenças entre grupos.
12. Erros comuns e boas práticas
Erros comuns
aplicar testes inferenciais sem examinar antes os dados;
interpretar valor-p como medida de tamanho de efeito;
concluir causalidade a partir de correlação;
aplicar regressão linear sem inspecionar o diagrama de dispersão;
usar Qui-quadrado sem verificar se a estrutura da tabela é adequada;
comparar médias entre grupos sem visualizar a distribuição dos dados.
Boas práticas
combine análise descritiva e inferencial;
formule claramente as hipóteses antes do teste;
interprete resultados estatísticos no contexto do problema;
utilize gráficos para apoiar a leitura dos testes;
não reduza a análise a um único número, como o valor-p.
13. Exercícios propostos
Exercício 1
Considere uma variável aleatória (X Bin(12, 0.6)). Calcule:
(P(X = 7));
(P(X )).
Exercício 2
Construa o gráfico da densidade de uma distribuição Normal com média 10 e desvio-padrão 2.
Exercício 3
Calcule um intervalo de confiança de 95% para a média de nota_r.
Exercício 4
Teste a hipótese de que a média de nota_r é igual a 7,5.
Exercício 5
Calcule a proporção de estudantes aprovados e construa um intervalo de confiança de 95% para essa proporção.
Exercício 6
Teste se a proporção de aprovação é igual a 0,8.
Exercício 7
Ajuste uma ANOVA para comparar nota_r entre as turmas e interprete o resultado.
Exercício 8
Construa uma tabela de contingência entre linguagem e aprovado, e aplique o teste Qui-quadrado de independência.
Exercício 9
Calcule a correlação de Pearson entre horas_estudo e nota_r e teste sua significância.
Exercício 10
Construa uma versão interativa, com plotly, do diagrama de dispersão entre horas_estudo e nota_r: - primeiro apenas com os pontos; - depois com a reta ajustada adicionada diretamente com plot_ly() e add_lines().
Exercício 11
Ajuste um modelo de regressão linear simples com nota_r como variável resposta e horas_estudo como variável explicativa. Apresente: - coeficientes estimados; - resumo do modelo; - gráfico com a reta ajustada.
Comentário do professor
Os exercícios desta aula foram formulados para articular probabilidade, inferência, testes de hipóteses e modelagem simples, sempre com apoio de recursos gráficos e de sumarização já estudados anteriormente.
15. Para a próxima aula
Na próxima aula, continuaremos avançando em inferência estatística e modelagem, ampliando o repertório de técnicas para análise de dados em contextos aplicados.
Tarefa do aluno
Refaça os exemplos da aula e procure relacionar cada procedimento inferencial com o tipo de variável envolvida, o objetivo analítico e a forma mais adequada de visualização dos dados.
Código fonte
---title: "Aula 8 – Tópicos de probabilidade e inferência estatística"author: "Prof. Marcelo Ribeiro"format: html: toc: true toc-location: left number-sections: false theme: cosmo css: estilo.css page-layout: full code-fold: false code-tools: true df-print: paged embed-resources: true mermaid: theme: neutrallang: pt-BReditor: visual---## Objetivo da AulaCompreender e aplicar conceitos fundamentais de probabilidade e inferência estatística, incluindo algumas distribuições de probabilidade, inferência para média e proporção, análise de variância, tabelas de contingência e testes Qui-quadrado, além de análise de correlação e regressão linear simples.::: {.callout-note title="Comentário do professor"}Nesta aula, passaremos da descrição dos dados para procedimentos inferenciais. Em outras palavras, deixaremos de olhar apenas para a amostra observada e passaremos a usar essa amostra como base para tirar conclusões sobre uma população ou sobre mecanismos probabilísticos subjacentes.:::## 1. IntroduçãoA Estatística Inferencial fornece ferramentas para quantificar incerteza, construir intervalos de confiança, testar hipóteses e modelar relações entre variáveis. Esses procedimentos não substituem a análise descritiva; ao contrário, eles dependem de uma boa compreensão prévia dos dados.Nesta aula, estudaremos:- algumas distribuições de probabilidade;- inferência para média;- inferência para proporção;- análise de variância;- tabelas de contingência e testes Qui-quadrado;- correlação;- regressão linear simples.::: {.callout-note title="Comentário do professor"}Sempre que possível, utilizaremos gráficos e recursos de sumarização já trabalhados na aula anterior, pois bons procedimentos inferenciais começam com uma leitura cuidadosa da estrutura dos dados.:::## 2. Pacotes utilizados```{r}library(dplyr)library(ggplot2)library(plotly)```::: {.callout-note title="Comentário do professor"}Nesta aula:- `dplyr` será usado para organizar e resumir os dados;- `ggplot2` será usado para visualizações estáticas;- `plotly` será usado em alguns gráficos interativos, especialmente quando isso ajudar na interpretação.:::## 3. Conjunto de dados da aulaUtilizaremos um conjunto de dados sintético em contexto compatível com o curso de Estatística e Ciência de Dados.```{r}dados <-tibble(id =1:18,turma =rep(c("A", "B", "C"), each =6),linguagem =c("R", "Python", "R", "Python", "R", "Python","R", "Python", "R", "Python", "R", "Python","R", "Python", "R", "Python", "R", "Python"),horas_estudo =c(10, 8, 13, 7, 12, 9, 14, 6, 15, 8, 11, 7, 16, 9, 14, 10, 13, 8),projetos =c(2, 1, 4, 1, 3, 2, 5, 1, 4, 2, 3, 1, 5, 2, 4, 3, 4, 2),nota_r =c(7.8, 6.2, 8.9, 5.7, 8.4, 6.8, 9.1, 5.9, 9.3, 6.4, 8.0, 5.8, 9.5, 6.9, 9.0, 7.1, 8.7, 6.5),frequencia =c(88, 82, 95, 76, 91, 84, 97, 74, 98, 81, 89, 77, 99, 85, 96, 87, 93, 83),aprovado =c("Sim", "Sim", "Sim", "Nao", "Sim", "Sim","Sim", "Nao", "Sim", "Sim", "Sim", "Nao","Sim", "Sim", "Sim", "Sim", "Sim", "Sim"))dados```::: {.callout-note title="Comentário do professor"}Neste conjunto:- `nota_r`, `horas_estudo`, `projetos` e `frequencia` são variáveis quantitativas;- `turma`, `linguagem` e `aprovado` são variáveis qualitativas.:::## 4. Algumas distribuições de probabilidadeUma distribuição de probabilidade descreve como a probabilidade se distribui entre os possíveis valores de uma variável aleatória.## 4.1 Distribuição BinomialA distribuição Binomial é apropriada quando observamos o número de sucessos em um número fixo de ensaios independentes, cada um com a mesma probabilidade de sucesso.Seja$$X \sim Bin(n, p)$$então a probabilidade de observar exatamente \(k\) sucessos é dada por$$P(X = k) = \binom{n}{k} p^k (1-p)^{n-k}, \quad k = 0,1,\ldots,n$$### Exemplo com `dbinom()`Suponha uma prova com probabilidade de aprovação \(p = 0{,}7\), aplicada a \(n = 10\) estudantes. Vamos calcular a probabilidade de exatamente 8 aprovações.::: {.callout-tip title="Execute este código"}```{r}dbinom(8, size =10, prob =0.7)```:::::: {.callout-note title="Comentário do professor"}A função `dbinom(x, size, prob)` devolve a probabilidade pontual da Binomial.- `x`: número de sucessos;- `size`: número de ensaios;- `prob`: probabilidade de sucesso em cada ensaio.:::### Visualização da Binomial::: {.callout-tip title="Execute este código"}```{r}x_binom <-0:10prob_binom <-dbinom(x_binom, size =10, prob =0.7)binom_df <-tibble(x = x_binom,probabilidade = prob_binom)ggplot(binom_df, aes(x = x, y = probabilidade)) +geom_col(fill ="gray60", color ="black") +labs(title ="Distribuição Binomial: n = 10, p = 0.7",x ="Número de sucessos",y ="Probabilidade" ) +theme_minimal()```:::## 4.2 Distribuição NormalA distribuição Normal é uma das distribuições mais importantes em Estatística.Se$$X \sim N(\mu, \sigma^2)$$então \(X\) possui média \(\mu\) e variância \(\sigma^2\).### Exemplo com `dnorm()`Vamos considerar uma distribuição Normal com média 7 e desvio-padrão 1,2.::: {.callout-tip title="Execute este código"}```{r}x_norm <-seq(3, 11, by =0.1)dens_norm <-dnorm(x_norm, mean =7, sd =1.2)normal_df <-tibble(x = x_norm,densidade = dens_norm)ggplot(normal_df, aes(x = x, y = densidade)) +geom_line(linewidth =1, color ="navy") +labs(title ="Densidade da distribuição Normal",x ="x",y ="f(x)" ) +theme_minimal()```:::::: {.callout-note title="Comentário do professor"}A função `dnorm(x, mean, sd)` devolve a densidade da Normal.- `mean`: média;- `sd`: desvio-padrão.:::### Probabilidade acumulada com `pnorm()`Vamos calcular a probabilidade de um valor ser menor ou igual a 8.::: {.callout-tip title="Execute este código"}```{r}pnorm(8, mean =7, sd =1.2)```:::::: {.callout-note title="Comentário do professor"}A função `pnorm(q, mean, sd)` devolve a probabilidade acumulada$$P(X \leq q)$$para uma Normal com média e desvio-padrão especificados.:::## 4.3 Distribuição t de StudentA distribuição t é muito utilizada em inferência para média quando o desvio-padrão populacional é desconhecido.### Exemplo com `dt()`::: {.callout-tip title="Execute este código"}```{r}x_t <-seq(-4, 4, by =0.1)dens_t <-dt(x_t, df =10)t_df <-tibble(x = x_t,densidade = dens_t)ggplot(t_df, aes(x = x, y = densidade)) +geom_line(linewidth =1, color ="darkred") +labs(title ="Densidade da distribuição t de Student",x ="t",y ="f(t)" ) +theme_minimal()```:::::: {.callout-note title="Comentário do professor"}A função `dt(x, df)` devolve a densidade da distribuição t.- `df`: graus de liberdade.:::## 4.4 Distribuição Qui-quadradoA distribuição Qui-quadrado aparece em testes de aderência, independência e homogeneidade, além de intervalos para variância.### Exemplo com `dchisq()`::: {.callout-tip title="Execute este código"}```{r}x_chi <-seq(0, 20, by =0.1)dens_chi <-dchisq(x_chi, df =4)chi_df <-tibble(x = x_chi,densidade = dens_chi)ggplot(chi_df, aes(x = x, y = densidade)) +geom_line(linewidth =1, color ="darkgreen") +labs(title ="Densidade da distribuição Qui-quadrado",x =expression(chi^2),y ="f(x)" ) +theme_minimal()```:::## 5. Inferência para a médiaA inferência para a média procura estimar ou testar valores plausíveis para a média populacional a partir de uma amostra.## 5.1 Intervalo de confiança para a médiaVamos construir um intervalo de confiança para a média de `nota_r`.::: {.callout-tip title="Execute este código"}```{r}t.test(dados$nota_r, conf.level =0.95)```:::::: {.callout-note title="Comentário do professor"}A função `t.test()` pode ser usada, entre outras coisas, para:- construir intervalo de confiança para a média;- realizar teste t para uma amostra;- comparar médias entre dois grupos.:::### InterpretaçãoO intervalo de confiança de 95% fornece uma faixa de valores plausíveis para a média populacional, com base na amostra observada.## 5.2 Teste de hipótese para a médiaSuponha que desejamos testar:$$H_0:\mu = 7\qquad \text{versus} \qquadH_1:\mu \neq 7$$::: {.callout-tip title="Execute este código"}```{r}t.test(dados$nota_r, mu =7)```:::::: {.callout-note title="Comentário do professor"}Neste caso:- `mu = 7` define o valor da média sob hipótese nula;- o resultado informa a estatística de teste, os graus de liberdade, o valor-p e o intervalo de confiança.:::#### Ilustração 5.1 – Lógica de um teste de hipótese```{mermaid}flowchart LRA["Definir H0 e H1"] --> B["Calcular estatística de teste"]B --> C["Obter valor-p"]C --> D["Tomar decisão estatística"]```## 6. Inferência para a proporçãoQuando o interesse está em uma característica binária, trabalhamos com proporções.## 6.1 Estimativa da proporção amostralVamos calcular a proporção de estudantes aprovados.::: {.callout-tip title="Execute este código"}```{r}dados %>%count(aprovado) %>%mutate(proporcao = n /sum(n))```:::## 6.2 Intervalo de confiança para a proporção::: {.callout-tip title="Execute este código"}```{r}prop.test(x =sum(dados$aprovado =="Sim"),n =nrow(dados),conf.level =0.95)```:::::: {.callout-note title="Comentário do professor"}A função `prop.test(x, n, conf.level)` pode ser usada para inferência sobre proporção.- `x`: número de sucessos;- `n`: tamanho da amostra;- `conf.level`: nível de confiança.:::## 6.3 Teste para uma proporçãoSuponha que se deseja testar se a proporção de aprovação é igual a 0,7:$$H_0: p = 0.7\qquad \text{versus} \qquadH_1: p \neq 0.7$$::: {.callout-tip title="Execute este código"}```{r}prop.test(x =sum(dados$aprovado =="Sim"),n =nrow(dados),p =0.7)```:::::: {.callout-note title="Comentário do professor"}Quando o argumento `p` é informado, `prop.test()` passa a realizar um teste de hipótese para a proporção.:::## 7. Análise de variância (ANOVA)A análise de variância é usada para comparar médias de três ou mais grupos.## 7.1 Visualização inicial por boxplotAntes da ANOVA, é recomendável visualizar os dados.::: {.callout-tip title="Execute este código"}```{r}ggplot(dados, aes(x = turma, y = nota_r, fill = turma)) +geom_boxplot() +labs(title ="Nota em R por turma",x ="Turma",y ="Nota em R" ) +theme_minimal()```:::## 7.2 Ajustando o modelo ANOVAVamos comparar a média de `nota_r` entre as turmas.::: {.callout-tip title="Execute este código"}```{r}modelo_anova <-aov(nota_r ~ turma, data = dados)summary(modelo_anova)```:::::: {.callout-note title="Comentário do professor"}A função `aov()` ajusta um modelo de análise de variância.- `nota_r ~ turma` indica que a variável resposta é `nota_r` e o fator explicativo é `turma`.:::### Hipóteses da ANOVA$$H_0: \mu_A = \mu_B = \mu_C$$$$H_1: \text{pelo menos uma média difere das demais}$$## 7.3 Comparações múltiplas com TukeyCaso a ANOVA indique diferença significativa, podemos investigar quais grupos diferem entre si.::: {.callout-tip title="Execute este código"}```{r}TukeyHSD(modelo_anova)```:::::: {.callout-note title="Comentário do professor"}A função `TukeyHSD()` realiza comparações múltiplas entre pares de grupos, controlando o erro do tipo I no conjunto das comparações.:::## 8. Tabelas de contingência e testes Qui-quadradoTabelas de contingência resumem a relação entre duas variáveis qualitativas.## 8.1 Tabela de contingênciaVamos estudar a relação entre `turma` e `aprovado`.::: {.callout-tip title="Execute este código"}```{r}tab_cont <-table(dados$turma, dados$aprovado)tab_cont```:::::: {.callout-note title="Comentário do professor"}A função `table()` constrói tabelas de contingência ou frequências cruzadas entre variáveis categóricas.:::## 8.2 Proporções marginais e conjuntas::: {.callout-tip title="Execute este código"}```{r}prop.table(tab_cont)```:::::: {.callout-tip title="Execute este código"}```{r}prop.table(tab_cont, margin =1)```:::::: {.callout-note title="Comentário do professor"}- `prop.table(tab_cont)` devolve proporções em relação ao total;- `prop.table(tab_cont, margin = 1)` devolve proporções por linha.:::## 8.3 Teste Qui-quadrado de independência::: {.callout-tip title="Execute este código"}```{r}chisq.test(tab_cont)```:::::: {.callout-note title="Comentário do professor"}O teste Qui-quadrado de independência avalia se duas variáveis qualitativas estão associadas.As hipóteses são:$$H_0: \text{as variáveis são independentes}$$$$H_1: \text{as variáveis são associadas}$$:::## 8.4 Visualização da tabela de contingência::: {.callout-tip title="Execute este código"}```{r}tab_df <-as.data.frame(tab_cont)ggplot(tab_df, aes(x = Var1, y = Freq, fill = Var2)) +geom_col(position ="dodge") +labs(title ="Tabela de contingência: turma e aprovação",x ="Turma",y ="Frequência",fill ="Aprovado" ) +theme_minimal()```:::## 9. Análise de correlaçãoA correlação mede a intensidade e a direção da associação linear entre duas variáveis quantitativas.## 9.1 Visualização inicial::: {.callout-tip title="Execute este código"}```{r}ggplot(dados, aes(x = horas_estudo, y = nota_r)) +geom_point(color ="darkred", size =3, alpha =0.8) +geom_smooth(method ="lm", se =FALSE, color ="navy", linewidth =1) +labs(title ="Horas de estudo versus nota em R",x ="Horas de estudo por semana",y ="Nota em R" ) +theme_minimal()```:::## 9.2 Gráfico interativo com `plotly`::: {.callout-tip title="Execute este código"}```{r}grafico_cor <-ggplot( dados,aes(x = horas_estudo,y = nota_r,text =paste("Turma:", turma,"<br>Linguagem:", linguagem,"<br>Projetos:", projetos ) )) +geom_point(color ="darkred", size =3, alpha =0.8) +labs(title ="Horas de estudo versus nota em R",x ="Horas de estudo por semana",y ="Nota em R" ) +theme_minimal()ggplotly(grafico_cor, tooltip ="text")```:::::: {.callout-note title="Comentário do professor"}Nesta versão interativa, mantemos apenas os pontos. Isso evita distorções visuais que podem ocorrer quando a linha de tendência ajustada no `ggplot2` é convertida automaticamente pelo `plotly`.:::## 9.3 Gráfico interativo com reta ajustada via `plotly`::: {.callout-tip title="Execute este código"}```{r}modelo_plotly <-lm(nota_r ~ horas_estudo, data = dados)dados_plotly <- dados %>%mutate(ajustado =fitted(modelo_plotly))plot_ly(data = dados,x =~horas_estudo,y =~nota_r,type ="scatter",mode ="markers",text =~paste("Turma:", turma,"<br>Linguagem:", linguagem,"<br>Projetos:", projetos ),hoverinfo ="text",marker =list(color ="darkred", size =8),name ="Observações") %>%add_lines(data = dados_plotly %>%arrange(horas_estudo),x =~horas_estudo,y =~ajustado,line =list(color ="navy", width =2),name ="Reta ajustada" ) %>%layout(title ="Horas de estudo versus nota em R",xaxis =list(title ="Horas de estudo por semana"),yaxis =list(title ="Nota em R") )```:::::: {.callout-note title="Comentário do professor"}Aqui, o gráfico é construído diretamente no `plotly`, e a reta ajustada é adicionada separadamente com `add_lines()`. Essa estratégia costuma produzir uma visualização interativa mais estável e esteticamente mais consistente.:::## 9.4 Coeficiente de correlação de Pearson::: {.callout-tip title="Execute este código"}```{r}cor(dados$horas_estudo, dados$nota_r)```:::::: {.callout-note title="Comentário do professor"}A função `cor(x, y)` calcula o coeficiente de correlação linear de Pearson, que varia entre -1 e 1.- valor próximo de 1: forte associação linear positiva;- valor próximo de -1: forte associação linear negativa;- valor próximo de 0: fraca associação linear.:::## 9.5 Teste para correlação::: {.callout-tip title="Execute este código"}```{r}cor.test(dados$horas_estudo, dados$nota_r)```:::::: {.callout-note title="Comentário do professor"}A função `cor.test()` realiza inferência para o coeficiente de correlação, fornecendo:- estimativa da correlação;- estatística de teste;- valor-p;- intervalo de confiança.:::## 10. Regressão linear simplesA regressão linear simples modela a relação entre uma variável resposta \(Y\) e uma variável explicativa \(X\).O modelo é dado por$$Y_i = \beta_0 + \beta_1 X_i + \varepsilon_i$$No nosso contexto, podemos considerar:- \(Y_i\): nota em R;- \(X_i\): horas de estudo.## 10.1 Ajustando o modelo::: {.callout-tip title="Execute este código"}```{r}modelo_lm <-lm(nota_r ~ horas_estudo, data = dados)summary(modelo_lm)```:::::: {.callout-note title="Comentário do professor"}A função `lm()` ajusta um modelo linear.- `nota_r ~ horas_estudo` indica que `nota_r` é explicada por `horas_estudo`.:::## 10.2 Coeficientes estimados::: {.callout-tip title="Execute este código"}```{r}coef(modelo_lm)```:::::: {.callout-note title="Comentário do professor"}Os coeficientes estimados representam:- \(\hat{\beta}_0\): intercepto;- \(\hat{\beta}_1\): inclinação da reta.:::## 10.3 Valores ajustados e resíduos::: {.callout-tip title="Execute este código"}```{r}dados_reg <- dados %>%mutate(ajustado =fitted(modelo_lm),residuo =resid(modelo_lm) )dados_reg %>%select(horas_estudo, nota_r, ajustado, residuo)```:::::: {.callout-note title="Comentário do professor"}- `fitted(modelo_lm)` devolve os valores ajustados pelo modelo;- `resid(modelo_lm)` devolve os resíduos, isto é, a diferença entre valor observado e valor ajustado.:::## 10.4 Visualizando reta ajustada::: {.callout-tip title="Execute este código"}```{r}ggplot(dados, aes(x = horas_estudo, y = nota_r)) +geom_point(color ="darkred", size =3, alpha =0.8) +geom_smooth(method ="lm", se =FALSE, color ="navy", linewidth =1) +labs(title ="Regressão linear simples: nota em R e horas de estudo",x ="Horas de estudo por semana",y ="Nota em R" ) +theme_minimal()```:::#### Ilustração 10.1 – Fluxo da regressão linear simples```{mermaid}flowchart LRA["Definir variável resposta Y"] --> B["Definir variável explicativa X"]B --> C["Ajustar modelo lm()"]C --> D["Interpretar coeficientes"]D --> E["Analisar ajuste e resíduos"]```## 11. Integração entre descrição e inferênciaAntes de aplicar procedimentos inferenciais, é boa prática examinar os dados descritivamente.### Exemplo integrado para `nota_r` por turma::: {.callout-tip title="Execute este código"}```{r}dados %>%group_by(turma) %>%summarise(media =mean(nota_r),desvio_padrao =sd(nota_r),n =n(),.groups ="drop" )```:::::: {.callout-tip title="Execute este código"}```{r}ggplot(dados, aes(x = turma, y = nota_r, fill = turma)) +geom_boxplot() +labs(title ="Distribuição de nota em R por turma",x ="Turma",y ="Nota em R" ) +theme_minimal()```:::::: {.callout-note title="Comentário do professor"}Essa combinação entre sumarização e visualização ajuda a interpretar melhor o resultado da ANOVA e a verificar se faz sentido modelar diferenças entre grupos.:::## 12. Erros comuns e boas práticas::: {.callout-warning title="Erros comuns"}- aplicar testes inferenciais sem examinar antes os dados;- interpretar valor-p como medida de tamanho de efeito;- concluir causalidade a partir de correlação;- aplicar regressão linear sem inspecionar o diagrama de dispersão;- usar Qui-quadrado sem verificar se a estrutura da tabela é adequada;- comparar médias entre grupos sem visualizar a distribuição dos dados.:::::: {.callout-important title="Boas práticas"}- combine análise descritiva e inferencial;- formule claramente as hipóteses antes do teste;- interprete resultados estatísticos no contexto do problema;- utilize gráficos para apoiar a leitura dos testes;- não reduza a análise a um único número, como o valor-p.:::## 13. Exercícios propostos### Exercício 1Considere uma variável aleatória \(X \sim Bin(12, 0.6)\). Calcule:- \(P(X = 7)\);- \(P(X \leq 7)\).### Exercício 2Construa o gráfico da densidade de uma distribuição Normal com média 10 e desvio-padrão 2.### Exercício 3Calcule um intervalo de confiança de 95% para a média de `nota_r`.### Exercício 4Teste a hipótese de que a média de `nota_r` é igual a 7,5.### Exercício 5Calcule a proporção de estudantes aprovados e construa um intervalo de confiança de 95% para essa proporção.### Exercício 6Teste se a proporção de aprovação é igual a 0,8.### Exercício 7Ajuste uma ANOVA para comparar `nota_r` entre as turmas e interprete o resultado.### Exercício 8Construa uma tabela de contingência entre `linguagem` e `aprovado`, e aplique o teste Qui-quadrado de independência.### Exercício 9Calcule a correlação de Pearson entre `horas_estudo` e `nota_r` e teste sua significância.### Exercício 10Construa uma versão interativa, com `plotly`, do diagrama de dispersão entre `horas_estudo` e `nota_r`:- primeiro apenas com os pontos;- depois com a reta ajustada adicionada diretamente com `plot_ly()` e `add_lines()`.### Exercício 11Ajuste um modelo de regressão linear simples com `nota_r` como variável resposta e `horas_estudo` como variável explicativa. Apresente:- coeficientes estimados;- resumo do modelo;- gráfico com a reta ajustada.::: {.callout-note title="Comentário do professor"}Os exercícios desta aula foram formulados para articular probabilidade, inferência, testes de hipóteses e modelagem simples, sempre com apoio de recursos gráficos e de sumarização já estudados anteriormente.:::## 15. Para a próxima aulaNa próxima aula, continuaremos avançando em inferência estatística e modelagem, ampliando o repertório de técnicas para análise de dados em contextos aplicados.::: {.callout-tip title="Tarefa do aluno"}Refaça os exemplos da aula e procure relacionar cada procedimento inferencial com o tipo de variável envolvida, o objetivo analítico e a forma mais adequada de visualização dos dados.:::