[R-br] Fit não linear com função que aprensenta singularidades.

Fernando Antonio de souza nandodesouza em gmail.com
Quarta Agosto 27 15:23:12 BRT 2014


Michelle seu codigo nao e reproduzivel. Nao e possivel acessar os dados com
esse codigo de um dput(seusdados) copie a saida e cole no email
Em 27/08/2014 14:46, "Michelle Baú Graczyk" <mbgraczyk em gmail.com> escreveu:

> Boa Tarde,
>
> Eu estou fazendo um fit nâo linear com um polinômio. Porém, a fiunção que
> eu estou usando :
> y= - {[a*(x^(2*n)) + b]/[(x-186)(x+186)]} apresenta duas assíntotas em +-
> 186 e por isso dá um erro no fit: Erro em numericDeriv(form[[3l]],
> names(ind), env): obtido valor faltante ou infinito quando avaliando o
> modelo.
> Pelo que eu entendi, o motivo é que a derivada também possui assíntotas
> nestes mesmo postos e daí na função vai para o infinito.
> Eu fiz D( (-(a*(x^(2*n)) + b)/((x-186)(x+186))), "x") e a mensagem de erro
> foi: Erro em x^(2*n)argumento não numérico para operador binário. Aí eu
> pensei que era por causa do n e deixei então só o x^2 e o erro foi o mesmo.
> Eu procurei na internet e não achei nada que explicasse o que está querendo
> dizer. O que seria um operador binário?
>
> Voltando às assintotas, eu achei uma função chamada ‘NLSstAsymptotic(xy)’
> que é para assintotas verticais em gráficos mas eu tentei emplementá-la e
> nâo deu certo. Tem outra função que eu possa usar para que o fit seja feito
> mesmo que a função usada para o fit apresente singularidades?
>
> Abaixo está o código:
>
>
>
> file <- read.table(file="/Users/bau/Desktop/teste/DISparam.txt",
> col.names=c('x','y'))
> plot(x=file$x, y=file$y, xlab='Valores de x', ylab='Valores de y',
> lwd=0.5,)
>
>
> dados <- data.frame(x=file$x,y=file$y)
>
> #chute inicial
> guess <- list(a=1, b=3, n=3)
>
> # funcao usada para o fit #
> func <- function(x,n, a, b){
>   y <- (-(a*(x^(2*n)) +b)/((x-186)*(x+186)))
>   return(y)
> }
>
> #executa o fit e armazena resultado na variavel 'fit'
> fit <- nls(y ~ func(x,n,a,b), data=dados, start=guess, lower=-200,
> upper=200)
> fit
> summary(fit)
> #gera valores de y a partir do resultado do fit, para plotar
> #o resultado no mesmo grafico que os dados
> yfit <- predict(fit)
> #plota a linha do fit
> lines(dados$x, yfit, col='blue',lwd=2)
> #carrega os parametros
> param <- coef(fit)
>
> Obrigada,
>
> Michelle
>
> _______________________________________________
> 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/20140827/1795cb0b/attachment.html>


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