Conditional nls

血红的双手。 提交于 2019-11-28 12:37:33

问题


I'm trying to fit the conditional nls with R 2.15.1. The same code was working fine with R 2.13 but now R 2.15.1 throws errors.

x <- seq(from = 17, to = 47, by = 5)
y <- c(26.2, 173.6, 233.9, 185.9, 115.4, 62.0, 21.7)
Data <- data.frame(y, x)

Fit <- nls(formula =  y ~ ifelse(test = x <= Mu, yes = Mean <- c1*exp(-((x-Mu)/Sigma11)^2), no =  Mean <- c1*exp(-((x-Mu)/Sigma12)^2)),
       data = Data, start = list(c1 = 240, Mu = 25, Sigma11 = 5, Sigma12 = 14), algorithm = "port",
       lower = list(Sigma11 = 0, Sigma12 = 0))

The error is

Error in nls(formula = y ~ ifelse(test = x <= Mu, yes = Mean <- c1 * exp(-((x -  : 
  parameters without starting value in 'data': Mean

Edited

I'm fitting the following model:

$f(x) = c_{1}  \exp\left(-\left(\frac{x-\mu}{\sigma_{(x)}}\right)^2\right)$

where $\sigma_{(x)} = \sigma_{11}$ if  $x \le \mu$ and $\sigma_{(x)} = \sigma_{12}$ if  $x > \mu$

回答1:


This code works in R 2.15.1.

x <- seq(from = 17, to = 47, by = 5)
y <- c(26.2, 173.6, 233.9, 185.9, 115.4, 62.0, 21.7)
Data <- data.frame(y, x)

Fit <- nls(formula =  y ~ ifelse(test = x <= Mu, ye = c1*exp(-((x-Mu)/Sigma11)^2), no = c1*exp(-((x-Mu)/Sigma12)^2)),
       data = Data, start = list(c1 = 240, Mu = 25, Sigma11 = 5, Sigma12 = 14), algorithm = "port",
       lower = list(Sigma11 = 0, Sigma12 = 0))


来源:https://stackoverflow.com/questions/11589139/conditional-nls

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!