[R-br] Diferenças de R2 entre regressões lineares com e sem intercepto

marcelo claro de souza marcelo.claro.souza em gmail.com
Quarta Novembro 14 12:41:36 BRST 2012


E a utilização do R2 ajustado, seria uma alternativa ou ideal seria
eliminar o modelo sem intercepto e trabalhar apenas com o modelo linear
geral?
Obrigado

Em 14 de novembro de 2012 10:29, Robert Iquiapaza <rbali em ufmg.br> escreveu:

> Concordo, aparentemente o revisor está usando a fórmula "correta" no
> contexto de modelos lineares, "mais variáveis explicativas maior R2". Só
> que no caso do modelo linear sem intercepto o R2 não tem uma definição
> clara, se usar a formula usual R2= 1 - SQE/SQT pode até ser negativo.
> A fórmula utilizada em vários softwares incluído o R, para modelo linear
> sem intercepto, não é interpretável, faça o teste de hipótese e se tiver
> mesmo que apresentar o modelo sem intercepto eu não reportaria o R2.
>
> ########
> intercepto=5  #depois pode mudar esse valor para verificar a influência
> x<-runif(30)
> y<-intercepto-rnorm(30,2*x)
>
> summary(lm(y~x)) #mod.com.int
> summary(lm(y~0+x)) #mod.sem.int
>
> # A formula do usada no R e alguns outros softwares é
> # ilustrada usando a soma dos quadrados da regressão (SQR)
> # e dos erros do modelo (SQE)  R2= SQR/(SQR+SQE)
> # usando uma função para as somas dos quadrados
> sq=function(z,m="mz")sum((z-ifelse(m=="mz",mean(z),m))^2)
> #R2 mod.com.int
>
> sq(fitted(lm(y~x)),mean(y))/(sq(fitted(lm(y~x)),mean(y))+sq(y-fitted(lm(y~x))))
> #R2 mod.sem.int
> sq(fitted(lm(y~0+x)),0)/(sq(fitted(lm(y~0+x)),0)+sq(y-fitted(lm(y~0+x)),0))
> sq(fitted(lm(y~0+x)),mean(y))/(sq(fitted(lm(y~0+x)),mean(y))+sq(y-fitted(lm(y~0+x))))
> #sem forçar a passar pelo zero
>
> # Só que essa fórmula é válida somente para o modelo linear com intercepto
> # onde SQT = SQR + SQE
> # Se usar a fórmula tradicional de R2 = 1 - SQE/SQT no modelo linear sem
> intercepto,
> # normalmente, dependendo do verdadeiro valor do intercepto vai dar um R2
> menor ou negativo
> #R2 mod.com.int
> 1-sq(y-fitted(lm(y~x)))/sq(y)
> #R2 mod.sem.int
> 1-sq(y-fitted(lm(y~0+x)))/sq(y)
>
> # o qual não tem sentido, assim como tem pouco sentido rodar um modelo sem
> intercepto,
> # quando o verdadeiro valor desse parâmetro é muito diferente de zero,
> como
> # pode ver na figura
> plot(y~x)
> abline(lm(y~x),col=3) #mod.com.int
> abline(lm(y~0+x),col=4)#mod.sem.int
> legend("topright", legend = c("mod.com.int","mod.sem.int"), col=3:4,
> pch=1,
>          lty=1, merge=TRUE)#, trace=TRUE)
>
> #rode novamente com intercepto=0, agora a figura pode ter mais sentido,
> # mas eu não falaria que o R2 aumentou, o problema está na definição de R2
>
> ##### fim
>
> Sds,
>
> Robert Iquiapaza
> CEPEAD/FACE/UFMG
>
>
> Em 13 de novembro de 2012 10:11, marcelo claro de souza <
> marcelo.claro.souza em gmail.com> escreveu:
>
>> Bom dia a todos.
>> Rodei duas correlações lineares com e sem intercepto, utilizando o mesmo
>> conjunto de dados, para a determinação de uma equação para determinação da
>> área foliar de uma espécie arbórea.
>> regressão com intercepto lm(y~x)
>> regressão sem intercepto lm(y~0+x) ou lm(y~x-1)
>>
>> O R2 da equação sem intercepto foi maior que o R2 da regressão com
>> intercepto, e o assessor de uma revista questionou que isso seria
>> matematicamente improvável e solicitou que eu refizesse as análises. Refiz
>> e obtive os mesmos resultados.
>> É possível essa variação nos valores de R2 ou estou fazendo algo errado?
>> Muito obrigado pela ajuda.
>> Abraço
>>
>> Marcelo
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20121114/07212306/attachment.html>


Mais detalhes sobre a lista de discussão R-br