Inferência Estatística

Desenho Experimental e Análise Avançada de Dados Ecológicos

João O. Santos

ISPA

2025-10-14

Principles of Statistical Inference

Interin Summary

  • The mean is a (non-robust) measure of central tendency for quantitative variable distributions

    • Namely, for the normal distribution
  • The parameters of the normal distribution are the mean and variance/standard deviation

  • An area of a probability distribution is a probability

Interin Summary

  • The distribution of sample means converges towards a normal distribution with the population mean and with a standard deviation equal to \(\frac{\sigma}{\sqrt{N}}\) –the standard error
    • Even if the means are sampled from non-normal distributions

Central Limit Theorem and Regression

Dedução

  • Todo o A é B

  • C é A

  • ∴ C é B

  • A dedução é verdadeira sempre que as suas premissas forem verdadeiras e a conclusão derivar logicamente das premissas

Inferência

  • O João é professor de estatística

  • O João é parvo

  • ∴ Todos os professores de estatística são parvos

  • As inferências nunca são garantidas mesmo que as suas premissas sejam verdadeiras e o raciocínio lógico

Inferência Estatística

  • Em traços gerais, o processo de inferência estatística tenta testar hipóteses sobre parâmetros populacionais, a partir de estatísticas amostrais

Questão de Partida

  • Como testar hipóteses, sobre uma população, quando só tenho acesso a uma amostra?

Modelos Sem VI

  • Quando queremos testar se a média duma dada variável difere dum dado valor (e.g., 0 ou outro)

  • Se a mudança no número de elementos (i.e., \(diff = depois - antes\)) for igual a zero nao há mudança, se for positiva tivemos um aumento da população, se for negativa temos uma diminuição.

  • Se o pH diferir de sete então a solução não é neutra

  • Conseguem pensar noutros exemplos?

Problema de Investigação

  • Como é que podemos saber se, em média, as pessoas (população) apreciam a música da Taylor Swift?

  • Recolhemos uma amostra representativa da população

  • Usamos uma escala capaz de medir a apreciação pela música da Taylor Swift

    • O índice de apreciação é a média dos cinco itens da escala

Dados

  • O índice vai de -5 a 5

  • Quanto mais elevado mais as pessoas gostam da música

  • Quanto mais baixo mais as pessoas desgostam da música

Hipóteses

  • O centro da escala, zero, corresponderá a ser indiferente quanto à música da Taylor Swift

  • Se a média da população for zero, sabemos que as pessoas são indiferentes à música da Taylor (hipótese nula: H0)

  • Logo, se apreciarem a música a média da população não poderá ser zero (hipótese alternativa: H1)

Dados

  • Não temos acesso à população toda, só à nossa amostra

  • Vamos conhecê-la melhor (i.e., estatística descritiva e gráficos)

Dados

Dados

ggplot(ds, aes(y = Love4Taylor)) +
geom_boxplot() +
ylim(-5, 5) +
theme_classic()

Dados

M <- mean(ds$Love4Taylor)
SD <- sd(ds$Love4Taylor)

ggplot(ds, aes(x = Love4Taylor)) +
geom_histogram() +
geom_vline(xintercept = M, color = "#F8766D", linetype = "dashed") +
xlim(-5, 5) +
theme_classic()
  • Tracejado vermelho indica a média (M = 0.57, SD = 1.1)

Abordagem de Comparação de Modelos

  • A grande parte dos modelos que vamos falar são casos específicos da regressão linear

  • Vamos então usar a linguagem da regressão linear para estudar todos os modelos

    • Termos como previsão, erro, preditor/variável independente (VI), variável dependente (VD), etc…

Equação Fundamental

  • Dados = Modelo + Erro

  • Dados = Índice de apreciação da Taylor

  • Faltam os modelos e os seus erros…

Que Modelos Comparar?

  • Já vimos que vamos inferir a partir da comparação de modelos

  • Mais concretamente, vamos comparar o modelo proposto com o modelo nulo

Modelos vs Realidade

meme

Modelos

  • VD = Modelo + Erro

  • Modelo = β0 + β1 x VI

    • O mesmo que Ŷ = a + bx
  • β0 = intercepto: ponto de partida/previsão quando VI é 0

  • β1 = declive: inclinação da recta

  • Erro: aquilo que o modelo não explica/prevê

    • Diferença entre o que esperamos e realidade que encontramos

Modelo Nulo

  • Previsão na ausência do efeito esperado teoricamente

  • Previsão se as pessoas forem indiferentes à Taylor

    • Índice de apreciação = 0
  • Modelo mais simples sem parâmetros (β0 = 0; β1 = 0)

    • Dados = Modelo + Erro
    • Modelo = 0
    • Dados = Erro

Modelo Nulo

  • Adicionemos uma coluna com a previsão (m0) e erro (E_m0)
ds$m0 <- 0
ds$E_m0 <- ds$Love4Taylor - ds$m0
  • A previsão é sempre 0, os dados são todos erro sem explicação

Modelo Proposto

  • Previsão na presença do efeito esperado teoricamente

  • Neste caso o modelo proposto será a média amostral

    • Modelo proposto = β0 = 0.57
  • Modelo mais complexo porque implica calcular a média

Modelo Proposto

  • Acrescentemos a previsão e os erros do modelo proposto
ds$m1 <- M
ds$E_m1 <- ds$Love4Taylor - ds$m1
  • O erro deixa de ser igual aos dados, passamos a ter uma proposta para o explicar

Erros

  • O modelo nulo tem mais erro

Método dos Mínimos Quadrados

  • Já vimos que se somarmos diferenças com valores positivos e negativos, podemos acabar com totais próximos de zero que nos levariam a crer erradamente que não há diferenças

  • Os parâmetros estimados para os modelos que vamos estudar são estimados de forma a minimizar o quadrado dos erros

Erros Quadrados

  • Acrescentemos então o quadrado dos erros (E2_m0, E2_m1)
ds$E2_m0 <- ds$E_m0**2
ds$E2_m1 <- ds$E_m1**2

Erros Quadrados

Abordagem de Comparação de Modelos

  • Mas como comparar os modelos?

  • Dois critérios:

    • Os erros (quadrados)
    • A complexidade (graus de liberdade)

Erros Quadrados

Já temos os erros quadrados

Somatório dos Erros Quadrados

SSE_m0 <- sum(ds$E2_m0)
SSE_m1 <- sum(ds$E2_m1)
  • Falta somá-los:
  • Soma no modelo nulo: SSE(m0) = 74.75
  • Soma no modelo proposto: SSE(m1) 58.78

Graus de Liberdade do Fator

  • Nº parâmetros modelo nulo = 0

  • Nº parâmetros modelo proposto (np_m1) = 1 (o intercepto)

  • glfator = diferença no nº de parâmetros

    • glfator = 1 - 0 = 1

Graus de Liberdade do Erro

  • Fórmula: glerro = N - np_m1
    • No caso: 50 - 1 = 49
  • Intuição: sabendo a soma dos erros e os erros para todas as observações excepto uma, consigo determinar o valor que falta

Comparação de Modelos

  • Mas como comparar os modelos em função dos erros e da complexidade?

  • Precisamos de ponderar a redução do erro em função da complexidade acrescentada

Estatística de Teste

  • Genericamente, uma estatística de teste diz-nos o quão distantes estamos do que seria de esperar se não houvesse efeito (hipótese nula). Quanto maior o valor da estatística de tese, mais distante mais evidência temos contra a hipótese nula (a ausência de efeito).

  • Há várias estatísticas de teste, dependendo dos modelos

    • Vamos focar-nos sobretudo no F de Snedcor e no t de Student

F de Snedcor

  • A estatística de teste F pondera a redução do erro em função da diferença da complexidade dos modelos e do erro que continua por explicar pelo modelo proposto
    • A estatística de teste F é genérica o suficiente para nos permitir comparar praticamente qualquer par de modelos. Vamos usá-la para comparar o modelo nulo com o proposto.

Distribuição t

t49

Distribuição F

F1, 49

F = t2

  • A distribuição de F é o quadrado da distribuição t quando dffactor = 1

F de Snedcor

\(F = \frac{MSR}{MSE}\)

\(MSR = \frac{SSE(m0) - SSE(m1)}{gl_{fator}}\)

\(MSE = \frac{SSE(m1)}{gl_{erro}}\)

  • MSR = Média da redução do erro (ao passar do nulo para o proposto)
  • MSE = Média do erro do modelo proposto (o que fica por explicar)

F de Snedcor

\(MSR = \frac{SSE(m0) - SSE(m1)}{gl_{fator}} = \frac{74.75 - 58.78}{1} = \frac{15.97}{1} = 15.97\)

\(MSE = \frac{SSE(m1)}{gl_{erro}} = \frac{58.78}{49} = 1.2\)

\(F = \frac{MSR}{MSE} = \frac{15.97}{1.2} = 13.32\)

our_F <- (SSE_m0 - SSE_m1) / (SSE_m1 / 49)

Como Reportar o F

  • Quando reportamos o F reportamos os graus de liberdade do fator e do erro

  • Biologia: Fgl_fator, gl_erro = valor do F, P = valor-p

    • F1, 49 = 13.32, P = ?
  • APA: F(gl_fator, gl_erro) = valor do F, p = valor-p

    • F(1, 49) = 13.32

t de Student

\(t = \frac{Estimativa}{Erro de Estimação}\)

\(t = \frac{Estatística}{Erro Padrão}\)

\(t = \frac{M}{SE}\)

  • Estatística: β0 = Média (o intercepto)

  • SE = Erro de estimativa da média da população

t de Student

\(M = 0.57\)

\(SE = \frac{s'}{\sqrt{N}}\)

\(t = \frac{M}{SE} = \frac{0.57}{\frac{1.1}{\sqrt{50}}} = 3.65\)

  • Mas o que fazemos com este valor?

As Filosofias da Inferência Estatística

Fisher

  • Se os dados são muito incompatíveis com a ausência de efeito (H0, com as pessoas serem indiferentes à Taylor), então podemos ter alguma confiança que H0 é falsa (que as pessoas não serão indiferentes)

Neyman-Pearson

Decisão / Realidade H0 verdadeira H1 verdadeira
Aceitar H0 Decisão correcta Erro Tipo II
Rejeitar H0 Erro Tipo I Decisão correcta

Neyman-Pearson

Decisão / Realidade Indiferentes1 Gostam/Desgostam1
Dizer que são indiferentes1 Correcto Erro Tipo II
Dizer que não são indiferentes1 Erro Tipo I Correcto
  • 1: Quanto à música da Taylor

Falsos Positivos e Negativos

  • Fixamos uma probabilidade tolerável de falsos positivos: alfa; α

  • Podemos também falar de uma probabilidade tolerável de falsos negativos: beta; β

  • Tradicionalmente α = .05 e β = .20

Expectativa a Longo Prazo

  • Imaginemos que as pessoas eram indiferentes à Taylor Swift

  • Fazíamos 100 estudos usando α = .05

  • Em 95 estudos aceitaríamos H0 (diríamos que eram indiferentes)

  • Em cinco diríamos que não eram indiferentes (falsos positivos)

Exemplo Gráfico

  • A área vermelha é bem mais pequena que a azul, para α = .05, espera-se que seja 5% do total e a azul 95%

Mas Como Inferir?

  • Fixamos um limite para os falsos positivos que vamos tolerar, α = .05

  • Mas como sabemos que vamos cumprir esse limite?

Distribuições

  • Já vimos como há distribuições matematicamente definidas (normal, binomial) e cujas áreas nos dão probabilidades

  • Vamos agora usar a mesma lógica com os valores da estatística de teste

Estatística de Teste

  • Já vimos as distribuições de t e F

  • Essas eram as distribuições de t e F, quando a hipótese nula é verdadeira (quando não há efeito; indiferença à Taylor)

  • Vamos decidir com base numa área dessas distribuições que dá pelo nome de valor-p

Significância Estatística

  • Queremos saber a probabilidade de obter o valor da estatística de teste, ou outro mais extremo, assumindo a hipótese nula

  • Essa probabilidade é o valor-p

    • \(p \le \alpha\) rejeitamos H0
    • \(p \gt \alpha\) aceitamos H0

Significância da Evidência Estatística

  • Se a probabilidade de obter o nosso t ou F, se as pessoas forem indiferentes à Taylor, for inferior ou igual a alfa (e.g., 0.05), vamos rejeitar H0

  • Ou seja, vamos dizer que temos evidência estatísticamente significativa de que as pessoas não são indiferentes à música da Taylor

Valor-p

  • A probabilidade de encontrarmos os resultados que encontrámos, ou valores mais extremos se não houvesse efeito (e os pressupostos do modelo forem verdadeiros, ver Wasserstein & Lazar, 2016)

Valor-p

  • Qual a probabilidade de obter F(1, 49) = 13.32 (t(49) = 3.65), ou valores mais extremos, se as pessoas fossem neutras quanto à música da Taylor Swift

  • Perguntamos ao computador…

Valor-p

  • Computador, qual a probabilidade de \(F(1, 49) \ge 13.32\)?
options(digits = 4)
  • p = 0.0006; alfa = .05, p < alfa
    • rejeitamos H0
  • As pessoas não são indiferentes à música da Taylor!

Valor-p em F

g_f +
stat_function(fun = df, args = list(df1 = 1, df2 = 49),
              xlim = c(0, our_F), geom = "area", fill = "lightblue") +
stat_function(fun = df, args = list(df1 = 1, df2 = 49),
              xlim = c(our_F, 10), geom = "area", fill = "red")
  • p = 0.0006; p < .001; p < 0.1%

Valor-p em t

\(p = P(t \ge 3.649) + P(t \le -3.649)\)

g_t +
stat_function(fun = dt, args = list(df = 49),
              xlim = c(-our_t, our_t), geom = "area", fill = "lightblue") +
stat_function(fun = dt, args = list(df = 49),
              xlim = c(-5, -our_t), geom = "area", fill = "red") +
stat_function(fun = dt, args = list(df = 49),
              xlim = c(our_t, 5), geom = "area", fill = "red")

Nota

  • O nosso p é tão pequeno que nem conseguimos ver a área que representa nas distribuições do t e do F

  • Mas e se o nosso p fosse, p = .050

p = .050

O Que Concluímos?

  • Com o p que obtivemos de facto (p < .001) sabemos que…

  • Se as pessoas fossem indiferentes quanto à música da Taylor Swift, seria extremamente improvável obter estes dados, p < 0.1%

  • Temos evidência estatísticamente significativa que as pessoas não são indiferentes à música da Taylor Swift, t(49) = 3.649, p < .001.

Secção de Resultados

  • Ao realizarmos um teste-t de student a uma amostra, concluímos que, em média, as pessoas apreciam a música da Taylor Swift, M = 0.5652, DP = 1.0952; t49 = 3.649, P < .001.

One DV No IV

  • AKA: one-sample Student’s t-test

  • \(t = \frac{\bar{x} - \mu_{predicted}}{\frac{\sigma}{\sqrt{N}}}; t = \frac{M - \text{test value}}{SE}\)

  • \(\text{if: test value} = 0; t = \frac{Mean}{\text{standard error of the mean}}\)

  • \(t = \frac{Estimate}{\text{Estimation Error}}; t = \frac{Signal}{Noise}\)

  • Recall the SE is the SD for the sampling distribution of the mean

Null Model

# Import packages
library(palmerpenguins)

# Import dataset
ds <- penguins

# Fit "no intercept" and no slope model
m0 <- lm(body_mass_g ~ 0, ds)

SSE_m0 <- sum(resid(m0)**2)

Proposed Model

# One intercept and no slope model
m1 <- lm(body_mass_g ~ 1, ds)

SSE_m1 <- sum(resid(m1)**2)

F

N <- sum(complete.cases(ds$body_mass_g))
p_m0 <- 0
p_m1 <- 1
MSR <- (SSE_m0 - SSE_m1) / (p_m1 - p_m0)
MSE <- SSE_m1 / (N - p_m1)
F <- MSR / MSE

print(F)
[1] 9388
anova(m0, m1)
Res.Df RSS Df Sum of Sq F Pr(>F)
342 6257228750 NA NA NA NA
341 219307697 1 6037921053 9388 0

t

M <- mean(ds$body_mass_g, na.rm = TRUE)
SD <- sd(ds$body_mass_g, na.rm = TRUE)
SE <- SD / sqrt(N)

t <- M / SE
print(t)
[1] 96.89
summary(m1)

Call:
lm(formula = body_mass_g ~ 1, data = ds)

Residuals:
   Min     1Q Median     3Q    Max 
 -1502   -652   -152    548   2098 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   4201.8       43.4    96.9   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 802 on 341 degrees of freedom
  (2 observations deleted due to missingness)

Model Comparison

  • That was actually a stupid comparison…

  • Can anyone tell me why?

  • Because the mean body mass will obviously differ from 0, penguins are not weightless

Complete Script

# Import packages
library(palmerpenguins)

# Read in data
ds <- penguins

# Fit the Model
model <- lm(body_mass_g ~ 1, ds)

# Hypothesis test and output
summary(model)
  • Four lines of code, four comments.

Exercise

  1. Import the package/s you need

  2. Assign penguins to a variable

  3. Create a column with the body mass in kg

  4. Visualize the mass distribution

  5. Test if the population mean mass differs from 4.00kg

    • Tip: \(t = \frac{\bar{x} - \mu_0}{SE_x}; diff = x - \mu_0; t = \frac{\bar{diff}}{SE_{diff}}\)
  6. Interpret the result

Solutions

# 1.
library(ggplot2)
library(palmerpenguins)

# 2.
ds <- penguins

# 3.
ds$mass_kg <- ds$body_mass_g / 1000

Solutions

# 4.
g <- ggplot(ds, aes(x = mass_kg)) + geom_density() + theme_classic()
# OR
#g <- ggplot(ds, aes(x = mass_kg)) + geom_histogram() + theme_classic()
#g <- ggplot(ds, aes(y = mass_kg)) + geom_boxplot() + theme_classic()

print(g)

Solutions

#5.
# Either
model <- lm(mass_kg - 4 ~ 1, ds)
# Or
ds$mass_minus_4kg <- ds$mass_kg - 4
model <- lm(mass_minus_4kg ~ 1, ds)
# Then
summary(model)

Call:
lm(formula = mass_minus_4kg ~ 1, data = ds)

Residuals:
   Min     1Q Median     3Q    Max 
-1.502 -0.652 -0.152  0.548  2.098 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   0.2018     0.0434    4.65  4.7e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.802 on 341 degrees of freedom
  (2 observations deleted due to missingness)

Solutions

mean(ds$mass_kg, na.rm = TRUE)
[1] 4.202
sd(ds$mass_kg, na.rm = TRUE)
[1] 0.802

There is significant evidence that the average penguin body mass (M = 4.20, SD = 0.80) is greater than 4.00kg, t341 = 4.65, P < .001.