我正在尝试计算最佳地最小化非线性模型的最小二乘的两个参数(下面)。我已经在stackoverflow和其他地方搜索了一个很好的方法,但无济于事。
x<-c(0.0, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1.0);
y<-c(0,0.501766379,0.508975489, 0.531691175, 0.503410116, 0.539983481, 0.551075694, 0.695050048, 1);
data1 <- data.frame(x,y)
y~(a*x^2+x*(1-x))/(a*x^2+2*x*(1-x)+b*(1-x)^2)
min.RSS <- function(data, par) {
with(data, sum((par[1]*x^2+x*(1-x))/(par[1]*x^2+2*x*(1-x)+par[2]*(1-x)^2)))
}
result <- optim(par = c(0, 1), min.RSS, data = data1$y)
答案 0 :(得分:0)
我使用nls函数计算出来了。我担心获得合适的起始值,但是我的担忧似乎没有根据,因为任何合理的起始值都有效。
解决方案:
m<-nls(y ~ (a*x^2+x*(1-x))/(a*x^2+2*x*(1-x)+b*(1-x)^2), start=list(a=1,b=.5))
beta <- coefficients(m)
这产生所需的参数(在对象“beta”中)。