fortunes::fortune(264)
#
# Soham: How to compute the p-value of a statistic generally?
# Berton Gunter: runif(1)
# -- Soham and Berton Gunter
# R-help (May 2010)
Besag and Clifford (1989) definiram que um teste de Monte Carlo generalizado é um que possui as seguintes características:
Partindo dessa ideia, um teste de hipótese de Monte Carlo pode ser formulado da seguinte maneira:
Para entendermos o que é o nível de significância \((\alpha)\), precisamos saber que, ao realizar um teste de hipótese, estamos sujeitos a dois tipos de erros.
\(H_0\) verdadeira | \(H_0\) falsa | |
---|---|---|
Não rejeitar \(H_0\) | Decisão correta | Erro tipo II |
Rejeitar \(H_0\) | Erro tipo I | Decisão correta |
Definimos por \(\alpha\) e \(\beta\) as probabilidades de cometer os erros do tipo I e II:
Para testes unilaterais, sendo \(H_0: \mu = \mu_0\), a expressão de \(\alpha^*\) depende da hipótese alternativa:
\[\begin{align*} \alpha^* &= P(\bar{X} < \bar{x}_{obs} \, | \, H_0 \text{ verdadeira}) \quad \text{para } H_a: \mu < \mu_0 \\ \alpha^* &= P(\bar{X} > \bar{x}_{obs} \, | \, H_0 \text{ verdadeira}) \quad \text{para } H_a: \mu > \mu_0 \end{align*}\]
Para testes bilaterais, temos \(H_0: \mu = \mu_0\) contra \(H_0: \mu \neq \mu_0\), a definição do nível descritivo depende da relação entre \(\bar{x}_{obs}\) e \(\mu_0\):
\[\begin{align*} \alpha^* &= 2 \times P(\bar{X} < \bar{x}_{obs} \, | \, H_0 \text{ verdadeira}) \quad \text{se } \bar{x}_{obs} < \mu_0 \\ \alpha^* &= 2 \times P(\bar{X} > \bar{x}_{obs} \, | \, H_0 \text{ verdadeira}) \quad \text{se } \bar{x}_{obs} > \mu_0 \\ \end{align*}\]
Como estamos calculando a probabilidade para apenas uma das caudas, então esse valor é multiplicado por 2.
Quando a variância populacional é conhecida, a distribuição amostral da média é \(\bar{X} \sim \text{N}(\mu, \sigma^2 / n)\) e a estatística de teste é
\[ z = \frac{\bar{x} - \mu_0}{\sigma/\sqrt{n}} \sim \text{N}(0,1) \]
Suponha que uma amostra de \(n=30\) valores foram obtidos de uma VA \(X \sim \text{N}(10, 1)\) e deseja-se testar as hipóteses
\[ \begin{align*} H_0 &: \mu = 10 \\ H_a &: \mu \neq 10 \end{align*} \]
com \(\alpha=0.05\).
## Simula X ~ N(10, 1)
set.seed(2019-10-29)
n <- 30
x <- rnorm(n, 10, 1)
(med <- mean(x))
# [1] 10.08421
(s2 <- var(x))
# [1] 1.158774
## Teste padrão para
## H0: mu = 10
## Ha: mu != 10
mu0 <- 10
## Estatistica de teste
(zcalc <- (med - mu0)/sqrt(1/n))
# [1] 0.4612242
## Valor critico
(zcrit <- qnorm(.025, mean = 0, sd = 1))
# [1] -1.959964
## p-valor
2 * pnorm(zcalc, mean = 0, sd = 1, lower.tail = FALSE)
# [1] 0.6446378
## Direto, com base na distribuição amostral
2 * pnorm(med, mean = 10, sd = 1/sqrt(n), lower.tail = FALSE)
# [1] 0.6446378
## Usando simulacao de Monte Carlo
N <- 1e4
## Simulando direto da distribuicao amostral, sob H0
am <- rnorm(N, mean = mu0, sd = 1/sqrt(n))
## Simula da populacao e calcula as medias, sob H0
am2 <- replicate(N, mean(rnorm(n, mu0, 1)))
## Visualização
par(mfrow = c(1, 2))
hist(am, main = "Distribuição amostral")
abline(v = med, col = 2)
hist(am2, main = "Média de amostras")
abline(v = med, col = 2)
par(mfrow = c(1, 1))
## p-valor empírico
2 * sum(am >= med)/N
# [1] 0.6336
2 * sum(am2 >= med)/N
# [1] 0.646
## Padroniza a distribuição para N(0,1)
zpad <- (am - mu0)/sqrt(1/n)
hist(zpad)
abline(v = zcalc, col = 2)
## p-valor empírico
2 * sum(zpad >= zcalc)/N
# [1] 0.6336
Quando a variância populacional é desconhecida, a distribuição amostral da média é \(\bar{X} \sim \text{N}(\mu, s^2 / n)\) e a estatística de teste é
\[ t = \frac{\bar{x} - \mu_0}{s/\sqrt{n}} \sim t_{(n-1)} \]
Suponha que uma amostra de \(n=30\) valores foram obtidos de uma VA \(X \sim \text{N}(10, 1)\). Na prática não saberemos o verdadeiro valor de \(\sigma^2\), por isso usaremos a variância amostral \(s^2\) no lugar de \(\sigma^2\). Assim, deseja-se testar as hipóteses
\[ \begin{align*} H_0 &: \mu = 10 \\ H_a &: \mu \neq 10 \end{align*} \]
com \(\alpha=0.05\).
## Simula de N(10, 1), mas agora asumindo que a variância é desconhecida
set.seed(2019-10-29)
n <- 30
x <- rnorm(n, 10, 1)
(med <- mean(x))
# [1] 10.08421
(s2 <- var(x))
# [1] 1.158774
## Teste padrão para
## H0: mu = 10
## Ha: mu != 10
mu0 <- 10
t.test(x = x, alternative = "two.sided", mu = mu0)
#
# One Sample t-test
#
# data: x
# t = 0.42846, df = 29, p-value = 0.6715
# alternative hypothesis: true mean is not equal to 10
# 95 percent confidence interval:
# 9.68225 10.48617
# sample estimates:
# mean of x
# 10.08421
## Estatística de teste
(tcalc <- (med - mu0)/sqrt(s2/n))
# [1] 0.4284624
## Valor crítico
(tcrit <- qt(.025, df = n - 1))
# [1] -2.04523
## p-valor
2 * pt(tcalc, df = n - 1, lower.tail = FALSE)
# [1] 0.6714802
## Teste por simulação de Monte Carlo
N <- 1e4
## Simula direto da distribuição amostral da média
am <- rnorm(N, mean = mu0, sd = sqrt(s2/n))
## Calcula média de amostras de tamanho n da população, com a variância
## estimada a partir dos dados
am2 <- replicate(N, mean(rnorm(n, mu0, sqrt(s2))))
## Visualização
par(mfrow = c(1, 2))
hist(am, main = "Distribuição amostral")
abline(v = med, col = 2)
hist(am2, main = "Média de amostras")
abline(v = med, col = 2)
par(mfrow = c(1, 1))
## p-valor empírico
2 * sum(am >= med)/N
# [1] 0.6566
2 * sum(am2 >= med)/N
# [1] 0.6678
## Padroniza a distribuição para t(n - 1)
tpad <- (am - mu0)/sqrt(s2/n)
hist(tpad)
abline(v = tcalc, col = 2)
## p-valor empírico
2 * sum(tpad >= tcalc)/N
# [1] 0.6566
Considere duas populações \(X_1\) e \(X_2\) com médias \(\mu_1\) e \(\mu_2\), e desvios-padrão \(\sigma_1\) e \(\sigma_2\), ou seja \[ X_1 \sim \text{N}(\mu_1, \sigma_1^2) \qquad\text{e}\qquad X_2 \sim \text{N}(\mu_2, \sigma_2^2). \]
A “nova” variável \(\overline{X}_d = (\overline{X}_1 - \overline{X}_2)\) também possui distribuição normal com
\[ \begin{aligned} \text{E}(\overline{X}_1 - \overline{X}_2) &= \mu_1 - \mu_2 \\ \text{V}(\overline{X}_1 - \overline{X}_2) &= \text{V}(\overline{X}_1) + \text{V}(\overline{X}_2) \\ &= \frac{\sigma^2_1}{n_1} + \frac{\sigma^2_2}{n_2}, \end{aligned} \]
ou seja, a distribuição amostral da diferença de médias é
\[ \overline{X}_d = (\overline{X}_1 - \overline{X}_2) \sim \text{N}\left(\mu_1 - \mu_2, \frac{\sigma^2_1}{n_1} + \frac{\sigma^2_2}{n_2}\right). \]
Quando a variância populacional é desconhecida, utilizamos \(s^2\) como estimativa para \(\sigma^2\), e pode-se considerar dois casos distintos
O exemplo abaixo é uma adaptação de um exemplo clássico analisado por Manly (2006). Os dados se referem ao comprimento das mandíbulas de 20 exemplares de chacais (10 de cada sexo) disponíveis no Museu de História Natural Britânico.
Considere que \(\mu_1\) seja a média populacional dos comprimentos das mandíbulas de chacaias machos, e que \(\mu_2\) se refere às fêmeas. Os pesquisadores supõem que as mandíbulas dos machos são, em média, maiores que as das fêmeas. Dessa forma um teste de hipótese pode ser formulado com as seguintes hipóteses
\[ \begin{align*} H_0 &: \mu_1 - \mu_2 = 0 \Rightarrow \mu_1 = \mu_2 \\ H_a &: \mu_1 - \mu_2 > 0 \Rightarrow \mu_1 > \mu_2 \end{align*} \]
As variâncias populacionais são desconhecidas, mas assume-se que sejam iguais, portanto a estatística de teste é
\[ t = \frac{(\overline{x}_1 - \overline{x}_2) - (\mu_1 - \mu_2)}{ \displaystyle\sqrt{\frac{s^2}{n_1} + \displaystyle\frac{s^2}{n_2}}} = \frac{\overline{x}_1 - \overline{x}_2}{ \displaystyle\sqrt{\frac{s^2}{n_1} + \displaystyle\frac{s^2}{n_2}}} \sim t_\nu, \]
onde
\[ s^2 = \frac{(n_1 - 1) \cdot s_1^2 + (n_2 - 1) \cdot s_2^2} {n_1 + n_2 - 2} \] e \[ \nu = n_1 + n_2 - 2 \] são os graus de liberdade.
## Exemplo adaptado de Manly (1997)
## Comparação do comprimento da mandíbula de chacais machos e fêmeas
set.seed(2)
machos <- c(120, 107, 110, 116, 114, 111, 113, 117, 114, 112)
## Simula diferença para as femeas
femeas <- rnorm(10, mean(machos) - 2, sd = sd(machos))
da <- data.frame(comp = c(machos, femeas),
sexo = c(rep("M", 10), rep("F", 10)))
densityplot(~comp, groups = sexo, data = da, auto.key = TRUE)
## Média por sexo
tapply(da$comp, da$sexo, mean)
# F M
# 112.185 113.400
## Diferença das médias
diff(tapply(da$comp, da$sexo, mean))
# M
# 1.214975
## Teste F para igualdade de variâncias
var.test(x = machos, y = femeas)
#
# F test to compare two variances
#
# data: machos and femeas
# F = 1.0307, num df = 9, denom df = 9, p-value = 0.9648
# alternative hypothesis: true ratio of variances is not equal to 1
# 95 percent confidence interval:
# 0.2560149 4.1496511
# sample estimates:
# ratio of variances
# 1.030715
## Média de cada sexo
(m1 <- mean(machos))
# [1] 113.4
(m2 <- mean(femeas))
# [1] 112.185
## Diferença entre as médias amostrais
(med.amostral <- m1 - m2)
# [1] 1.214975
## Calcula o desvio padrão ponderado
n1 <- length(machos)
v1 <- var(machos)
n2 <- length(femeas)
v2 <- var(femeas)
(s.pond <- sqrt(((n1 - 1) * v1 + (n2 - 1) * v2)/(n1 + n2 - 2)))
# [1] 3.690024
## Teste de hipótese para
## H0: mu1 = mu2
## Ha: mu1 > mu2
mu0 <- 0
t.test(x = machos, y = femeas, alternative = "greater",
var.equal = TRUE, mu = mu0)
#
# Two Sample t-test
#
# data: machos and femeas
# t = 0.73625, df = 18, p-value = 0.2355
# alternative hypothesis: true difference in means is greater than 0
# 95 percent confidence interval:
# -1.646627 Inf
# sample estimates:
# mean of x mean of y
# 113.400 112.185
## Estatística de teste
(tcalc <- (m1 - m2)/(s.pond * sqrt(1/n1 + 1/n2)))
# [1] 0.7362465
## Valor crítico
(tcrit <- qt(.025, df = n1 + n2 - 2, lower.tail = FALSE))
# [1] 2.100922
## p-valor
pt(tcalc, df = n1 + n2 - 2, lower.tail = FALSE)
# [1] 0.2355338
## Teste por simulação de Monte Carlo
N <- 1e4
## Simula direto da distribuição amostral
am <- replicate(N, rnorm(1, mu0, s.pond * sqrt(1/n1 + 1/n2)))
Para simular direto dos dados, partimos da hipótese nula de que as duas médias são iguais, e as variâncias são as mesmas. Nesse caso, podemos simular assumindo que a média é igual à média dos machos, e da mesma forma, podemos assumir que a média da população é igual a média das fêmeas.
## Usando media dos machos: obtém a diferença das médias entre machos e
## fêmeas, assumindo que a média na população é igual a média dos machos
am.machos <- replicate(
N, diff(tapply(rnorm(20, m1, s.pond), da$sexo, mean))
)
## Usando media das femeas: obtém a diferença das médias entre machos e
## fêmeas, assumindo que a média na população é igual a média dos fêmeas
am.femeas <- replicate(
N, diff(tapply(rnorm(20, m2, s.pond), da$sexo, mean))
)
## Visualização
par(mfrow = c(1, 3))
hist(am, main = "Distribuição amostral")
abline(v = med.amostral, col = 2)
hist(am.machos, main = "Média de amostras (machos)")
abline(v = med.amostral, col = 2)
hist(am.femeas, main = "Média de amostras (fêmeas)")
abline(v = med.amostral, col = 2)
par(mfrow = c(1, 1))
## p-valor empírico
sum(am >= med.amostral)/N
# [1] 0.2342
sum(am.machos >= med.amostral)/N
# [1] 0.225
sum(am.femeas >= med.amostral)/N
# [1] 0.2361
## Padroniza a distribuição para t(n1 + n2 - 2)
tpad <- (am - mu0)/(s.pond * sqrt(1/n1 + 1/n2))
hist(tpad)
abline(v = tcalc, col = 2)
## p-valor
sum(tpad >= tcalc)/N
# [1] 0.2342
Aqui usamos os dados originais de Manly (2006).
## Exemplo original do Manly (1997)
machos <- c(120, 107, 110, 116, 114, 111, 113, 117, 114, 112)
femeas <- c(110, 111, 107, 108, 110, 105, 107, 106, 111, 111)
da <- data.frame(comp = c(machos, femeas),
sexo = c(rep("M", 10), rep("F", 10)))
densityplot(~comp, groups = sexo, data = da, auto.key = TRUE)
## Média por sexo
tapply(da$comp, da$sexo, mean)
# F M
# 108.6 113.4
## Diferença das médias
diff(tapply(da$comp, da$sexo, mean))
# M
# 4.8
## Média de cada sexo
(m1 <- mean(machos))
# [1] 113.4
(m2 <- mean(femeas))
# [1] 108.6
## Diferença entre as médias amostrais
(med.amostral <- m1 - m2)
# [1] 4.8
## Calcula o desvio padrão ponderado
n1 <- length(machos)
v1 <- var(machos)
n2 <- length(femeas)
v2 <- var(femeas)
(s.pond <- sqrt(((n1 - 1) * v1 + (n2 - 1) * v2)/(n1 + n2 - 2)))
# [1] 3.080404
## Teste F para igualdade de variâncias
var.test(x = machos, y = femeas)
#
# F test to compare two variances
#
# data: machos and femeas
# F = 2.681, num df = 9, denom df = 9, p-value = 0.1579
# alternative hypothesis: true ratio of variances is not equal to 1
# 95 percent confidence interval:
# 0.665931 10.793829
# sample estimates:
# ratio of variances
# 2.681034
## Teste de hipótese para
## H0: mu1 = mu2
## Ha: mu1 > mu2
mu0 <- 0
t.test(x = machos, y = femeas, alternative = "greater",
var.equal = TRUE, mu = mu0)
#
# Two Sample t-test
#
# data: machos and femeas
# t = 3.4843, df = 18, p-value = 0.001324
# alternative hypothesis: true difference in means is greater than 0
# 95 percent confidence interval:
# 2.411156 Inf
# sample estimates:
# mean of x mean of y
# 113.4 108.6
## Estatística de teste
(tcalc <- (m1 - m2)/(s.pond * sqrt(1/n1 + 1/n2)))
# [1] 3.484324
## Valor crítico
(tcrit <- qt(.025, df = n1 + n2 - 2, lower.tail = FALSE))
# [1] 2.100922
## p-valor
pt(tcalc, df = n1 + n2 - 2, lower.tail = FALSE)
# [1] 0.001323634
## Teste por simulação de Monte Carlo
N <- 1e5 # NOTE o aumento no número de simulações
## Simula direto da distribuição amostral
library(future.apply) # para um replicate mais eficiente (em paralelo)
# Loading required package: future
plan(multicore, workers = 4)
am <- future_replicate(N, rnorm(1, mu0, s.pond * sqrt(1/n1 + 1/n2)))
## Usando media dos machos
am.machos <- future_replicate(
N, diff(tapply(rnorm(20, m1, s.pond), da$sexo, mean))
)
## Usando media das femeas
am.femeas <- future_replicate(
N, diff(tapply(rnorm(20, m2, s.pond), da$sexo, mean))
)
## Visualização
par(mfrow = c(1, 3))
hist(am, main = "Distribuição amostral")
abline(v = med.amostral, col = 2)
hist(am.machos, main = "Média de amostras (machos)")
abline(v = med.amostral, col = 2)
hist(am.femeas, main = "Média de amostras (fêmeas)")
abline(v = med.amostral, col = 2)
par(mfrow = c(1, 1))
## p-valor empírico
format(sum(am >= med.amostral)/N, digits = 10, scientific = FALSE)
# [1] "0.00023"
format(sum(am.machos >= med.amostral)/N, digits = 10, scientific = FALSE)
# [1] "0.00019"
format(sum(am.femeas >= med.amostral)/N, digits = 10, scientific = FALSE)
# [1] "0.00019"
## Padroniza a distribuição para t(n1 + n2 - 2)
tpad <- (am - mu0)/(s.pond * sqrt(1/n1 + 1/n2))
hist(tpad)
abline(v = tcalc, col = 2)
## p-valor
sum(tpad >= tcalc)/N
# [1] 0.00023
Isso mostra que a simulação pode não conseguir representar casos extremos, embora a conclusão não seria alterada.
Se \(Y \sim \text{Ber}(p)\), então a proporção amostral \[ \hat{p} = \frac{1}{n} \sum_{i=1}^{n} y_i \] é a melhor estimativa para a proporção populacional \(p\).
Já vimos que, quando ambas condições são satisfeitas,
a distribuição amostral de \(\hat{p}\) pode ser aproximada (pelo TLC) por \[ \hat{p} \overset{\text{aprox}}{\sim} \text{N}\left(p, \frac{p(1 - p)}{n} \right). \]
Podemos usar a distribuição Normal como aproximação da Binomial e, portanto, usamos a estatística de teste \[ z = \frac{\hat{p} - p_0}{\sqrt{\frac{p_0 (1 - p_0)}{n}}} \sim \text{N}(0, 1) \] em que \(p_0\) é o valor de proporção de teste na hipótese nula.
Suponha que em uma amostra de \(n=250\) itens, 32 apresentaram algum tipo de defeito. Deseja-se testas as hipóteses
\[ \begin{align*} H_0 &: p = 0.15\\ H_a &: p < 0.15 \end{align*} \]
## Dados: y = 32 sucessos em n = 250 tentativas
n <- 250
y <- 32
## Proporção amostral
(theta.hat <- y/n)
# [1] 0.128
## Teste de hipótese
## H0: theta = 0.15
## Ha: theta < 0.15
theta0 <- 0.15
## A aproximação pela normal funciona bem quando
## np >= 5 e n(1-p) >=5
n * theta.hat
# [1] 32
n * (1 - theta.hat)
# [1] 218
## Estatistica de teste (aproximação pela normal)
(zcalc <- (theta.hat - theta0)/sqrt((theta0 * (1 - theta0))/n))
# [1] -0.9741764
## Com alpha = 0.05, o valor cítico é
(zcrit <- qnorm(.05))
# [1] -1.644854
## p-valor
pnorm(zcalc)
# [1] 0.1649845
pbinom(y, size = n, prob = theta0) # teste exato
# [1] 0.1890489
binom.test(x = 32, n = 250, p = 0.15, alternative = "less")
#
# Exact binomial test
#
# data: 32 and 250
# number of successes = 32, number of trials = 250, p-value = 0.189
# alternative hypothesis: true probability of success is less than 0.15
# 95 percent confidence interval:
# 0.0000000 0.1680901
# sample estimates:
# probability of success
# 0.128
## Aproximação (com correção de continuidade)
prop.test(x = 32, n = 250, p = 0.15, alternative = "less")
#
# 1-sample proportions test with continuity correction
#
# data: 32 out of 250, null probability 0.15
# X-squared = 0.78431, df = 1, p-value = 0.1879
# alternative hypothesis: true p is less than 0.15
# 95 percent confidence interval:
# 0.0000000 0.1689838
# sample estimates:
# p
# 0.128
## Aproximação (SEM correção de continuidade): similar à aproximação
## pela Normal
prop.test(x = 32, n = 250, p = 0.15, alternative = "less",
correct = FALSE)
#
# 1-sample proportions test without continuity correction
#
# data: 32 out of 250, null probability 0.15
# X-squared = 0.94902, df = 1, p-value = 0.165
# alternative hypothesis: true p is less than 0.15
# 95 percent confidence interval:
# 0.0000000 0.1667801
# sample estimates:
# p
# 0.128
## Teste por simulação de Monte Carlo
N <- 1e4
## Simula direto da distribuição amostral da proporção (aproximada pela
## normal)
am <- rnorm(N, mean = theta0, sd = sqrt((theta0 * (1 - theta0))/n))
## Simula direto da população, sob theta0
am2 <- rbinom(N, size = n, prob = theta0)
## Calcula a proporção amostral
am2 <- am2/n
## Visualização
par(mfrow = c(1, 2))
hist(am, main = "Distribuição amostral", freq = FALSE)
## Aproximação pela normal
curve(dnorm(x, theta0, sqrt((theta0 * (1 - theta0))/n)),
from = 0, to = .3, add = TRUE, col = 2)
abline(v = theta.hat, col = 2)
hist(am2, main = "Proporções de amostras", freq = FALSE)
## Aproximação pela normal
curve(dnorm(x, theta0, sqrt((theta0 * (1 - theta0))/n)),
from = 0, to = .3, add = TRUE, col = 2)
abline(v = theta.hat, col = 2)
par(mfrow = c(1, 1))
## p-valor empírico
sum(am <= theta.hat)/N
# [1] 0.1671
sum(am2 <= theta.hat)/N # mais próximo ao teste exato
# [1] 0.1871
## Padroniza a distribuição para N(0,1)
zpad <- (am - theta0)/sqrt((theta0 * (1 - theta0))/n)
hist(zpad, freq = FALSE)
curve(dnorm, -3, 3, add = TRUE, col = 2)
abline(v = zcalc, col = 2)
## p-valor empírico
sum(zpad <= zcalc)/N
# [1] 0.1671
## Obtém o valor da estatística t do teste de Student para a média de
## uma população. Assume que a distribuição de X seja normal.
simula0 <- function(n, mu0, sig0){
X <- rnorm(n, mean=mu0, sd=sig0)
T <- (mean(X)-mu0)/(sqrt(var(X)/n))
return(T)
}
simula0(n=10, mu0=0, sig0=1)
# [1] 0.1239222
t <- replicate(10000, simula0(n=10, mu0=0, sig0=1))
## Comparação por distribuições acumuladas.
par(mfrow = c(1, 2))
plot(ecdf(t), xlim=c(-5, 5))
curve(pt(x, df=10-1), add=TRUE, col=2)
curve(pnorm(x), add=TRUE, col=3)
## Comparação pela densidade.
plot(density(t), xlim=c(-5, 5))
curve(dt(x, df=10-1), add=TRUE, col=2)
curve(dnorm(x), add=TRUE, col=3)
par(mfrow = c(1, 1))
## p-valor da simulação.
sum(abs(t) >= qt(0.975, df=10-1))/length(t)
# [1] 0.0482
sum(abs(t) >= qt(0.95, df=10-1))/length(t)
# [1] 0.0989
## Distribuição da estatística com afastamento dos pressupostos sobre a
## distribuição da população (X) que não tem distribuição normal.
simula1 <- function(n, mu0=1){
X <- rexp(n, 1)
T <- (mean(X)-mu0)/(sqrt(var(X)/n))
return(T)
}
## Tamanho da amostra da exponencial
n <- 5
t <- replicate(10000, simula1(n=n))
plot(ecdf(t), xlim=c(-5, 5))
curve(pt(x, df=n-1), add=TRUE, col=2)
curve(pnorm(x), add=TRUE, col=3)
## p-valor real vs nível se significância nominal.
sum(abs(t) >= qt(0.975, df=n-1))/length(t)
# [1] 0.1131
sum(abs(t) >= qt(0.95, df=n-1))/length(t)
# [1] 0.1646
## O que aconteceria se o tamanho da amostra da exponanecial fosse
## maior?
n <- 50
t <- replicate(10000, simula1(n=n))
plot(ecdf(t), xlim=c(-5, 5))
curve(pt(x, df=n-1), add=TRUE, col=2)
curve(pnorm(x), add=TRUE, col=3)
## p-valor real vs nível se significância nominal.
sum(abs(t) >= qt(0.975, df=n-1))/length(t)
# [1] 0.0631
sum(abs(t) >= qt(0.95, df=n-1))/length(t)
# [1] 0.1115
Este conteúdo está disponível por meio da Licença Creative Commons 4.0