r - 是否有一个 R 函数可以找到任意模型的参数?
问题描述
我正在尝试拟合模型 y=c0*log(c1*x+1) ,其中 y 和 x 是我的数据,而 c0 和 c1 是模型的参数。我知道 Matlab 中的“fit”命令可以做到这一点,但我正试图在 R 中做到这一点。我想知道是否有人可以就可以实现这一点的函数提供建议。
model <- y ~ c0*log(c1*x + 1)
我期待一个对数曲线。
解决方案
这是一个非线性回归问题,其中 y 等于右手边加上一个误差。
为了拟合这样的模型nls
,请在基础 R 中使用(?nls
有关更多信息,请参阅)或许多其他非线性回归函数中的任何一个。请参阅https://cran.r-project.org/web/views/Optimization.html。在某些警告nls
下,将找到最小化给定模型和起始值的误差平方和的参数。
# create test data
set.seed(123)
c0 <- c1 <- 1
x <- 1:10
y <- c0 * log(c1 * x + 1) + rnorm(10)/10
# fit model to the data
fm <- nls(y ~ c0 * log(c1 * x + 1), start = list(c0 = mean(y), c1 = 1))
fm
给予:
Nonlinear regression model
model: y ~ c0 * log(c1 * x + 1)
data: parent.frame()
c0 c1
0.9207 1.2210
residual sum-of-squares: 0.07622
Number of iterations to convergence: 5
Achieved convergence tolerance: 4.887e-06
以图形方式评估拟合:
plot(y ~ x, pch = 20)
lines(fitted(fm) ~ x, col = "red")
推荐阅读
- angularjs - 我可以为单个元素添加样式和 ng-style 吗?
- docker - Kubernetes 多服务器通信
- visual-studio-2013 - 使用 rdlc 命中 tablix 异常
- java - Spring Boot 编码过滤器
- opencv - 如何将边界框导出为 .jpg
- arduino - 如何让 Arduino 工作而不是在 vscode 上给出“无法打开源文件”avr/pgmspace.h“”?
- angular - 有没有办法避免在 Ionic 3 中更新列表后视图闪烁?
- flutter - 飞来飞去。来自 React Native 的模拟 Animation.event?
- javascript - 如何在 Angular 7 中以不同颜色显示 2 个复杂对象之间的差异?
- html - 如何在反应中导入字体?