[R-br] regressão polinomial

Paulo Justiniano paulojus em leg.ufpr.br
Quinta Julho 26 09:08:42 BRT 2012


Voce parece estar complicando o fácil.
A sua logica de comparar o dado com o ajustao aplicando a equacao caso a 
caso pode ser alterada por algo mais simples

O objheto com modelo retorna residuos, valores preditos me portanto voce 
pode obter isto diretamente bastando tomar os residuos que sao positivos 
ou negativos.

alem disto o loop for é desnecessário

resid(r) ## mostra residuos

ifelse(resid(r) > 0, "fora", "dentro")



On Wed, 25 Jul 2012, Tito Conte wrote:

> Walmes vou criar um exemplo para facilitar o entendimento
> o que eu preciso é comparar pontos amostrados com os resultados de um modelo de interpolação polinomial
> 
> por exemplo
> 
> #minhas amostras
> y=seq(1:9)
> x=seq(3:11)
> 
> #pontos do modelo
> xm=seq(2,11)
> ym=seq(0:8)
> 
> #tirando os valores do modelo da reta
> r=lm(ym~poly(xm,1))
> 
> #extraindo coeficientes
> a=r$coefficients[1]
> b=r$coefficients[0]
> 
> validacao=vector()
> #comparando cada ponto obtido pelo modelo ajustado com a amostra
> for(i in c(1:length(y)){
> # calculando valor do modelo
> m=a*x[i]+b 
> # comparando modelo com amostra
> ifelse(m<y[i],a='fora',a='dentro')
> validacao[i]=a
> }
> 
>  é algo deste estilo porém com um polinomio de grau elevado, Quando ploto os resultados eles estão bonitos, mas quando calculo ele como o método
> abaixo os valores extrapolam muito da realidade e não entendo o porque, veja o  exemplo aqui
> 
>
>             y=c(-26.0000,-25.9862,-25.9343,-25.8822,-25.8433,-25.8054,-25.7948,-25.7872,-25.7668,-25.7284,-25.7015,-25.6282,-25.4612,-25.3016,-25.
>             2564,-25.2412,-25.2412,-25.2232,-25.0869,-25.0000,-25.0000,-24.9856,-24.9397,-24.8976,-24.8533,-24.6587,-24.6373,-24.5740,-24.5406,-24
>             .4379,-24.3934,-24.3628,-24.3277,-24.3042,-24.2972,-24.2973,-24.3020,-24.3068,-24.3068,-24.2956,-24.2920)
> 
>  
>             x=c(-45.8529,-45.8302,-45.7575,-45.6680,-45.6107,-45.5050,-45.4574,-45.4058,-45.3538,-45.2913,-45.2634,-45.2264,-45.1667,-45.0719,-45.
>             0213,-45.0000,-45.0000,-44.9748,-44.8726,-44.8405,-44.8405,-44.8351,-44.8259,-44.7972,-44.7764,-44.6867,-44.6674,-44.5912,-44.5587,-44
>             .4927,-44.4515,-44.4115,-44.3314,-44.2664,-44.2171,-44.1729,-44.1288,-44.0820,-44.0509,-44.0118,-44.0000)
>               
> 
> 
> r=lm(y~poly(x,5)) 
> 
> b0=r$coefficient[1]
> b1=r$coefficient[2]
> b2=r$coefficient[3]
> b3=r$coefficient[4]
> b4=r$coefficient[5]
> b5=r$coefficient[6]
> 
> modelo=b0+b1*x+b2*x^2+b3*x^3+b4*x^4+b5*x^5
> 
> modelo
> 
> veja que os resultados estão muito fora. mas deveriam ser os mesmos, como proceder?
> 
>


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