R中的非线性总最小二乘/戴明回归

机器算法验证 r 主成分分析 最小二乘 德明回归 全最小二乘法
2022-03-19 21:37:17

我一直在使用nls()自定义模型来拟合我的数据,但我不喜欢模型的拟合方式,我想使用一种方法来最小化 x 轴和 y 轴上的残差。

我做了很多搜索,并找到了拟合线性模型的解决方案:

但这些适合二阶多项式,而不是自定义的用户定义模型。

我想要的是类似于nls()x 和 y 残差最小化的东西。这将允许我输入我的自定义模型。有人知道R中的任何解决方案吗?

这是一个示例,但请注意,我正在寻求有关非线性总最小二乘回归的一般解决方案的建议,而不是针对此数据集的特定内容(这只是此处的示例数据):

df <- structure(list(x = c(3, 4, 5, 6, 7, 8, 9, 10, 11), y = c(1.0385, 
1.0195, 1.0176, 1.01, 1.009, 1.0079, 1.0068, 1.0099, 1.0038)), .Names = c("x", 
"y"), row.names = c(NA, -9L), class = "data.frame")

(nlsfit <- nls(y ~ a^b^x, data = df, start = c(a=0.9, b=0.6)))

library(ggplot2)
ggplot(df, aes(x=x, y=y)) + 
    geom_point() + 
    geom_smooth(method="nls", formula = y ~ a^b^x, se=F, start = list(a=0.9, b=0.6))

有人对我如何进行有任何建议吗?

1个回答

有一种称为“正交距离回归”的技术可以做到这一点。最近发布了 R 中的一个实现:

http://www.r-bloggers.com/introducing-orthogonal-nonlinear-least-squares-regression-in-r/