Ferramentas do usuário

Ferramentas do site


02_tutoriais:tutorial7:start

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
02_tutoriais:tutorial7:start [2020/10/01 16:26]
adalardo [Variável Indicadora]
02_tutoriais:tutorial7:start [2023/09/11 15:58] (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 = 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''​ ea 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)
-<- 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 84: Linha 93:
  
 ==== Estimando os parâmetros ==== ==== Estimando os parâmetros ====
 +
 +{{:​02_tutoriais:​tutorial7:​convAxisLeg.png?​600 ​ |}}
  
 Os valores em ''​x1''​ e ''​y1'',​ a partir desse ponto, são os dados, provenientes de uma amostra aleatória de ''​y1''​ e de sua relação determinística com ''​x1''​. Vamos esquecer que geramos os dados. Vamos partir do ponto que temos os dados coletados e precisamos fazer as inferências relacionadas à relação ''​y1 ~ x1''​. ​ Os valores em ''​x1''​ e ''​y1'',​ a partir desse ponto, são os dados, provenientes de uma amostra aleatória de ''​y1''​ e de sua relação determinística com ''​x1''​. Vamos esquecer que geramos os dados. Vamos partir do ponto que temos os dados coletados e precisamos fazer as inferências relacionadas à relação ''​y1 ~ x1''​. ​
Linha 119: 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 177: 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 190: 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 289: 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 330: 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 403: 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 492: 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 , 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 501: 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 822: Linha 857:
 </​WRAP>​ </​WRAP>​
  
-São muitos conceitos não triviais. Em um primeiro momento busque ​compreender, mesmo que ainda pareça nebuloso.+São muitos conceitos não triviais. Em um primeiro momentobusque ​alguma compreensão, mesmo que ainda pareça nebuloso.
  
 </​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>​
  
  
02_tutoriais/tutorial7/start.1601580376.txt.gz · Última modificação: 2020/10/01 16:26 por adalardo