Fit não linear com função que aprensenta singularidades.

Desculpe Fernando, seguem os dados:
dput(file) structure(list(x = 0:372, y = c(1.552918816, 1.177870257, 0.728582521, 0.754977859, 1.014857186, 0.952781237, 0.92487764, 0.930448803, 0.825743421, 1.061320976, 0.778891815, 0.987829557, 0.839076467, 1.035174095, 1.026961486, 1.180269616, 0.897432732, 0.750135342, 0.713731659, 0.986891474, 0.814066753, 0.838472048, 0.819105964, 0.913483671, 1.134245404, 0.790984967, 0.785299927, 0.795018406, 0.839324923, 0.735915178, 0.593269981, 0.923184631, 1.018998131, 0.803540789, 0.80479661, 0.72999522, 0.699068733, 0.618802888, 0.815272405, 0.803152178, 0.701841573, 0.734495312, 0.73549551, 0.903936404, 0.99491774, 0.990528339, 0.752979853, 0.708288706, 0.822200524, 0.787724769, 0.852584706, 0.741692593, 0.833094394, 0.835140976, 0.843551076, 0.789762592, 0.71986185, 0.641050114, 0.800506751, 0.884314696, 0.987518987, 0.768463801, 0.866236287, 1.065961223, 0.806744447, 0.766739735, 0.751533707, 0.696793602, 0.936172067, 0.998768819, 0.790549371, 1.112424217, 0.727549674, 0.91716513, 0.785049082, 0.835587721, 0.673062803, 0.849652599, 0.849677285, 0.792995714, 0.817868458, 0.790538222, 0.718977121, 0.969363333, 0.821173251, 0.682762966, 0.547801611, 0.864380029, 0.637068436, 0.716060144, 0.925191396, 0.82309242, 1.217327091, 0.950335691, 0.825029108, 0.858161444, 0.620884509, 0.743739175, 0.782014247, 0.815065357, 0.746548647, 0.778370215, 0.747050338, 0.85151045, 0.853198681, 0.741675073, 0.980756505, 0.78396288, 0.87737065, 0.76027349, 0.814334321, 0.955472852, 0.797915475, 0.64547774, 0.703556084, 1.160420157, 0.697551714, 0.680614453, 0.87038201, 0.885639002, 0.931712588, 0.634435751, 0.771353703, 0.723837157, 0.864745547, 0.683628583, 0.677707032, 0.625280281, 0.780408834, 0.740849273, 0.816243934, 0.743649986, 0.767603759, 0.788182662, 0.638866562, 0.749819197, 0.61128548, 0.699447788, 0.742390183, 0.654970059, 0.621842501, 0.841482993, 0.71000242, 0.719206466, 0.651004308, 0.657988171, 0.659939193, 0.590479621, 0.916040704, 0.735814044, 0.780472541, 0.690410176, 0.852647617, 0.663802217, 0.774593992, 0.679669203, 0.841208257, 0.644216344, 0.790331175, 0.655288593, 0.598600651, 0.850198089, 0.639451072, 0.790941168, 0.56980038, 0.751766237, 0.800986145, 0.661843231, 0.699207295, 0.729910808, 0.713261821, 0.658346522, 0.698184004, 0.725423458, 0.754622693, 0.681435475, 0.471715731, 0.705996852, 0.570707406, 0.660579447, 0.738280295, 0.68915117, 0.568583579, 0.61153553, 1.02975742, 0.661527086, 0.567946511, 0.543164549, 0.702431658, 0.509399922, 0.511034002, 0.683268639, 0.743713692, 0.583393828, 0.599969552, 0.722769271, 0.562765552, 0.596352596, 0.640454455, 0.610732823, 0.734572557, 0.644839078, 0.714663372, 0.679286961, 0.669174296, 0.639958338, 0.732628702, 0.521852221, 0.591436817, 0.622606983, 0.592701398, 0.584728486, 0.808503552, 0.557689709, 0.683618231, 0.671007461, 0.612336643, 0.867552629, 0.71857975, 0.581004025, 0.57724771, 0.65777316, 0.53544089, 0.81379122, 0.607679673, 0.561732705, 0.583045033, 0.642250988, 0.612925931, 0.619729026, 0.655734541, 0.674082112, 1.199682684, 0.565012811, 0.59800977, 0.839234937, 0.806546956, 0.58329986, 0.673788265, 0.627473389, 0.69975597, 0.795051056, 0.606857855, 0.767389545, 0.691856322, 0.637890254, 0.615875558, 0.527046717, 0.69097876, 0.543992738, 0.721710941, 0.541890412, 0.623967124, 0.765809615, 0.697307239, 0.648002123, 0.695423905, 0.58107251, 0.663865924, 0.676050654, 0.576674348, 0.75346084, 0.684342896, 0.692429683, 0.749339007, 0.681089865, 0.694518471, 0.61196794, 0.704916225, 0.752186703, 0.973376864, 0.884314696, 0.892780539, 0.644331016, 0.810050036, 0.659620659, 0.875652955, 0.739896856, 1.050720157, 0.701284935, 0.939293702, 1.023670231, 0.841587313, 0.925278197, 0.780156396, 0.887787516, 0.823984315, 0.985433384, 0.894676614, 0.83659827, 0.96598687, 0.787544001, 0.764039361, 0.898974437, 0.861125405, 0.933638924, 0.86870652, 0.861905018, 0.992322483, 1.381073587, 0.899413218, 1.055144597, 1.048128881, 0.947446586, 0.816658028, 0.85940532, 0.972548675, 0.875777979, 0.974942459, 0.790028568, 0.71600679, 0.792859541, 0.889052096, 0.966600048, 0.89341283, 0.958572986, 1.020383755, 0.76941144, 1.110825175, 0.843357567, 1.120730793, 0.889411244, 0.999906782, 1.02455496, 1.051479065, 1.095087992, 0.923559705, 1.128647961, 1.313131831, 0.915153587, 1.058557692, 0.853607998, 0.949029701, 0.969001, 1.091106314, 1.033087696, 0.957625347, 0.90042775, 1.315533579, 0.86301272, 0.970012346, 0.996177543, 0.872745533, 1.169665612, 1.130164184, 1.12352832, 1.059315803, 1.008628249, 1.296573626, 1.045684131, 1.193302444, 1.181863084, 1.096267365, 1.240134937, 1.16928576, 1.233877333, 1.092117661, 1.15841578, 1.500965885, 1.229769834, 1.438586533, 1.346249834, 1.459758706, 1.542678738, 1.583001188, 1.512468952, 1.330386034, 1.215865019, 1.642284388, 1.588310357, 1.602909577, 1.479793712, 1.527826283 )), .Names = c("x", "y"), class = "data.frame", row.names = c(NA, -373L))
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

Nao consegui aqui. Mas tenho a impressão que o problema está no modelo utilizado. Você tem certeza que este modelo se ajusta aos dados. Eu tentei achar os chutes iniciais utilizando a função manipulate (no Rstudio) e não consigo achar valores de parâmetros para essa função que se ajuste o dados. de uma olhada aí. library(manipulate) modelo<-function(a,n,b,x){-((a*(x^(2*n)) + b)/((x-186)*(x+186)))} modelo(1,3,3,c(1,2,3,4,5,6,9,12,18,24,30,36,48,60,72,84,96,120,144)) start <- list() manipulate({plot(y~x,dados) curve(modelo(a=a,n=n,b=b,x),add=TRUE) start <- list(a=a,n=n,b=b)}, a=slider(-1.001,3, initial=-1.001), n=slider(-5.001,100,initial=-5.001), b=slider(1.001,100, initial = 1.001) ) On 27-08-2014 16:25, Michelle Baú Graczyk wrote:
Desculpe Fernando, seguem os dados:
dput(file) structure(list(x = 0:372, y = c(1.552918816, 1.177870257, 0.728582521, 0.754977859, 1.014857186, 0.952781237, 0.92487764, 0.930448803, 0.825743421, 1.061320976, 0.778891815, 0.987829557, 0.839076467, 1.035174095, 1.026961486, 1.180269616, 0.897432732, 0.750135342, 0.713731659, 0.986891474, 0.814066753, 0.838472048, 0.819105964, 0.913483671, 1.134245404, 0.790984967, 0.785299927, 0.795018406, 0.839324923, 0.735915178, 0.593269981, 0.923184631, 1.018998131, 0.803540789, 0.80479661, 0.72999522, 0.699068733, 0.618802888, 0.815272405, 0.803152178, 0.701841573, 0.734495312, 0.73549551, 0.903936404, 0.99491774, 0.990528339, 0.752979853, 0.708288706, 0.822200524, 0.787724769, 0.852584706, 0.741692593, 0.833094394, 0.835140976, 0.843551076, 0.789762592, 0.71986185, 0.641050114, 0.800506751, 0.884314696, 0.987518987, 0.768463801, 0.866236287, 1.065961223, 0.806744447, 0.766739735, 0.751533707, 0.696793602, 0.936172067, 0.998768819, 0.790549371, 1.112424217, 0.727549674, 0.91716513, 0.785049082, 0.835587721, 0.673062803, 0.849652599, 0.849677285, 0.792995714, 0.817868458, 0.790538222, 0.718977121, 0.969363333, 0.821173251, 0.682762966, 0.547801611, 0.864380029, 0.637068436, 0.716060144, 0.925191396, 0.82309242, 1.217327091, 0.950335691, 0.825029108, 0.858161444, 0.620884509, 0.743739175, 0.782014247, 0.815065357, 0.746548647, 0.778370215, 0.747050338, 0.85151045, 0.853198681, 0.741675073, 0.980756505, 0.78396288, 0.87737065, 0.76027349, 0.814334321, 0.955472852, 0.797915475, 0.64547774, 0.703556084, 1.160420157, 0.697551714, 0.680614453, 0.87038201, 0.885639002, 0.931712588, 0.634435751, 0.771353703, 0.723837157, 0.864745547, 0.683628583, 0.677707032, 0.625280281, 0.780408834, 0.740849273, 0.816243934, 0.743649986, 0.767603759, 0.788182662, 0.638866562, 0.749819197, 0.61128548, 0.699447788, 0.742390183, 0.654970059, 0.621842501, 0.841482993, 0.71000242, 0.719206466, 0.651004308, 0.657988171, 0.659939193, 0.590479621, 0.916040704, 0.735814044, 0.780472541, 0.690410176, 0.852647617, 0.663802217, 0.774593992, 0.679669203, 0.841208257, 0.644216344, 0.790331175, 0.655288593, 0.598600651, 0.850198089, 0.639451072, 0.790941168, 0.56980038, 0.751766237, 0.800986145, 0.661843231, 0.699207295, 0.729910808, 0.713261821, 0.658346522, 0.698184004, 0.725423458, 0.754622693, 0.681435475, 0.471715731, 0.705996852, 0.570707406, 0.660579447, 0.738280295, 0.68915117, 0.568583579, 0.61153553, 1.02975742, 0.661527086, 0.567946511, 0.543164549, 0.702431658, 0.509399922, 0.511034002, 0.683268639, 0.743713692, 0.583393828, 0.599969552, 0.722769271, 0.562765552, 0.596352596, 0.640454455, 0.610732823, 0.734572557, 0.644839078, 0.714663372, 0.679286961, 0.669174296, 0.639958338, 0.732628702, 0.521852221, 0.591436817, 0.622606983, 0.592701398, 0.584728486, 0.808503552, 0.557689709, 0.683618231, 0.671007461, 0.612336643, 0.867552629, 0.71857975, 0.581004025, 0.57724771, 0.65777316, 0.53544089, 0.81379122, 0.607679673, 0.561732705, 0.583045033, 0.642250988, 0.612925931, 0.619729026, 0.655734541, 0.674082112, 1.199682684, 0.565012811, 0.59800977, 0.839234937, 0.806546956, 0.58329986, 0.673788265, 0.627473389, 0.69975597, 0.795051056, 0.606857855, 0.767389545, 0.691856322, 0.637890254, 0.615875558, 0.527046717, 0.69097876, 0.543992738, 0.721710941, 0.541890412, 0.623967124, 0.765809615, 0.697307239, 0.648002123, 0.695423905, 0.58107251, 0.663865924, 0.676050654, 0.576674348, 0.75346084, 0.684342896, 0.692429683, 0.749339007, 0.681089865, 0.694518471, 0.61196794, 0.704916225, 0.752186703, 0.973376864, 0.884314696, 0.892780539, 0.644331016, 0.810050036, 0.659620659, 0.875652955, 0.739896856, 1.050720157, 0.701284935, 0.939293702, 1.023670231, 0.841587313, 0.925278197, 0.780156396, 0.887787516, 0.823984315, 0.985433384, 0.894676614, 0.83659827, 0.96598687, 0.787544001, 0.764039361, 0.898974437, 0.861125405, 0.933638924, 0.86870652, 0.861905018, 0.992322483, 1.381073587, 0.899413218, 1.055144597, 1.048128881, 0.947446586, 0.816658028, 0.85940532, 0.972548675, 0.875777979, 0.974942459, 0.790028568, 0.71600679, 0.792859541, 0.889052096, 0.966600048, 0.89341283, 0.958572986, 1.020383755, 0.76941144, 1.110825175, 0.843357567, 1.120730793, 0.889411244, 0.999906782, 1.02455496, 1.051479065, 1.095087992, 0.923559705, 1.128647961, 1.313131831, 0.915153587, 1.058557692, 0.853607998, 0.949029701, 0.969001, 1.091106314, 1.033087696, 0.957625347, 0.90042775, 1.315533579, 0.86301272, 0.970012346, 0.996177543, 0.872745533, 1.169665612, 1.130164184, 1.12352832, 1.059315803, 1.008628249, 1.296573626, 1.045684131, 1.193302444, 1.181863084, 1.096267365, 1.240134937, 1.16928576, 1.233877333, 1.092117661, 1.15841578, 1.500965885, 1.229769834, 1.438586533, 1.346249834, 1.459758706, 1.542678738, 1.583001188, 1.512468952, 1.330386034, 1.215865019, 1.642284388, 1.588310357, 1.602909577, 1.479793712, 1.527826283 )), .Names = c("x", "y"), class = "data.frame", row.names = c(NA, -373L))
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@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.

Oi Fernando, Ele nem desenha a curva em cima do gráfico. Isso indica então que não tem parâmetros que façam com que a função se ajuste, né? Engraçado porque meu orientador conseguiu fazer o fit usando esta função. Aqui está como eu plotei mas a curva em azul nem apareceu sobre o gráfico. file <- read.table(file="/Users/bau/Desktop/teste/DISparam.txt", col.names=c('x','y')) dados <- data.frame(x=file$x,y=file$y) library(manipulate) modelo<-function(a,n,b,x){-((a*(x^(2*n)) + b)/((x-186)*(x+186)))} modelo(1,3,3,c(1,2,3,4,5,6,9,12,18,24,30,36,48,60,72,84,96,120,144)) start <- list() manipulate({plot(y~x,dados) curve(modelo(a=a,n=n,b=b,x),add=TRUE, col="blue") start <- list(a=a,n=n,b=b)}, a=slider(-1.001,3, initial=-1.001), n=slider(-5.001,100,initial=-5.001), b=slider(1.001,100, initial = 1.001) ) Mas uma função que tem singularidades é aceita para ajustar os dados no R? Se a função ajustasse, não teria problema o fato de ela apresentar singularidades? Muito obrigada, Michelle Em 28 de agosto de 2014 23:13, Fernando Souza <nandodesouza@gmail.com> escreveu:
Nao consegui aqui. Mas tenho a impressão que o problema está no modelo utilizado. Você tem certeza que este modelo se ajusta aos dados. Eu tentei achar os chutes iniciais utilizando a função manipulate (no Rstudio) e não consigo achar valores de parâmetros para essa função que se ajuste o dados. de uma olhada aí.
library(manipulate) modelo<-function(a,n,b,x){-((a*(x^(2*n)) + b)/((x-186)*(x+186)))} modelo(1,3,3,c(1,2,3,4,5,6,9,12,18,24,30,36,48,60,72,84,96,120,144)) start <- list() manipulate({plot(y~x,dados) curve(modelo(a=a,n=n,b=b,x),add=TRUE) start <- list(a=a,n=n,b=b)}, a=slider(-1.001,3, initial=-1.001), n=slider(-5.001,100,initial=-5.001), b=slider(1.001,100, initial = 1.001) )
On 27-08-2014 16:25, Michelle Baú Graczyk wrote:
Desculpe Fernando, seguem os dados:
dput(file) structure(list(x = 0:372, y = c(1.552918816, 1.177870257, 0.728582521, 0.754977859, 1.014857186, 0.952781237, 0.92487764, 0.930448803, 0.825743421, 1.061320976, 0.778891815, 0.987829557, 0.839076467, 1.035174095, 1.026961486, 1.180269616, 0.897432732, 0.750135342, 0.713731659, 0.986891474, 0.814066753, 0.838472048, 0.819105964, 0.913483671, 1.134245404, 0.790984967, 0.785299927, 0.795018406, 0.839324923, 0.735915178, 0.593269981, 0.923184631, 1.018998131, 0.803540789, 0.80479661, 0.72999522, 0.699068733, 0.618802888, 0.815272405, 0.803152178, 0.701841573, 0.734495312, 0.73549551, 0.903936404, 0.99491774, 0.990528339, 0.752979853, 0.708288706, 0.822200524, 0.787724769, 0.852584706, 0.741692593, 0.833094394, 0.835140976, 0.843551076, 0.789762592, 0.71986185, 0.641050114, 0.800506751, 0.884314696, 0.987518987, 0.768463801, 0.866236287, 1.065961223, 0.806744447, 0.766739735, 0.751533707, 0.696793602, 0.936172067, 0.998768819, 0.790549371, 1.112424217, 0.727549674, 0.91716513, 0.785049082, 0.835587721, 0.673062803, 0.849652599, 0.849677285, 0.792995714, 0.817868458, 0.790538222, 0.718977121, 0.969363333, 0.821173251, 0.682762966, 0.547801611, 0.864380029, 0.637068436, 0.716060144, 0.925191396, 0.82309242, 1.217327091, 0.950335691, 0.825029108, 0.858161444, 0.620884509, 0.743739175, 0.782014247, 0.815065357, 0.746548647, 0.778370215, 0.747050338, 0.85151045, 0.853198681, 0.741675073, 0.980756505, 0.78396288, 0.87737065, 0.76027349, 0.814334321, 0.955472852, 0.797915475, 0.64547774, 0.703556084, 1.160420157, 0.697551714, 0.680614453, 0.87038201, 0.885639002, 0.931712588, 0.634435751, 0.771353703, 0.723837157, 0.864745547, 0.683628583, 0.677707032, 0.625280281, 0.780408834, 0.740849273, 0.816243934, 0.743649986, 0.767603759, 0.788182662, 0.638866562, 0.749819197, 0.61128548, 0.699447788, 0.742390183, 0.654970059, 0.621842501, 0.841482993, 0.71000242, 0.719206466, 0.651004308, 0.657988171, 0.659939193, 0.590479621, 0.916040704, 0.735814044, 0.780472541, 0.690410176, 0.852647617, 0.663802217, 0.774593992, 0.679669203, 0.841208257, 0.644216344, 0.790331175, 0.655288593, 0.598600651, 0.850198089, 0.639451072, 0.790941168, 0.56980038, 0.751766237, 0.800986145, 0.661843231, 0.699207295, 0.729910808, 0.713261821, 0.658346522, 0.698184004, 0.725423458, 0.754622693, 0.681435475, 0.471715731, 0.705996852, 0.570707406, 0.660579447, 0.738280295, 0.68915117, 0.568583579, 0.61153553, 1.02975742, 0.661527086, 0.567946511, 0.543164549, 0.702431658, 0.509399922, 0.511034002, 0.683268639, 0.743713692, 0.583393828, 0.599969552, 0.722769271, 0.562765552, 0.596352596, 0.640454455, 0.610732823, 0.734572557, 0.644839078, 0.714663372, 0.679286961, 0.669174296, 0.639958338, 0.732628702, 0.521852221, 0.591436817, 0.622606983, 0.592701398, 0.584728486, 0.808503552, 0.557689709, 0.683618231, 0.671007461, 0.612336643, 0.867552629, 0.71857975, 0.581004025, 0.57724771, 0.65777316, 0.53544089, 0.81379122, 0.607679673, 0.561732705, 0.583045033, 0.642250988, 0.612925931, 0.619729026, 0.655734541, 0.674082112, 1.199682684, 0.565012811, 0.59800977, 0.839234937, 0.806546956, 0.58329986, 0.673788265, 0.627473389, 0.69975597, 0.795051056, 0.606857855, 0.767389545, 0.691856322, 0.637890254, 0.615875558, 0.527046717, 0.69097876, 0.543992738, 0.721710941, 0.541890412, 0.623967124, 0.765809615, 0.697307239, 0.648002123, 0.695423905, 0.58107251, 0.663865924, 0.676050654, 0.576674348, 0.75346084, 0.684342896, 0.692429683, 0.749339007, 0.681089865, 0.694518471, 0.61196794, 0.704916225, 0.752186703, 0.973376864, 0.884314696, 0.892780539, 0.644331016, 0.810050036, 0.659620659, 0.875652955, 0.739896856, 1.050720157, 0.701284935, 0.939293702, 1.023670231, 0.841587313, 0.925278197, 0.780156396, 0.887787516, 0.823984315, 0.985433384, 0.894676614, 0.83659827, 0.96598687, 0.787544001, 0.764039361, 0.898974437, 0.861125405, 0.933638924, 0.86870652, 0.861905018, 0.992322483, 1.381073587, 0.899413218, 1.055144597, 1.048128881, 0.947446586, 0.816658028, 0.85940532, 0.972548675, 0.875777979, 0.974942459, 0.790028568, 0.71600679, 0.792859541, 0.889052096, 0.966600048, 0.89341283, 0.958572986, 1.020383755, 0.76941144, 1.110825175, 0.843357567, 1.120730793, 0.889411244, 0.999906782, 1.02455496, 1.051479065, 1.095087992, 0.923559705, 1.128647961, 1.313131831, 0.915153587, 1.058557692, 0.853607998, 0.949029701, 0.969001, 1.091106314, 1.033087696, 0.957625347, 0.90042775, 1.315533579, 0.86301272, 0.970012346, 0.996177543, 0.872745533, 1.169665612, 1.130164184, 1.12352832, 1.059315803, 1.008628249, 1.296573626, 1.045684131, 1.193302444, 1.181863084, 1.096267365, 1.240134937, 1.16928576, 1.233877333, 1.092117661, 1.15841578, 1.500965885, 1.229769834, 1.438586533, 1.346249834, 1.459758706, 1.542678738, 1.583001188, 1.512468952, 1.330386034, 1.215865019, 1.642284388, 1.588310357, 1.602909577, 1.479793712, 1.527826283 )), .Names = c("x", "y"), class = "data.frame", row.names = c(NA, -373L))
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 listR-br@listas.c3sl.ufpr.brhttps://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.

Onde pega esta library manipulate? Quando tentei, no Windows 7, deu que não está disponível na versão R 3.1. Por acaso é exclusiva do Linux, ou ainda não está oficializada? Oi Fernando, Ele nem desenha a curva em cima do gráfico. Isso indica então que não tem parâmetros que façam com que a função se ajuste, né? Engraçado porque meu orientador conseguiu fazer o fit usando esta função. Aqui está como eu plotei mas a curva em azul nem apareceu sobre o gráfico. file <- read.table(file="/Users/bau/Desktop/teste/DISparam.txt", col.names=c('x','y')) dados <- data.frame(x=file$x,y=file$y) library(manipulate) modelo<-function(a,n,b,x){-((a*(x^(2*n)) + b)/((x-186)*(x+186)))} modelo(1,3,3,c(1,2,3,4,5,6,9,12,18,24,30,36,48,60,72,84,96,120,144)) start <- list() manipulate({plot(y~x,dados) curve(modelo(a=a,n=n,b=b,x),add=TRUE, col="blue") start <- list(a=a,n=n,b=b)}, a=slider(-1.001,3, initial=-1.001), n=slider(-5.001,100,initial=-5.001), b=slider(1.001,100, initial = 1.001) ) Mas uma função que tem singularidades é aceita para ajustar os dados no R? Se a função ajustasse, não teria problema o fato de ela apresentar singularidades? Muito obrigada, Michelle Em 28 de agosto de 2014 23:13, Fernando Souza <nandodesouza@gmail.com> escreveu: Nao consegui aqui. Mas tenho a impressão que o problema está no modelo utilizado. Você tem certeza que este modelo se ajusta aos dados. Eu tentei achar os chutes iniciais utilizando a função manipulate (no Rstudio) e não consigo achar valores de parâmetros para essa função que se ajuste o dados. de uma olhada aí. library(manipulate) modelo<-function(a,n,b,x){-((a*(x^(2*n)) + b)/((x-186)*(x+186)))} modelo(1,3,3,c(1,2,3,4,5,6,9,12,18,24,30,36,48,60,72,84,96,120,144)) start <- list() manipulate({plot(y~x,dados) curve(modelo(a=a,n=n,b=b,x),add=TRUE) start <- list(a=a,n=n,b=b)}, a=slider(-1.001,3, initial=-1.001), n=slider(-5.001,100,initial=-5.001), b=slider(1.001,100, initial = 1.001) ) On 27-08-2014 16:25, Michelle Baú Graczyk wrote: Desculpe Fernando, seguem os dados: > dput(file) structure(list(x = 0:372, y = c(1.552918816, 1.177870257, 0.728582521, 0.754977859, 1.014857186, 0.952781237, 0.92487764, 0.930448803, 0.825743421, 1.061320976, 0.778891815, 0.987829557, 0.839076467, 1.035174095, 1.026961486, 1.180269616, 0.897432732, 0.750135342, 0.713731659, 0.986891474, 0.814066753, 0.838472048, 0.819105964, 0.913483671, 1.134245404, 0.790984967, 0.785299927, 0.795018406, 0.839324923, 0.735915178, 0.593269981, 0.923184631, 1.018998131, 0.803540789, 0.80479661, 0.72999522, 0.699068733, 0.618802888, 0.815272405, 0.803152178, 0.701841573, 0.734495312, 0.73549551, 0.903936404, 0.99491774, 0.990528339, 0.752979853, 0.708288706, 0.822200524, 0.787724769, 0.852584706, 0.741692593, 0.833094394, 0.835140976, 0.843551076, 0.789762592, 0.71986185, 0.641050114, 0.800506751, 0.884314696, 0.987518987, 0.768463801, 0.866236287, 1.065961223, 0.806744447, 0.766739735, 0.751533707, 0.696793602, 0.936172067, 0.998768819, 0.790549371, 1.112424217, 0.727549674, 0.91716513, 0.785049082, 0.835587721, 0.673062803, 0.849652599, 0.849677285, 0.792995714, 0.817868458, 0.790538222, 0.718977121, 0.969363333, 0.821173251, 0.682762966, 0.547801611, 0.864380029, 0.637068436, 0.716060144, 0.925191396, 0.82309242, 1.217327091, 0.950335691, 0.825029108, 0.858161444, 0.620884509, 0.743739175, 0.782014247, 0.815065357, 0.746548647, 0.778370215, 0.747050338, 0.85151045, 0.853198681, 0.741675073, 0.980756505, 0.78396288, 0.87737065, 0.76027349, 0.814334321, 0.955472852, 0.797915475, 0.64547774, 0.703556084, 1.160420157, 0.697551714, 0.680614453, 0.87038201, 0.885639002, 0.931712588, 0.634435751, 0.771353703, 0.723837157, 0.864745547, 0.683628583, 0.677707032, 0.625280281, 0.780408834, 0.740849273, 0.816243934, 0.743649986, 0.767603759, 0.788182662, 0.638866562, 0.749819197, 0.61128548, 0.699447788, 0.742390183, 0.654970059, 0.621842501, 0.841482993, 0.71000242, 0.719206466, 0.651004308, 0.657988171, 0.659939193, 0.590479621, 0.916040704, 0.735814044, 0.780472541, 0.690410176, 0.852647617, 0.663802217, 0.774593992, 0.679669203, 0.841208257, 0.644216344, 0.790331175, 0.655288593, 0.598600651, 0.850198089, 0.639451072, 0.790941168, 0.56980038, 0.751766237, 0.800986145, 0.661843231, 0.699207295, 0.729910808, 0.713261821, 0.658346522, 0.698184004, 0.725423458, 0.754622693, 0.681435475, 0.471715731, 0.705996852, 0.570707406, 0.660579447, 0.738280295, 0.68915117, 0.568583579, 0.61153553, 1.02975742, 0.661527086, 0.567946511, 0.543164549, 0.702431658, 0.509399922, 0.511034002, 0.683268639, 0.743713692, 0.583393828, 0.599969552, 0.722769271, 0.562765552, 0.596352596, 0.640454455, 0.610732823, 0.734572557, 0.644839078, 0.714663372, 0.679286961, 0.669174296, 0.639958338, 0.732628702, 0.521852221, 0.591436817, 0.622606983, 0.592701398, 0.584728486, 0.808503552, 0.557689709, 0.683618231, 0.671007461, 0.612336643, 0.867552629, 0.71857975, 0.581004025, 0.57724771, 0.65777316, 0.53544089, 0.81379122, 0.607679673, 0.561732705, 0.583045033, 0.642250988, 0.612925931, 0.619729026, 0.655734541, 0.674082112, 1.199682684, 0.565012811, 0.59800977, 0.839234937, 0.806546956, 0.58329986, 0.673788265, 0.627473389, 0.69975597, 0.795051056, 0.606857855, 0.767389545, 0.691856322, 0.637890254, 0.615875558, 0.527046717, 0.69097876, 0.543992738, 0.721710941, 0.541890412, 0.623967124, 0.765809615, 0.697307239, 0.648002123, 0.695423905, 0.58107251, 0.663865924, 0.676050654, 0.576674348, 0.75346084, 0.684342896, 0.692429683, 0.749339007, 0.681089865, 0.694518471, 0.61196794, 0.704916225, 0.752186703, 0.973376864, 0.884314696, 0.892780539, 0.644331016, 0.810050036, 0.659620659, 0.875652955, 0.739896856, 1.050720157, 0.701284935, 0.939293702, 1.023670231, 0.841587313, 0.925278197, 0.780156396, 0.887787516, 0.823984315, 0.985433384, 0.894676614, 0.83659827, 0.96598687, 0.787544001, 0.764039361, 0.898974437, 0.861125405, 0.933638924, 0.86870652, 0.861905018, 0.992322483, 1.381073587, 0.899413218, 1.055144597, 1.048128881, 0.947446586, 0.816658028, 0.85940532, 0.972548675, 0.875777979, 0.974942459, 0.790028568, 0.71600679, 0.792859541, 0.889052096, 0.966600048, 0.89341283, 0.958572986, 1.020383755, 0.76941144, 1.110825175, 0.843357567, 1.120730793, 0.889411244, 0.999906782, 1.02455496, 1.051479065, 1.095087992, 0.923559705, 1.128647961, 1.313131831, 0.915153587, 1.058557692, 0.853607998, 0.949029701, 0.969001, 1.091106314, 1.033087696, 0.957625347, 0.90042775, 1.315533579, 0.86301272, 0.970012346, 0.996177543, 0.872745533, 1.169665612, 1.130164184, 1.12352832, 1.059315803, 1.008628249, 1.296573626, 1.045684131, 1.193302444, 1.181863084, 1.096267365, 1.240134937, 1.16928576, 1.233877333, 1.092117661, 1.15841578, 1.500965885, 1.229769834, 1.438586533, 1.346249834, 1.459758706, 1.542678738, 1.583001188, 1.512468952, 1.330386034, 1.215865019, 1.642284388, 1.588310357, 1.602909577, 1.479793712, 1.527826283 )), .Names = c("x", "y"), class = "data.frame", row.names = c(NA, -373L)) 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@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.

Ele mencionou que foi no RStudio. A manipulate, assim como outros pacotes são instalados junto com o RStudio. Inclusive, alguns deles só funcionam por meio do RStudio, como é o caso da manipulate. Nas minhas tentativas há mais de 6 meses atrás eu não consegui usar a manipulate fora do RStudio, isso porque ela cria janelas para interação nativas do mesmo tipo que gera a interface do RStudio. Formas mais gerais de trabalhar com deslizadores, etc, estão disponíveis no pacote rpanel além de outros. Sobre o modelo a considerar para os dados, é como o Fernando relatou, o modelo não descreve o sinal dos dados. Modelo e dados são incompatíveis. Ou seja, o modelo não é apropriado para os dados mas isso não significa dizer que não seja ajustável. Ajustável quero dizer no sentido de jogar numa rotina de ajuste de modelos não lineares de algum aplicativo e convergir. Pode muito bem ter convergido para mínimo local. Se você disser o nome do aplicativo que ele usa (mas não diga), posso quase garantir que foi o que aconteceu. O fato é que não basta convergir. A regra é, depois que convergiu, coloque sobre os gráfico a função ajustada para ver se realmente faz sentido. A função que você quer usar não condiz com o sinal dos dados, então suspeito que você tenha que trocar de modelo. Segue CMR comentado. require(lattice) xyplot(y~x, data=dados, type=c("p","smooth")) ## O sinal do dado aponta que uma função apropriada deve apresentar ## concavidade para cima e ser não simétrica ao se afastar do ponto de ## mínimo. ## Valores iniciais. guess <- list(a=1, b=3, n=3) ## Modelo não linear. func <- function(x, n, a, b){ y <- (-(a*(x^(2*n))+b)/((x-186)*(x+186))) return(y) } ## Gráfico da função com os valores iniciais dentro do domínio observado ## na amostra. with(guess, curve(func(x, a, b, n), min(dados$x), max(dados$x))) abline(v=186, lty=2) ## Ao fazer o estudo da função verifica-se que o denominador tende à ## zero quando x tende à 186, com isso, o valor da função tende ao ## infinito e isso independe dos parâmetros. A função tem comportamento ## não compatível com os dados. ## Sobrepondo dados e função a partir dos valores iniciais. plot(y~x, data=dados) with(guess, curve(func(x, a, b, n), add=TRUE, col=2)) abline(v=186, lty=2) ## Lower e upper são argumentos não considerados pela nls(). fit <- nls(y~func(x, n, a, b), data=dados, start=guess) ## Error in numericDeriv(form[[3L]], names(ind), env) : ## Missing value or an infinity produced when evaluating the model ## Repare na mensagem de erro que diz **Missing value or an infinity ## produced**. Significa que ao avaliar as derivadas parciais do modelo ## com relação aos parâmetros nos valores forncecidos como chute e ## vindos de x, teve-se elementos NA ou Inf. f <- expression(-(a*(x^(2*n))+b)/((x-186)*(x+186))) ## Veja que ocorre um -Inf na avaliação dessas derivadas. d.a <- D(f, "a"); d.a eval(d.a, envir=c(guess, list(x=dados$x))) d.n <- D(f, "n"); d.n eval(d.n, envir=c(guess, list(x=dados$x))) d.b <- D(f, "b"); d.b eval(d.b, envir=c(guess, list(x=dados$x))) ## Essas derivadas dependem só de x e theta. Se remover o x que confere ## o -Inf (posição 187), aquela mensagem de erro some. dados[187,] ## Veja que o x=186 é o que faz com que o denominador seja 0 e aí o ## valor na função não existe nesse ponto. fit <- nls(y~func(x, n, a, b), data=dados[-187,], start=guess) ## Error in nls(y ~ func(x, n, a, b), data = dados[-187, ], start = guess) : ## number of iterations exceeded maximum of 50 ## Agora o erro passa a ser outro. O procedimento de iteração inicia mas ## para por execer o número mínimo de passos. Pedir um traço para ver ## por onde caminhou é útil. fit <- nls(y~func(x, n, a, b), data=dados[-187,], start=guess, trace=TRUE) ## ... linhas omitidas ... ## 744.8148 : -7.50089e-07 1.20808e+04 2.18981e+00 ## 743.1941 : -8.314966e-07 1.211611e+04 2.180563e+00 ## 741.5353 : -9.211941e-07 1.215176e+04 2.171376e+00 ## 739.8368 : -1.019954e-06 1.218775e+04 2.162250e+00 ## 738.097 : -1.128613e-06 1.222408e+04 2.153185e+00 ## Poderia-se aumentar o número de passos ou qualquer outro número para ## deixar fazer mais tentativas, porém, do meu ponto de vista, a função ## candidata não representa é capaz de representar o sinal dos ## dados. Minha opção seria buscar uma função apropriada. À disposição. Walmes.

Muito obrigada Walmes, consegui entender e resolver o problema. Michelle Em 29 de agosto de 2014 11:32, walmes . <walmeszeviani@gmail.com> escreveu:
Ele mencionou que foi no RStudio. A manipulate, assim como outros pacotes são instalados junto com o RStudio. Inclusive, alguns deles só funcionam por meio do RStudio, como é o caso da manipulate. Nas minhas tentativas há mais de 6 meses atrás eu não consegui usar a manipulate fora do RStudio, isso porque ela cria janelas para interação nativas do mesmo tipo que gera a interface do RStudio. Formas mais gerais de trabalhar com deslizadores, etc, estão disponíveis no pacote rpanel além de outros.
Sobre o modelo a considerar para os dados, é como o Fernando relatou, o modelo não descreve o sinal dos dados. Modelo e dados são incompatíveis. Ou seja, o modelo não é apropriado para os dados mas isso não significa dizer que não seja ajustável. Ajustável quero dizer no sentido de jogar numa rotina de ajuste de modelos não lineares de algum aplicativo e convergir. Pode muito bem ter convergido para mínimo local. Se você disser o nome do aplicativo que ele usa (mas não diga), posso quase garantir que foi o que aconteceu. O fato é que não basta convergir. A regra é, depois que convergiu, coloque sobre os gráfico a função ajustada para ver se realmente faz sentido. A função que você quer usar não condiz com o sinal dos dados, então suspeito que você tenha que trocar de modelo. Segue CMR comentado.
require(lattice)
xyplot(y~x, data=dados, type=c("p","smooth"))
## O sinal do dado aponta que uma função apropriada deve apresentar ## concavidade para cima e ser não simétrica ao se afastar do ponto de ## mínimo.
## Valores iniciais.
guess <- list(a=1, b=3, n=3)
## Modelo não linear. func <- function(x, n, a, b){ y <- (-(a*(x^(2*n))+b)/((x-186)*(x+186))) return(y) }
## Gráfico da função com os valores iniciais dentro do domínio observado ## na amostra. with(guess, curve(func(x, a, b, n), min(dados$x), max(dados$x))) abline(v=186, lty=2)
## Ao fazer o estudo da função verifica-se que o denominador tende à ## zero quando x tende à 186, com isso, o valor da função tende ao ## infinito e isso independe dos parâmetros. A função tem comportamento ## não compatível com os dados.
## Sobrepondo dados e função a partir dos valores iniciais. plot(y~x, data=dados) with(guess, curve(func(x, a, b, n), add=TRUE, col=2)) abline(v=186, lty=2)
## Lower e upper são argumentos não considerados pela nls().
fit <- nls(y~func(x, n, a, b), data=dados, start=guess) ## Error in numericDeriv(form[[3L]], names(ind), env) : ## Missing value or an infinity produced when evaluating the model
## Repare na mensagem de erro que diz **Missing value or an infinity ## produced**. Significa que ao avaliar as derivadas parciais do modelo ## com relação aos parâmetros nos valores forncecidos como chute e ## vindos de x, teve-se elementos NA ou Inf.
f <- expression(-(a*(x^(2*n))+b)/((x-186)*(x+186)))
## Veja que ocorre um -Inf na avaliação dessas derivadas. d.a <- D(f, "a"); d.a eval(d.a, envir=c(guess, list(x=dados$x))) d.n <- D(f, "n"); d.n eval(d.n, envir=c(guess, list(x=dados$x))) d.b <- D(f, "b"); d.b eval(d.b, envir=c(guess, list(x=dados$x)))
## Essas derivadas dependem só de x e theta. Se remover o x que confere ## o -Inf (posição 187), aquela mensagem de erro some.
dados[187,]
## Veja que o x=186 é o que faz com que o denominador seja 0 e aí o ## valor na função não existe nesse ponto.
fit <- nls(y~func(x, n, a, b), data=dados[-187,], start=guess) ## Error in nls(y ~ func(x, n, a, b), data = dados[-187, ], start = guess) : ## number of iterations exceeded maximum of 50
## Agora o erro passa a ser outro. O procedimento de iteração inicia mas ## para por execer o número mínimo de passos. Pedir um traço para ver ## por onde caminhou é útil.
fit <- nls(y~func(x, n, a, b), data=dados[-187,], start=guess, trace=TRUE) ## ... linhas omitidas ... ## 744.8148 : -7.50089e-07 1.20808e+04 2.18981e+00 ## 743.1941 : -8.314966e-07 1.211611e+04 2.180563e+00 ## 741.5353 : -9.211941e-07 1.215176e+04 2.171376e+00 ## 739.8368 : -1.019954e-06 1.218775e+04 2.162250e+00 ## 738.097 : -1.128613e-06 1.222408e+04 2.153185e+00
## Poderia-se aumentar o número de passos ou qualquer outro número para ## deixar fazer mais tentativas, porém, do meu ponto de vista, a função ## candidata não representa é capaz de representar o sinal dos ## dados. Minha opção seria buscar uma função apropriada.
À disposição. Walmes.
_______________________________________________ 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.

Eu não consegui achar esta biblioteca manipulate. eu tenho o Windows7, por acaso é exclusiva do Linux, ou ainda não está oficializada? Oi Fernando, Ele nem desenha a curva em cima do gráfico. Isso indica então que não tem parâmetros que façam com que a função se ajuste, né? Engraçado porque meu orientador conseguiu fazer o fit usando esta função. Aqui está como eu plotei mas a curva em azul nem apareceu sobre o gráfico. file <- read.table(file="/Users/bau/Desktop/teste/DISparam.txt", col.names=c('x','y')) dados <- data.frame(x=file$x,y=file$y) library(manipulate) modelo<-function(a,n,b,x){-((a*(x^(2*n)) + b)/((x-186)*(x+186)))} modelo(1,3,3,c(1,2,3,4,5,6,9,12,18,24,30,36,48,60,72,84,96,120,144)) start <- list() manipulate({plot(y~x,dados) curve(modelo(a=a,n=n,b=b,x),add=TRUE, col="blue") start <- list(a=a,n=n,b=b)}, a=slider(-1.001,3, initial=-1.001), n=slider(-5.001,100,initial=-5.001), b=slider(1.001,100, initial = 1.001) ) Mas uma função que tem singularidades é aceita para ajustar os dados no R? Se a função ajustasse, não teria problema o fato de ela apresentar singularidades? Muito obrigada, Michelle

O manipulate e exclusivo do editor Rstudio e pode ser utilizado por usuarios linux e windows. vc pode intala-lo facilmente atraves do editor. conforme explicou o Walmes ele nao funciona em outros editores Em 31/08/2014 19:17, "Mauro Sznelwar" <sznelwar@uol.com.br> escreveu:
Eu não consegui achar esta biblioteca manipulate. eu tenho o Windows7, por acaso é exclusiva do Linux, ou ainda não está oficializada?
Oi Fernando,
Ele nem desenha a curva em cima do gráfico. Isso indica então que não tem parâmetros que façam com que a função se ajuste, né? Engraçado porque meu orientador conseguiu fazer o fit usando esta função. Aqui está como eu plotei mas a curva em azul nem apareceu sobre o gráfico.
file <- read.table(file="/Users/bau/Desktop/teste/DISparam.txt", col.names=c('x','y')) dados <- data.frame(x=file$x,y=file$y)
library(manipulate) modelo<-function(a,n,b,x){-((a*(x^(2*n)) + b)/((x-186)*(x+186)))} modelo(1,3,3,c(1,2,3,4,5,6,9,12,18,24,30,36,48,60,72,84,96,120,144)) start <- list() manipulate({plot(y~x,dados) curve(modelo(a=a,n=n,b=b,x),add=TRUE, col="blue") start <- list(a=a,n=n,b=b)}, a=slider(-1.001,3, initial=-1.001), n=slider(-5.001,100,initial=-5.001), b=slider(1.001,100, initial = 1.001) )
Mas uma função que tem singularidades é aceita para ajustar os dados no R? Se a função ajustasse, não teria problema o fato de ela apresentar singularidades?
Muito obrigada,
Michelle
_______________________________________________ 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.
participantes (5)
-
Fernando Antonio de souza
-
Fernando Souza
-
Mauro Sznelwar
-
Michelle Baú Graczyk
-
walmes .