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 | ||
02_tutoriais:tutorial7:start [2020/10/01 16:39] adalardo [Estimando os parâmetros] |
02_tutoriais:tutorial7:start [2024/09/09 12:02] (atual) |
||
---|---|---|---|
Linha 7: | Linha 7: | ||
A primeira parte desse tutorial é baseado no [[http://labtrop.ib.usp.br/doku.php?id=cursos:planeco:roteiro:08-lm_rcmdr| tutoria de modelos lineares da disciplina Princípios de Planejamento e Análise de Dados]], inclusive as vídeoaulas. Aqui iremos focar no código que estava subjacente ao tutorial. | A primeira parte desse tutorial é baseado no [[http://labtrop.ib.usp.br/doku.php?id=cursos:planeco:roteiro:08-lm_rcmdr| tutoria de modelos lineares da disciplina Princípios de Planejamento e Análise de Dados]], inclusive as vídeoaulas. Aqui iremos focar no código que estava subjacente ao tutorial. | ||
+ | <WRAP center round tip 60%> | ||
+ | A videoaula gravada no google meet no dia 02 de outubro de 2020 está ao final do tutorial. Dê preferência para as videoaulas do curso de **Principios de Planejamento e Análise de Dados** que estão colocadas ao longo do tutorial. Eles tratam o tema de modelos lineares de forma mais sucinta e tiveram alguma edição. Desconsiderem nesses vídeos as referências à disciplina. | ||
+ | </WRAP> | ||
+ | |||
===== Modelos Lineares ===== | ===== Modelos Lineares ===== | ||
Linha 12: | Linha 16: | ||
Os modelos lineares são uma generalização dos testes de hipótese clássicos mais simples. Uma regressão linear, por exemplo, só pode ser aplicada para dados em que tanto a variável preditora quanto a resposta são contínuas, enquanto uma análise de variância é utilizada quando a variável preditora é categórica. Os modelos lineares não têm essa limitação, podemos usar variáveis contínuas ou categóricas indistintamente. | Os modelos lineares são uma generalização dos testes de hipótese clássicos mais simples. Uma regressão linear, por exemplo, só pode ser aplicada para dados em que tanto a variável preditora quanto a resposta são contínuas, enquanto uma análise de variância é utilizada quando a variável preditora é categórica. Os modelos lineares não têm essa limitação, podemos usar variáveis contínuas ou categóricas indistintamente. | ||
- | <WRAP center round box 40%> | + | <WRAP center round box 80%> |
__**Videoaula Modelo Linear I**__ | __**Videoaula Modelo Linear I**__ | ||
O vídeo é proveniente de outra disciplina, desconsidere qualquer referência a ela. | O vídeo é proveniente de outra disciplina, desconsidere qualquer referência a ela. | ||
+ | <WRAP center round tip 80%> | ||
{{youtube>b4VgLr6loGE}} | {{youtube>b4VgLr6loGE}} | ||
+ | |||
+ | </WRAP> | ||
</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 54: | ||
- | 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 = 10.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 76: | ||
<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 83: | ||
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 130: | ||
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 179: | Linha 207: | ||
Nossas estimativas parecem muito boas! | Nossas estimativas parecem muito boas! | ||
- | Não precisamos fazer a simulação para fazer estimativas. A função ''lm'' faz isso para por nós. | + | Quando construímos modelos, não precisamos fazer a simulação para fazer estimativas, a função ''lm'' faz isso para nós. |
===== Modelos Lineares ===== | ===== Modelos Lineares ===== | ||
Linha 192: | Linha 220: | ||
lmxy01 <- lm(y1 ~ x1) | lmxy01 <- lm(y1 ~ x1) | ||
class(lmxy01) | class(lmxy01) | ||
+ | str(lmxy01) | ||
</code> | </code> | ||
| | ||
- | As funções extratoras como retiram do objeto do objeto de modelo (classe ''lm'') a informações solicitada. Vamos avaliar as principais informações que podem ser extraídas de um modelo. | + | O objeto de modelo é bastante complexo. Para acessar as informações utilizamos as funções extratoras que retiram do objeto as informações solicitadas, por exemplo, a classe em ''class(lmxy1)''. Vamos avaliar as principais informações que podem ser extraídas de um objeto de modelo da classe ''lm''. |
Linha 291: | Linha 320: | ||
*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''; | ||
Linha 332: | Linha 361: | ||
- | Apesar de nossa primeira estimativa dos parâmetros ter sido muito boa, poderíamos ter feito uma amostra com valores mais diferentes. Não é depressível a chance de nossa amostra gerar valores de intercepto menores que ''8'' ou de inclinação maiores que ''0.14''. Essa imprecisão associada a estimativa dos parâmetros é o <wrap em>erro padrão</wrap>. O erro padrão é o desvio padrão dessa distribuição de valores das estimativas se pudéssemos refazer a amostra muitas vezes na população, como acabamos de fazer com a nossa simulação! | + | Apesar de nossa primeira estimativa dos parâmetros ter sido muito boa, poderíamos ter feito uma amostra com valores mais diferentes. Não é desprezível a chance de nossa amostra gerar valores de intercepto menores que ''8'' ou de inclinação maiores que ''0.14''. Essa imprecisão associada a estimativa dos parâmetros é o <wrap em>erro padrão</wrap>. O erro padrão é o desvio padrão dessa distribuição de valores das estimativas se pudéssemos refazer a amostra muitas vezes na população, como acabamos de fazer com a nossa simulação! |
Vamos calcular o desvio padrão dos múltiplos experimentos: | Vamos calcular o desvio padrão dos múltiplos experimentos: | ||
Linha 405: | Linha 434: | ||
===== Tabela de Anova de uma Regressão ===== | ===== Tabela de Anova de uma Regressão ===== | ||
- | <WRAP center round box 60%> | + | <WRAP center round box 100%> |
+ | <WRAP center round tip 80%> | ||
+ | Video na disciplina de Princípios de Planejamento e Análise de Dados. Desconsidere qualquer referência à disciplina. O tema tratado é a partição de variação dos dados. | ||
{{youtube>C4urUFRGDvo}} | {{youtube>C4urUFRGDvo}} | ||
+ | |||
+ | </WRAP> | ||
</WRAP> | </WRAP> | ||
Linha 494: | Linha 527: | ||
==== R² Ajustado ==== | ==== R² Ajustado ==== | ||
- | O R² ajustado é um ajuste relacionado a uma maior precisão relativa ao R² da população. Existem vários tipos de ajustes, no caso do ''summary'' de um objeto ''lm'' a formula é: | + | O R² ajustado está relacionado a uma maior precisão na estimativa do R², que depende do tamanho amostral. Existem vários tipos de ajustes, no caso do ''summary'' de um objeto ''lm'' a formula é: |
$$R^{2}_{adj} = 1 - (1- R^2) \frac{n - 1}{n - p - 1}$$ | $$R^{2}_{adj} = 1 - (1- R^2) \frac{n - 1}{n - p - 1}$$ | ||
Linha 503: | Linha 536: | ||
</code> | </code> | ||
- | Com os R², R² ajustado e o teste da partição da variação da tabela da função ''anova'', fechamos o ''summary'' do modelo linear simples. Novamente, reconheça esses valores e interprete os valores: | + | Com os R², R² ajustado e o teste da partição da variação da tabela da função ''anova'', fechamos o ''summary'' do modelo linear simples. Novamente, reconheça e interprete os valores: |
<code rsplus> | <code rsplus> | ||
Linha 828: | Linha 861: | ||
</WRAP> | </WRAP> | ||
+ | <WRAP center round box 100%> | ||
+ | Aula síncrona da disciplina no google meet, gravada em 01 de outubro de 2020. Nela abordo a construção e interpretação de modelos lineares simples no ambiente de programação R, focando no resumo (''summary'') com as principais informações do modelo. Uma bom entendimento do resumo do modelo é essencial para interpretação correta do resultado. Veja curso completo em: | ||
+ | http://ecor.ib.usp.br | ||
+ | <WRAP center round tip 80%> | ||
+ | {{youtube>VRrJ487k5qY}} | ||
+ | </WRAP> | ||
+ | |||
+ | </WRAP> | ||