我创建了一个数据集,以更好地理解一个方程,并将其应用于预测行为。
方程为y = 10/(1+k*((x/t)^s))。
为了创建数据集并查看它是否正常工作,我执行了以下操作:
# creating the floor function f(x)
f = function(x) {
10/(1+1.5*(floor((x/2.5)^0.7)))
}
# specifying the domain of f(x)
x = seq(0, 100, length.out = 50) # x contains 50 points between 0 and 100
library(ggplot2)
# creating a data frame that contains x and f(x)
dat = data.frame(x = x, y = f(x))
p = ggplot(dat, aes(x = x, y = y)) +
geom_step() # geom_step creates a stairs plot
p
# adding points to the plot
p + geom_point()
然后,我想使用以下函数检查此数据集的回归分析:
#See the regression
# imports library
library(minpack.lm)
start_values <- c(k=1, s=0.3, t=2)
fit <- nls(dat$y ~ 10/(1+k*(floor((dat$x/t)^s))),
data = dat,
algorithm = "port",
start = start_values,
control = nls.control(maxiter = 1000))
summary(fit)
但我得到以下错误:
nlsModel(formula,mf,start,wts,upper,scaleOffset = scOff,:初始参数估计的奇异梯度矩阵
我该怎么做才能避免呢?或者我应该进行哪种分析?我不是统计Maven。
谢谢你的帮助!
1条答案
按热度按时间lhcgjxsq1#
这种类型的模型不能很好地与基于导数的算法一起工作。你可以在一个立方体中的1000个随机点上评估模型,然后选择最好的。