Re: [R-br] regressão polinomial
Sem testar código segue um comentário genérico: Estes polinomios de alto grau podem gerar variáveis de valores muito elevados e com isto instabiliades numéricas nos calculos matriciais tente usar polinomios ortonormalizados fazendo: y ~ poly(x, 5) Os coeficientes serão diferentes mas preicoes serão as mesmas On Tue, 24 Jul 2012, Tito Conte wrote: Segue o código # pontos y=c(-26.,-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.,-25.,-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.,-45.,-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.) # regressão polinomial m=lm(y~x+I(x^2)+I(x^3)+I(x^4)+I(x^5)) # criar polinomio de ordem 5 # extraindo os coeficientes b0=coefficient(m)[1] b1=coefficient(m)[2] b2=coefficient(m)[3] b3=coefficient(m)[4] b4=coefficient(m)[5] b5=coefficient(m)[6] # recalculando m_teste=b0+b1*x+b2*x^2+b3*x^3+b4*x^4+b5*x^5 A idéia seria que os pontos de m_teste dessem semelhantes a y mas isso não acontece ___ R-br mailing list R-br@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.
Re: [R-br] Tabelas em sql para verficar.
Leonardo, fiz a troca e não consegui rodar. Muito obrigado. Edson Lira Estatístico Manaus-Amazonas De: Leonard de Assis assis.leon...@gmail.com Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 24 de Julho de 2012 13:56 Assunto: Re: [R-br] Tabelas em sql para verficar. Mais uma vez: troque o to_char por to_date []s Leonard de Assis assis dot leonard at gmail dot com Em 24/07/2012 12:14, Edson Lira escreveu: Benilton e Leonardo, só agora pude voltar aquele problema do sql. Abaixo o script usado para ler o sql. rm(list = ls()) require(RODBC) options(digits=3) options(max.print=80) getOption(max.print) channel-odbcConnect(saddw,uid=saddw,case=tolower) #DOAÇÃO GERAL doacao.dados- sqlQuery(channel, select doacao_dw.numerobolsa, doacao_dw.datahoradoacao,doacao_dw.tipodoacao, doacao_dw.tipodoacaodirigida,doacao_dw.localcoleta,doacao_dw.apto, doacao_dw.codigoinaptidao,doador_dw.tipagemsanguinea,doador_dw.rh, doador_dw.idade, doador_dw.sexo, doador_dw.data_primeira_doacao, doador_dw.data_ultima_doacao,bairroresidencia, bairro_nao_tabelado,doador_dw.qtde_doacoes, doador_dw.numerogente from saddw.doador_dw, saddw.doacao_dw where doador_dw.numerogente = doacao_dw.numerogente and to_char(doacao_dw.datahoradoacao,'DD/MM/') = to_date('27/08/1992','DD/MM/') and to_char(doacao_dw.datahoradoacao,'DD/MM/') = to_date('28/08/1992','DD/MM/') ) No link abaixo o script que gera os dados em sql. http://www.datafilehost.com/download-054b9e31.html Abaixo erro ao rodar no R. + and to_char(doacao_dw.datahoradoacao,'DD/MM/') = to_date('28/08/1992','DD/MM/') + and to_char(doacao_dw.datahoradoacao,'DD/MM/') = to_date('28/08/1992','DD/MM/') + ) Erro em as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format [ ]'s. Edson Lira Estatístico Manaus-Amazonas ___ R-br mailing list R-br@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. ___ R-br mailing list R-br@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.___ R-br mailing list R-br@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.
Re: [R-br] regressão polinomial
O problema que voce relata é pq o polinomio nao foi ajustado com x, x^2 ... x^5 e sim pelo geado pelo poly() POnrtanto seus coneficientes nao sao compatívies com as potencias de x na forma bruta Obtenbha os falores ajustados por fitted(r) e prediçoes em outros pontos usando predict() para fazer a predicão On Wed, 25 Jul 2012, Tito Conte wrote: as dicas foram uteis e muito obrigado, muito embora quando eu dou o comando r=lm(y~poly(x,5)) e depois dou a equação pelos coeficientes b0=r$coefficient[1] b1=r$coefficient[2] b2=r$coefficient[3] b3=r$coefficient[4] b4=r$coefficient[5] b5=r$coefficient[6] m_teste=b0+b1*x+b2*x^2+b3*x^3+b4*x^4+b5*x^5 o m_teste extrapola de novo será que estou extraindo os coeficientes de forma correta? e aplicando a equação de forma correta? vocês podem me dar outra luz? obrigado ___ R-br mailing list R-br@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.
Re: [R-br] regressão polinomial
Tito seu exemplo ilustra um o problema numérico que pode ocorrer em ajustes. O perigo é que o resultado é prouzido e se não avaliao o erro pode passar desapercebido e a curva de ajuste erraa pode acabar sendo usada. Veja o efeito no gráfico. Teoricamente os ajustes deveriam ser iguais, entretanto numericamente não são. m=lm(y~x+I(x^2)+I(x^3)+I(x^4)+I(x^5)) # criar polinomio de ordem 5 coef(m) m1 - lm(y ~ poly(x, 5)) ## polinomio e ordem 5 com variáveis ortonormalizadas coef(m1) xpred - data.frame(x = seq(min(x), max(x), len=200)) plot(x, y) lines(xpred$x, predict(m, newdata=xpred)) ## ajuste/predicao com erro numérico lines(xpred$x, predict(m1, newdata=xpred), col=2) ## adequado On Tue, 24 Jul 2012, Tito Conte wrote: Segue o código # pontos y=c(-26.,-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.,-25.,-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.,-45.,-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.) # regressão polinomial m=lm(y~x+I(x^2)+I(x^3)+I(x^4)+I(x^5)) # criar polinomio de ordem 5 # extraindo os coeficientes b0=coefficient(m)[1] b1=coefficient(m)[2] b2=coefficient(m)[3] b3=coefficient(m)[4] b4=coefficient(m)[5] b5=coefficient(m)[6] # recalculando m_teste=b0+b1*x+b2*x^2+b3*x^3+b4*x^4+b5*x^5 A idéia seria que os pontos de m_teste dessem semelhantes a y mas isso não acontece ___ R-br mailing list R-br@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.
Re: [R-br] regressão polinomial
Paulo agora outra dúvida, tenho dez mil pontos, como comparar os que estão a direita e a esquerda dessa curva (como se fosse um dentro ou fora do sistema), já que não consigo extrair o coeficiente de da função poly? Necessito dos dados numericamente pois estes pontos serão submetidos a novos tratamentos posteriormente ___ R-br mailing list R-br@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.
Re: [R-br] regressão polinomial
Seja mais claro na sua colocação e forneça um CMR ilustrando com comentários os pontos em dúvida. À disposição. Walmes. == Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: wal...@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 == ___ R-br mailing list R-br@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.
Re: [R-br] regressão polinomial
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(my[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.,-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.,-25.** ,-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.,-45.,-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.) 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? ___ R-br mailing list R-br@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.