了解 R 中的 SSasymp 函数及其拟合值
Understanding the SSasymp function in R and its fitted values
我在 r 中有 运行 以下非线性模型:
model <- nls(y ~ SSasymp(x, Asym, R0, lrc), data = df_z)
summary(model)
这是输出:
Formula: y ~ SSasymp(y, Asym, R0, lrc)
Parameters:
Estimate Std. Error t value Pr(>|t|)
Asym 1.11415 0.01093 101.90 <2e-16 ***
R0 2.01447 0.02194 91.83 <2e-16 ***
lrc 4.88583 0.04830 101.15 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.1958 on 1796 degrees of freedom
Number of iterations to convergence: 11
Achieved convergence tolerance: 9.266e-06
(26 observations deleted due to missingness)
根据documentation,如果我是对的,表达式的值为:
其中α(或Asym)代表y的渐近值,β(或RO)代表x为0时y的值,ln(k)为速率常数的自然对数。
当我用这个模型拟合数据时,我得到了这个图:
现在,当我手动计算某些特定 x 值的结果时,我得到以下结果:
y = 1.114 + (2.01 - 1.114) * exp(-exp(4.886)) * 1 = 1.114
y = 1.114 + (2.01 - 1.114) * exp(-exp(4.886)) * 0.1 = 1.114
y = 1.114 + (2.01 - 1.114) * exp(-exp(4.886)) * 0.01 = 1.114
y = 1.114 + (2.01 - 1.114) * exp(-exp(4.886)) * 0.001 = 1.114
我期望得到超过红线的 y 值。但事实并非如此。
我哪里错了?
您的值 x 在最后一个括号之外。它应该在里面:
xvals <- seq(0, 0.2, 0.001)
yvals <- 1.114 + (2.01447 - 1.114) * exp(-exp(4.886) * xvals)
plot(xvals, yvals, type = "l")
我在 r 中有 运行 以下非线性模型:
model <- nls(y ~ SSasymp(x, Asym, R0, lrc), data = df_z)
summary(model)
这是输出:
Formula: y ~ SSasymp(y, Asym, R0, lrc)
Parameters:
Estimate Std. Error t value Pr(>|t|)
Asym 1.11415 0.01093 101.90 <2e-16 ***
R0 2.01447 0.02194 91.83 <2e-16 ***
lrc 4.88583 0.04830 101.15 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.1958 on 1796 degrees of freedom
Number of iterations to convergence: 11
Achieved convergence tolerance: 9.266e-06
(26 observations deleted due to missingness)
根据documentation,如果我是对的,表达式的值为:
其中α(或Asym)代表y的渐近值,β(或RO)代表x为0时y的值,ln(k)为速率常数的自然对数。
当我用这个模型拟合数据时,我得到了这个图:
现在,当我手动计算某些特定 x 值的结果时,我得到以下结果:
y = 1.114 + (2.01 - 1.114) * exp(-exp(4.886)) * 1 = 1.114
y = 1.114 + (2.01 - 1.114) * exp(-exp(4.886)) * 0.1 = 1.114
y = 1.114 + (2.01 - 1.114) * exp(-exp(4.886)) * 0.01 = 1.114
y = 1.114 + (2.01 - 1.114) * exp(-exp(4.886)) * 0.001 = 1.114
我期望得到超过红线的 y 值。但事实并非如此。
我哪里错了?
您的值 x 在最后一个括号之外。它应该在里面:
xvals <- seq(0, 0.2, 0.001)
yvals <- 1.114 + (2.01447 - 1.114) * exp(-exp(4.886) * xvals)
plot(xvals, yvals, type = "l")