Início > regressão > Ajuste de muitos modelos de regressão linear

Ajuste de muitos modelos de regressão linear

Pessoas que estão migrando de outro aplicativo para o R normalmente vivem perguntando “o R faz isso?, o R faz aquilo?…”. A resposta é “Sim, o R faz!”. Circula entre usuários o seguinte ditado: “não se pergunta o que o R faz, e sim como ele faz”.

Acontece que o R não é um software específico de ajuste de modelos de regressão, análise multivariada, análise de experimentos ou qualquer outra técnica. O R é geral. Os pacotes do R, por sua vez, são capazes de concentrar funções específicas. Um aplicativo que só faz ajuste de modelos de regressão tem espaço de sobra para incluir diversas opções, contem lista modelos para ajustar aos dados, enfim, mas tudo isso porque é destinado apenas para esse fim.

Por outro lado, no R é possível desenvolver procedimentos para qualquer tipo de tarefa. Se você quer ajustar uma lista de modelos e depois escolher o de maior R², ótimo! No você também consegue isso. Veja no CMR abaixo.

# gera dados
da <- data.frame(x=runif(100), z=5*rpois(100, lambda=7), w=runif(100, 50, 100))
da$y <- with(da, 12+0.1*x+0.05*z+0.34*w+0.2*sqrt(z)+0.1*x*w)+rnorm(100,0,0.1)
 
# vetor com as fórmulas específicando diferentes modelos lineares
form <- c(mod1=y~x, mod2=y~x+z, mod3=y~x+I(x^2), mod4=y~x+z+w)
 
# ajuste dos modelos
ajustes <- lapply(form, function(f){ m0 <- lm(f, data=da); m0 })
 
lapply(ajustes, summary) # quadro geral de estimativas e qualidade
lapply(ajustes, anova)   # quadro de anova sequencial
lapply(ajustes, coef)    # vetor de estimativas
sapply(ajustes, function(a){ summary(a)$r.squared})     # R²
sapply(ajustes, function(a){ summary(a)$adj.r.squared}) # R² ajustado
sapply(ajustes, function(a){ summary(a)$sigma})         # QMR
sapply(ajustes, deviance)                               # SQR
sapply(ajustes, df.residual)                            # GLR
lapply(ajustes, function(a){ summary(a)$coeff})         # tabela de estimativas
do.call(rbind, lapply(ajustes, function(a){ summary(a)$coeff})) # junta das tabelas
sapply(ajustes, fitted)    # valores ajustados
sapply(ajustes, residuals) # resíduos da análise
sapply(ajustes, vcov)      # matriz de covariância das estimativas
apply(sapply(ajustes, residuals), 2, shapiro.test) # normalidade dos resíduos

Sempre faça a avaliação das pressuposições do modelo antes de aplicar inferências. A escolha de modelo apenas pelo valor do R² não é aconselhada.

Anúncios
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: