SELEÇÃO DE VARIÁVEIS objetivo incluir tantas covariáveis quantas forem necessárias para auxiliar na predição do modelo? (1) buscar o menor subconjunto de covariáveis capaz de explicar adequadamente a variação de Y? (2) (1) incluir um grande número de covariáveis gera sérios problemas como interpretação complexa dos resultados (2) princípio de parcimônia
As vezes é possível fazer uma TRIAGEM INICIAL, eliminando algumas variáveis antes da análise de regressão, se: não são fundamentais para o estudo são afetadas por grandes erros de medida são redundantes com outra variável * mesmo depois da triagem inicial, poderá ainda ser relevante testar a significância do efeito isolado de cada covariável, uma a uma se o efeito não for significativo (p-valor > 0,30) no MRLS, a variável pode ser desconsiderada para o MRLM
Por que fazer SELEÇÃO DE VARIÁVEIS? para reduzir ainda mais o número de covariáveis no modelo, excluindo aquelas com pequena contribuição para o MRLM Como medir contribuição? há vários tipos de medidas de contribuição, denominadas: Critérios para seleção de variáveis
Critérios para seleção de variáveis PARTE I Comparar MRLM s com p covariáveis (p = 1, 2,, k) número de covariáveis disponíveis objetivo escolher o modelo mais adequado entre todos os modelos com p covariáveis Portanto, de acordo com o critério de seleção haverá: o modelo mais adequado com 1 covariável o modelo mais adequado com 2 covariáveis o modelo mais adequado com (k - 1) covariáveis só há um único modelo com k covariáveis
1) Coeficiente de determinação múltiplo para um modelo com p covariáveis 2 R m( p) = SQReg( p) SQT SQReg ( p ) : soma de quadrados da regressão para modelo com p covariáveis entre os modelos com p covariáveis, preferir modelo com maior 2 R m( p) Alternativamente, SQRes do modelo com p covariáveis 2 R m( p) SQRes( p) = 1 SQT
2) Coeficiente de determinação ajustado para um modelo com p covariáveis 2 SQRes( p)/(n p 1) R a( p) =1 SQT/(n 1) entre os modelos com p covariáveis, preferir modelo com maior 2 R a ( p) 3) Quadrado médio dos resíduos para um modelo com p covariáveis SQRes( p) QMRes( p)= (n p 1) entre os modelos com p covariáveis, preferir modelo com menor QMRes ( p )
4) Estatística C p de Mallows C p = SQRes( p) QMRes n + 2( p+1) QMRes do modelo com todas as covariáveis disponíveis resultado teórico: modelo com p covariáveis é bom se E(C p ) p+1 então, entre os modelos com p covariáveis, preferir modelo com C p mais próximo de ( p + 1)
ideia do resultado teórico: C p está baseado no Erro Quadrático Médio (EQM) dos preditos EQM de ^θ, estimador de θ: EQM(^θ)=b 2 ( ^θ) Var ( ^θ), com b( ^θ)=e (θ ^θ) vício EQM de ^y i : EQM( ^y i )=[E ( y i ^y )] 2 i Var ( ^y i ) ; i=1,2,,n EQM total padronizado de ^y i : τ p = 1 n σ 2 i=1 *um estimador de τ p é C p {[ E ( y i ^y i )] 2 Var ( ^y i )}
o modelo com p covariáveis é bom se: E( QMRes( p) ) QMRes 1 E ( SQRes( p)/(n p 1) QMRes ) 1 E ( SQRes( p) QMRes ) n p 1=n ( p+1) somando 2( p + 1) n em ambos os lados da igualdade E ( SQRes( p) QMRes n+2( p+1) ) p+1 C p
PROBLEMA adotando um dos critérios das PARTE I, teremos, no final, k modelos adequados Como escolher um dos k modelos adequados? usar o princípio de parcimônia (escolher o modelo, a partir do qual, o valor do critério varia muito pouco quando inclui mais uma covariável) usar o conhecimento específico da área *talvez facilite gráfico: (p = 1, 2,, k) p valor do critério para o modelo mais adequado entre aqueles com p covariáveis Por exemplo: regra prática para a Estatística C p de Mallows calcular C p para todas os possíveis MRLM s construir gráfico de ( p + 1) contra C p, traçando a reta C p = p + 1 preferir o modelo com menor C p mais próximo da reta
ILUSTRAÇÃO - Gráfico de Cp por (p + 1)
Critérios para seleção de variáveis - PARTE II Comparar todos os possíveis MRLM s * os critérios da PARTE II tem a vantagem de, no final, eleger um só modelo adequado 1) Critério de Akaike AIC= 2 ln(l )+2 p l é o valor máximo da função de verossimilhança; e, neste caso, p é o número de coeficientes no modelo de regressão preferir modelo com menor AIC
*AIC pode ser usado também para comparar diferentes tipos de modelos!!! por exemplo: comparar um MRLM com um modelo de regressão não linear; ou com um modelo linear generalizado Pode ser mostrado que no MRLM: AIC=n ln ( SQRes n ) + 2 p
2) p-valor da ANOVA com modelos encaixados e q = 1 regra prática: estabelecer um ponto de corte para o p-valor, a fim de incluir mais covariáveis ao modelo nulo preferir o modelo que não permite incluir mais nenhuma covariável ou estabelecer um ponto de corte para o p-valor, a fim de excluir covariáveis do modelo com todas as covariáveis preferir o modelo que não permite excluir mais nenhuma covariável ou estabelecer dois pontos de corte para o p-valor, a fim de incluir e excluir covariáveis, alternadamente a partir do modelo nulo ou do modelo com todas as covariáveis, preferir o modelo que não permite incluir nem excluir mais nenhuma covariável
3) Estatística PRESS (para avaliar qualidade preditiva do modelo) n PRESS = i=1 e (i) = y i y ^ (i) ; i=1,,n 2 e (i) estimativa da resposta média do indivíduo i, sob o modelo ajustado com os outros (n - 1) indivíduos preferir modelo com menor PRESS * pode ser mostrado que no MRLM n PRESS = i=1 ( e i 1 h ii)2
## cálculo dos critérios para seleção de variáveis para modelos com p=1 covariável ## para exemplificar apresentar os comandos, somente para a covariável X 1 #considere arquivo de dados dados com as variáveis y, x1, x2,... attach(dados) ajust1 <- lm(y~x1) saida1 <- summary(ajust1) #Coeficiente de determinação múltipla saida1$'r.squared' #Coeficiente de determinação ajustado saida1$'adj.r.squared' #Quadrado médio dos resíduos saida1$sigma^2 #Cp de Mallows p <- length(ajust1$coef) n <- length(y) ajust <- lm(y ~., dados) saida <- summary(ajust) QMRes<-saida$sigma^2 SQRes_p <-(n-p-1)*saida1$sigma^2 SQRes_p/QMRes - n + 2*(p+1) #AIC AIC(ajust1) #p-valor da ANOVA com modelos encaixados e q = 1 ajust0 <- lm(y~1) aov <- anova(ajust0, ajust1) aov$pr[2] #PRESS require(daag) press(ajust1) #para instalar o pacote use: install.packages()
## a função regsubsets pode listar os L melhores modelos, segundo critério da SQRes, ## para modelos com p covariáveis (p = 1, 2,..., k) ## Para exemplificar, vamos encontrar os dois melhores modelos (L = 2), ## para cada p (p = 1, 2,..., k) ## veja que L é o argumento nbest desta função require(leaps) #para instalar o pacote use: install.packages() summary(regsubsets(y ~., nbest = 2, data = dados)) #a função regsubsets também pode retornar, para cada modelo, os valores de #SQRes, Estatística Cp de Mallows, R2_multiplo e R2_ajustado sub <- summary(regsubsets(y ~., data = dados)) n_coef <- as.numeric(rownames(sub$which))+1 Cp <- sub$cp R2_a <- sub$adjr2 SQRes <- sub$rss #gráficos de SQRes, Estatística Cp e R2_ajustado (por (p+1) ou p) plot(n_coef, Cp, xlab="p + 1", ylab = "Estatística Cp") abline(0,1) plot(n_coef-1, SQRes, xlab="p", ylab = "Soma de Quadrados dos Resíduos") plot(n_coef-1, R2_a, xlab="p", ylab = "Coeficiente de Determinação Ajustado")
Exemplo 8
#Exemplo 8 rm(list=ls()) dados <- read.table('exemplo8.csv', h=t) require(leaps) #para instalar o pacote use: install.packages() summary(regsubsets(y ~., nbest=10, data = dados)) sub <- summary(regsubsets(y ~., nbest = 15, data = dados)) n_coef <- as.numeric(rownames(sub$which))+1 Cp <- sub$cp R2_a <- sub$adjr2 SQRes <- sub$rss #gráficos de SQRes, Estatística Cp e R2_ajustado (por (p+1) ou p) plot(n_coef, Cp, xlab="p + 1", ylab = "Estatística Cp") abline(0,1) plot(n_coef-1, SQRes, xlab="p", ylab = "Soma de Quadrados dos Resíduos") plot(n_coef-1, R2_a, xlab="p", ylab = "Coeficiente de Determinação Ajustado")
PROBLEMA o uso dos critérios da PARTE I e PARTE II requerer ajuste de todos os possíveis MRLM s Procedimento com todos os possíveis modelos, pode ser inviável quando k é muito grande, pois são ajustados um total de 2 k modelos Por exemplo: se k = 10 são 2 10 = 1024 modelos Como usar de forma sistemática um critério? Existe mais de uma forma sistemática de uso de um critério Procedimento para seleção de variáveis a cada passo de um procedimento, há a adição ou a retirada de uma covariável
Procedimentos básicos para seleção de covariáveis 1) Seleção passo a frente (forward) começa pelo modelo nulo e adicionam-se covariáveis uma a uma ao modelo, até que a inclusão de uma nova covariável não seja necessária 2) Seleção passo a atrás (backward) começa pelo modelo que contém todas as covariáveis, eliminando covariáveis (uma a uma), que não sejam significativas para o modelo 3) Seleção passo a passo (stepwise) * é uma combinação dos procedimentos backward e forward inicia-se como no procedimento forward, e após cada etapa de inclusão de uma covariável, tem-se uma etapa para tentar excluir outra covariável
1) Seleção passo a frente (forward) Passo 1: Primeira covariável a entrar no modelo é X j se: o modelo somente com X j apresenta o melhor valor para o critério, entre os modelos com uma covariável Passo 2: Segunda covariável a entrar no modelo é X j se: o modelo com X j e X j apresenta o melhor valor para o critério, entre os modelos com duas covariáveis Demais passos: covariáveis entram, uma a uma, conforme melhor valor do critério, entre os modelos que incluem também as demais covariáveis selecionadas no passo anterior processo termina quando a inclusão de mais uma covariável não seja necessária Note que a covariável selecionada em um determinado passo, permanece até o final do procedimento, não havendo possibilidade de exclusão
2) Seleção passo a atrás (backward) Passo 1: Primeira covariável a sair do modelo é X j se: o modelo sem X j tem o melhor valor para o critério, entre os modelos com (k 1) covariáveis Passo 2: Segunda covariável a sair do modelo é X j se: o modelo sem X j tem o melhor valor para o critério, entre os modelos com (k 2) covariáveis Demais passos: covariáveis saem, uma a uma, de acordo o melhor valor do critério, entre os modelos com todas as covariáveis do passo anterior, exceto uma processo termina quando a exclusão de mais uma covariável não seja necessária Note que a covariável removida em um determinado passo, não pode ser incluída novamente no modelo
3) Seleção passo a passo (stepwise) Passo 1: igual ao Passo 1 do procedimento forward, para a entrada da Primeira covariável (X j ) no modelo Passo 2: igual ao Passo 2 do procedimento forward, para a entrada da Segunda covariável (X j ) no modelo Passo 3: X j sai do modelo após a entrada de X j sem X j melhorar o valor do critério, somente se o modelo Passo 4: igual aos Demais Passos do procedimento forward, para a entrada da Terceira covariável (X j ) no modelo
Passo 5: X j (ou X j ) sai do modelo após a entrada de X j, somente se o modelo sem X j (ou o modelo sem X j ) melhorar o valor do critério Demais passos: alternar procedimentos forward e backward : forward para incluir mais uma covariável backward para excluir uma ou mais covariáveis após a inclusão de uma nova covariável processo termina quando a inclusão ou a exclusão de mais uma covariável não seja necessária
Importante ter em mente que: a) diferentes combinações de critérios/procedimentos nem sempre levam a mesma seleção de variáveis, pois diferentes modelos podem ter ajustes equivalentes b) nenhuma combinação de critérios/procedimentos pode garantir que o melhor modelo foi obtido
Exemplo 9
Todos o modelos possíveis sem incluir efeitos de interação
## Exemplo 9 # dados y <- c(78.5,74.3,104.3,87.6,95.9,109.2,102.7,72.5,93.1,115.9,83.8,113.3,109.4) x1 <- c(7,1,11,11,7,11,3,1,2,21,1,11,10) x2 <- c(26,29,56,31,52,55,71,31,54,47,40,66,68) x3 <- c(6,15,8,8,6,9,17,22,18,4,23,9,8) x4 <- c(60,52,20,47,33,22,6,44,22,26,34,12,12) # criando um banco de dados dados <- data.frame(cbind(y,x1,x2,x3,x4)) # removendo os vetores rm(y,x1,x2,x3,x4) ## Procedimento passo a passo com AIC modelo_todas <- lm(y~., data=dados) step(lm(y~., data=dados), direction = "both") #ver outras opções da função step no help do R ## função alternativa require(mass) stepaic(lm(y~., data=dados))
> step(lm(y~., data=dados), direction = "both") Start: AIC=26.94 y ~ x1 + x2 + x3 + x4 Df Sum of Sq RSS AIC - x3 1 0.1091 47.973 24.974 - x4 1 0.2470 48.111 25.011 - x2 1 2.9725 50.836 25.728 <none> 47.864 26.944 - x1 1 25.9509 73.815 30.576 Step: AIC=24.97 y ~ x1 + x2 + x4 Df Sum of Sq RSS AIC <none> 47.97 24.974 - x4 1 9.93 57.90 25.420 + x3 1 0.11 47.86 26.944 - x2 1 26.79 74.76 28.742 - x1 1 820.91 868.88 60.629 Call: lm(formula = y ~ x1 + x2 + x4, data = dados) Coefficients: (Intercept) x1 x2 x4 71.6483 1.4519 0.4161-0.2365
> stepaic(lm(y~., data=dados)) Start: AIC=26.94 y ~ x1 + x2 + x3 + x4 Df Sum of Sq RSS AIC - x3 1 0.1091 47.973 24.974 - x4 1 0.2470 48.111 25.011 - x2 1 2.9725 50.836 25.728 <none> 47.864 26.944 - x1 1 25.9509 73.815 30.576 Step: AIC=24.97 y ~ x1 + x2 + x4 Df Sum of Sq RSS AIC <none> 47.97 24.974 - x4 1 9.93 57.90 25.420 - x2 1 26.79 74.76 28.742 - x1 1 820.91 868.88 60.629 Call: lm(formula = y ~ x1 + x2 + x4, data = dados) Coefficients: (Intercept) x1 x2 x4 71.6483 1.4519 0.4161-0.2365