r - Google Sheets 拟合模型是否是检索 nls() 起始参数的有效位置?

标签 r google-sheets non-linear-regression nls

我正在尝试使用nls()<将R中的y = a*e^(x*b)形式的指数模型拟合到我在下面运行的数据 功能。我在这里和其他地方读到,我需要为 ab 提供模型合理的参数,但是获取这些起始参数的方式似乎非常可变,而且很多建议的方法中有一些我找不到详细说明的方法。一项建议称,您可以将数据复制到 Excel 电子表格中,在图表上拟合您的模型,然后调整参数,直到它看起来相当适合数据。好吧,我进入 Google 表格,根据下面的数据插入了一个图表,然后选择自定义 > 系列 > 趋势线(指数),它为我提供了一个公式 5.51e^ 0.015x。我可以将这些有效值用作起始参数吗? Google Sheets 是否可以有效地生成这些内容,或者我是否需要进行修补方法,或者尝试其他方法?我已经一遍又一遍地阅读了选择正确起始值的重要性,因此我们将不胜感激。我的教育背景没有涉及非线性模型。

x       y
19.005  5.49
18.19   6
19.59   5.885
19.93   8.96
17.615  13.85
18.795  2.72
19.11   8.09
19.885  8.11
15.76   6.66
16.48   6.27
15.805  5.375
15.825  3.06
15.985  7.795
15.755  6.255
15.485  5.925
15.475  9.925
16.45   6.055
16.285  5.24
15.92   11.15
16.775  5.57
16.075  3.275
16.475  5.635
16.825  4.72
16.28   2.035
17.26   6.07
17.245  4.9
17.98   8.06
17.35   6.94
18.22   7.8
16.27   12.2
17.555  7.335
16.98   5.76
17.415  7.51
17.5    6.18

最佳答案

对于问题中显示的数据,我们可以仅使用 b = 1 的起始值。如果我们使用 nlsp线性 算法,则无需起始值线性参数 a 需要值。在这种情况下,不应在公式中指定 a,因为它已经隐含了。它将在输出中报告为 .lin。在第一行代码中,我们对 DF 进行排序,给出 DF 以方便以后绘图。

DFs <- DF[order(DF$x), ]
fo <- y ~ exp(b * x)
fm <- nls(fo, DFs, start = list(b = 1), algorithm = "plinear")

但是,如果 nls 不适用于其他一些数据,那么由于 y 严格为正,我们可以获取两侧的日志来获得线性模型 fm0 可以与 lm 配合以获得 b 的起始值。使用上面的p线性算法可以避免为a指定起始值。 DFsfo 来自上面。

fm0 <- lm(log(y) ~ x, DFs)
fm2 <- nls(fo, DFs, start = list(b = coef(fm0)[[2]]), algorithm = "plinear")
fm2

## Nonlinear regression model
##   model: y ~ exp(b * x)
##    data: DFs
##       b    .lin 
## 0.02819 4.10908 
##  residual sum-of-squares: 205.6
##
## Number of iterations to convergence: 3 
## Achieved convergence tolerance: 2.073e-06

plot(y ~ x, DFs)
lines(fitted(fm2) ~ x, DFs, col = "red")

screenshot

注意

可重现形式的输入:

Lines <- "x       y
19.005  5.49
18.19   6
19.59   5.885
19.93   8.96
17.615  13.85
18.795  2.72
19.11   8.09
19.885  8.11
15.76   6.66
16.48   6.27
15.805  5.375
15.825  3.06
15.985  7.795
15.755  6.255
15.485  5.925
15.475  9.925
16.45   6.055
16.285  5.24
15.92   11.15
16.775  5.57
16.075  3.275
16.475  5.635
16.825  4.72
16.28   2.035
17.26   6.07
17.245  4.9
17.98   8.06
17.35   6.94
18.22   7.8
16.27   12.2
17.555  7.335
16.98   5.76
17.415  7.51
17.5    6.18"
DF <- read.table(text = Lines, header = TRUE)

关于r - Google Sheets 拟合模型是否是检索 nls() 起始参数的有效位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63971099/

相关文章:

r - 通过管道传输到 `signif()` 时出现奇怪的行为

javascript - 单击按钮时电子表格功能不运行

python - 拟合多项式的 Keras 模型

javascript - JavaScript 中的简单回归预测算法

mathematical-optimization - 一个非常大的非线性最小二乘优化的收敛

r - 更改直方图中的调色板

r - 括号使向量不同。矢量表达式究竟是如何计算的?

无法加载 R lapack 例程

javascript - Google 电子表格 - 删除范围保护时出错

if-statement - TEXTJOIN 只在条件满足时才加入?