我正在尝试建立一个非线性模型,如R 中 gmn 手册中所述。模型的期望形式是
y = b0*x0^g0 + b1*x1^g1 + ...
对我来说,这似乎是最简单的非线性模型形式,但出于某种原因(如果我错了,请纠正我!)我必须编写一个自定义非线性函数以将其拟合到 R 中。非常好!
df=read.csv("d:/mydataframe.csv")
require(gnm)
mypower = function(x){
list(predictors = list(beta=1,gamma=1),
variables = list(substitute(x)),
term = function(predlabels,varlabels) {
paste(predlabels[1],"*(",varlabels[1],"**",predlabels[2],")")
}
)
}
class(mypower) <- "nonlin"
现在当我尝试
fit <- gnm(formula=y ~ mypower(x1), data=df)
我从模型中得到了 beta 和 gamma 的拟合值。但是当我尝试
fit <- gnm(formula=y ~ mypower(x1)+mypower(x2), data=df)
我得到错误
Algorithm failed - no model could be estimated.
那么,问题1:我该如何解决这个问题?
此外,当 - 尝试匹配所有 xs - 我尝试
fit <- gnm(formula=PedalCycles ~ mypower(.), data=df)
我明白了
Error in eval(expr, envir, enclos) : object '.' not found
这是指定所有 xs 的总和的正确方法吗?