Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior Próxima revisão Ambos lados da revisão seguinte | ||
02_tutoriais:tutorial7:start [2020/10/01 16:39] adalardo [Estimando os parâmetros] |
02_tutoriais:tutorial7:start [2020/10/02 15:59] rafael.melhem |
||
---|---|---|---|
Linha 20: | Linha 20: | ||
</WRAP> | </WRAP> | ||
- | No quadro abaixo estão listados alguns dos testes clássicos frequentistas. Estes testes foram criados para diferentes naturezas de variáveis respostas e preditoras. Você já refletiu sobre a natureza das variáveis do seu estudo? Esse é um passo importante na tomada de decisão da análise adequada, assim como seu acoplamento com a hipótese do trabalho é fundamental! | + | No quadro abaixo estão listados alguns dos testes clássicos frequentistas. Estes testes foram criados para diferentes naturezas de variáveis respostas e preditoras. Você já refletiu sobre a natureza das variáveis do seu estudo? Esse é um passo importante na tomada de decisão da análise adequada, assim como seu acoplamento com a hipótese de trabalho é fundamental! |
Linha 47: | Linha 47: | ||
- | Parece complicado, mas é simples gerar dados aleatórios com essa estrutura do R. Vamos definir primeiro qual são os parâmetros que estão na nossa população, ou seja qual o valor de $\alpha$ e $\beta$ da relação entre ''y'' e ''x'' na população. Além disso, vamos definir também qual a variabilidade associada a essa relação, o nosso $\epsilon$. | + | Parece complicado, mas é simples gerar dados aleatórios com essa estrutura do R. Vamos definir primeiro quais são os parâmetros que estão na nossa população, ou seja qual o valor de $\alpha$ e $\beta$ da relação entre ''y'' e ''x'' na população. Além disso, vamos definir também qual a variabilidade associada a essa relação, o nosso $\epsilon$. |
$$ y = 5.3 + 0.12 x + N(0, 5) $$ | $$ y = 5.3 + 0.12 x + N(0, 5) $$ | ||
- | Antes de gerar os dados aleatórios, vamos utilizar uma ferramenta que define a raiz da semente aleatória que o R irá usar. Com isso, apesar dos dados gerados serem proveniente de uma amostra aleatória, todos que utilizarem a mesma semente terão os mesmo valores amostrados. Em seguida vamos criar uma sequência para representar a variável preditora ''x'' e a partir da relação acima, calcular o ''y0'', que são os valores associados a essa relação determinística com ''x'' e também criar um vetor ''res'' que define a variabilidade do nossos dados: | + | Antes de gerar os dados aleatórios, vamos utilizar uma ferramenta que define a raiz da semente aleatória que o R irá usar. Com isso, apesar dos dados gerados serem provenientes de uma amostra aleatória, todos que utilizarem a mesma semente terão os mesmo valores amostrados. Em seguida vamos criar uma sequência para representar a variável preditora ''x'' e, a partir da relação acima, calcular o ''y0'', que são os valores associados a essa relação determinística com ''x'' e também criar um vetor ''res'' que define a variabilidade do nossos dados: |
<code rsplus> | <code rsplus> | ||
set.seed(1) | set.seed(1) | ||
- | x <- round(seq(12, 220, len = 15), 1) | + | x1 <- round(seq(12, 220, len = 15), 1) |
- | y0 <- 10.3 + 0.12 * x | + | y0 <- 10.3 + 0.12 * x1 |
- | res <- rnorm(length(x), 0, 5) | + | res <- rnorm(length(x1), 0, 5) |
y1 <- y0 + res | y1 <- y0 + res | ||
+ | xm <- mean(x1) | ||
+ | ym <- mean(y1) | ||
</code> | </code> | ||
Linha 67: | Linha 69: | ||
<code rsplus> | <code rsplus> | ||
par(mar = c(4, 4, 2, 2), cex.lab = 1.5, cex.axis = 1.5, las = 1, bty = "n") | par(mar = c(4, 4, 2, 2), cex.lab = 1.5, cex.axis = 1.5, las = 1, bty = "n") | ||
- | plot(x1, y1, type = "n", axes = FALSE, ann = FALSE, , ylim = range(y1), xlim = range(x1)) | + | plot(x1, y1, type = "n", axes = FALSE, ann = FALSE, ylim = range(y1), xlim = range(x1)) |
rect(par()$usr[1], par()$usr[3], par()$usr[2], par()$usr[4], col = rgb(0, 0, 0, 0.15)) | rect(par()$usr[1], par()$usr[3], par()$usr[2], par()$usr[4], col = rgb(0, 0, 0, 0.15)) | ||
axis(1) | axis(1) | ||
Linha 74: | Linha 76: | ||
mtext(text = "Variável resposta (y1)", side = 2, line = 3, cex = 1.5, las =0) | mtext(text = "Variável resposta (y1)", side = 2, line = 3, cex = 1.5, las =0) | ||
cores <- c(rgb(1, 0, 0, 0.3), rgb(0, 0, 1, 0.3)) | cores <- c(rgb(1, 0, 0, 0.3), rgb(0, 0, 1, 0.3)) | ||
- | points(x, y0, pch = 16, cex = 0.8, col = cores[1] ) | + | points(x1, y0, pch = 16, cex = 0.8, col = cores[1] ) |
- | points(x, y1, pch = 19, col = cores[2]) | + | points(x1, y1, pch = 19, col = cores[2]) |
legend("bottomright", legend = c("y0 = 10.3 + 0.12 x1", "y1 = y0 + N(0, 5)"), bty = "n", col = cores, pch = 19) | legend("bottomright", legend = c("y0 = 10.3 + 0.12 x1", "y1 = y0 + N(0, 5)"), bty = "n", col = cores, pch = 19) | ||
</code> | </code> | ||
Linha 121: | Linha 123: | ||
Agora, precisamos encontrar entre as muitas possibilidades de inclinação, aquela que <wrap em>minimiza</wrap> o valor de soma dos desvios quadráticos. | Agora, precisamos encontrar entre as muitas possibilidades de inclinação, aquela que <wrap em>minimiza</wrap> o valor de soma dos desvios quadráticos. | ||
- | Por sorte já sabemos fazer iterações e gráficos no R! Vamos utilizar o gráfico anterior como base e fazer muitos gráficos com diferentes inclinações e ao mesmo tempo calcular a soma dos desvios ao quadrado. | + | Por sorte já sabemos fazer iterações e gráficos no R! Vamos utilizar o gráfico anterior como base e fazer muitos gráficos com diferentes inclinações e ao mesmo tempo calcular a soma dos desvios ao quadrado. Antes vamos calcular os valores para diferentes inclinações: |
+ | |||
+ | <code rsplus> | ||
+ | bsim <- seq(-0.05, 0.29, 0.005) | ||
+ | asim <- ym - bsim * xm | ||
+ | nsim <- length(bsim) | ||
+ | ML <- rep(NA, nsim) | ||
+ | MQ <- rep(NA, nsim) | ||
+ | for (i in 1:nsim) | ||
+ | { | ||
+ | spred <- asim[i] + bsim[i] * x1 | ||
+ | MQ[i] <- sum((spred - y1)^2) | ||
+ | ML[i] <- prod(dnorm(y1, mean = spred, sd = 5, log = FALSE)) | ||
+ | } | ||
+ | estima <- data.frame(alfa = asim, beta = bsim, ML = ML, MQ = MQ, logML = log10(ML)) | ||
+ | </code> | ||
+ | |||
+ | Acima, criamos uma sequencia de valores para representar diferentes inclinações ''bsim'', estimamos o intercepto, ''asim'', a partir dessas inclinações. Em seguinda utilizamos esses coeficientes para calcular o valor de soma quadrática, ''MQ'', e verossimilhança, ''ML''. | ||
+ | |||
Abaixo um gráfico animado. A única função que ainda não conhecemos é ''Sys.sleep''((Consulte a documentação!)), que é uma forma de fazer o R dar um cochilada durante os ciclos, sem isso não seria possível ver os quadros. | Abaixo um gráfico animado. A única função que ainda não conhecemos é ''Sys.sleep''((Consulte a documentação!)), que é uma forma de fazer o R dar um cochilada durante os ciclos, sem isso não seria possível ver os quadros. | ||
Linha 291: | Linha 312: | ||
*1. Cria valores aleatórios de uma normal com média zero e desvio padrão igual a 5; | *1. Cria valores aleatórios de uma normal com média zero e desvio padrão igual a 5; | ||
- | *2. Somo esses valores ao valor ''y0 '', proveniente da relação ''y ~ x'' da população e cria os dados ''ySim''; | + | *2. Soma esses valores ao valor ''y0 '', proveniente da relação ''y ~ x'' da população e cria os dados ''ySim''; |
*3. Cria o modelo com o ''ySim ~ x1''; | *3. Cria o modelo com o ''ySim ~ x1''; | ||
*4. Guarda os coeficientes do modelo em ''cSim''; | *4. Guarda os coeficientes do modelo em ''cSim''; |