首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >计算非线性最小二乘拟合的R^2

计算非线性最小二乘拟合的R^2
EN

Stack Overflow用户
提问于 2013-01-25 21:35:54
回答 6查看 31.8K关注 0票数 17

假设我有x值、y值和期望的y值f (来自一些非线性的最佳拟合曲线)。

如何在R中计算R^2?请注意,此函数不是线性模型,而是非线性最小二乘(nls)拟合,因此不是lm拟合。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-01-25 21:37:41

您只需使用lm函数来拟合线性模型:

代码语言:javascript
运行
AI代码解释
复制
x = runif(100)
y = runif(100)
spam = summary(lm(x~y))
> spam$r.squared
[1] 0.0008532386

请注意,r的平方不是为非线性模型定义的,或者至少是非常复杂的quote from R-help

有一个很好的理由,在R中拟合的nls模型不提供r平方-r平方对于一般的nls模型没有意义。

R平方的一种思路是将拟合模型的残差平方和与仅由常数组成的平凡模型的残差平方和进行比较。在处理nls模型时,不能保证这是嵌套模型的比较。如果模型不是嵌套的,那么这种比较就没有太大的意义。

所以答案是,你可能从一开始就不想这么做。

如果您需要同行评审的证据,请参见this article;这并不是说您不能计算R^2值,而是它可能意味着与线性模型情况下不同的东西/具有相同的理想属性。

票数 20
EN

Stack Overflow用户

发布于 2013-01-25 21:43:44

听起来像f是你的预测值。它们与实际值之间的距离除以y的n*方差

所以就像这样

1-sum((y-f)^2)/(length(y)*var(y))

只要你的模型合理地接近于线性模型,并且n很大,就应该给你一个准rsquared的值。

票数 10
EN

Stack Overflow用户

发布于 2018-03-14 14:56:41

作为对所提出问题的直接回答(而不是争论R2 /伪R2没有用处),rcompanion包中的nagelkerke函数将报告由McFadden、考克斯和斯内尔以及Nagelkerke提出的非线性最小二乘(nls)模型的各种伪R2值。

代码语言:javascript
运行
AI代码解释
复制
require(nls)
data(BrendonSmall)
quadplat = function(x, a, b, clx) {
          ifelse(x  < clx, a + b * x   + (-0.5*b/clx) * x   * x,
                           a + b * clx + (-0.5*b/clx) * clx * clx)}
model = nls(Sodium ~ quadplat(Calories, a, b, clx),
            data = BrendonSmall,
            start = list(a   = 519,
                         b   = 0.359,
                         clx = 2304))
nullfunct = function(x, m){m}
null.model = nls(Sodium ~ nullfunct(Calories, m),
             data = BrendonSmall,
             start = list(m   = 1346))
nagelkerke(model, null=null.model)

soilphysics软件包还报告Efron的伪R2和调整后的nls模型的伪R2值为1- RSS/TSS:

代码语言:javascript
运行
AI代码解释
复制
pred <- predict(model)
n <- length(pred)
res <- resid(model)
w <- weights(model)
if (is.null(w)) w <- rep(1, n)
rss <- sum(w * res ^ 2)
resp <- pred + res
center <- weighted.mean(resp, w)
r.df <- summary(model)$df[2]
int.df <- 1
tss <- sum(w * (resp - center)^2)
r.sq <- 1 - rss/tss
adj.r.sq <- 1 - (1 - r.sq) * (n - int.df) / r.df
out <- list(pseudo.R.squared = r.sq,
            adj.R.squared = adj.r.sq)

它也是由rcompanion包中的accuracy函数计算出的pseudo R2。基本上,这个R2衡量的是你的适合度比你只画一条水平线通过它们的拟合程度要好多少。如果您的空模型是允许仅拦截模型的模型,则这对于nls模型是有意义的。此外,对于其他非线性模型,它也是有意义的。例如,对于使用严格增加的样条线的scam模型(样条术语中的bs=“mpi”),针对最坏情况(例如,数据严格减少的情况)的拟合模型将是一条平坦的线,因此将导致R2为零。然后,调整后的R2还会惩罚拟合参数具有更高nrs的模型。使用调整后的BIC值已经解决了上面链接的论文的许多批评,http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2892436/ (此外,如果一个人发誓使用信息标准来进行模型选择,那么问题就变成了使用哪一个- R2,BIC,EBIC,AICc,QIC,等等)。

只是在使用

代码语言:javascript
运行
AI代码解释
复制
r.sq <- max(cor(y,yfitted),0)^2
adj.r.sq <- 1 - (1 - r.sq) * (n - int.df) / r.df

我认为如果你有正常的高斯误差也是有意义的-即观察值和拟合y之间的相关性(在零处修剪,因此负关系将意味着零预测能力)的平方,然后在调整后的版本中针对拟合参数的nr进行调整。如果yyfitted方向相同,则这将是常规线性模型报告的R2adjusted R2值。对我来说,这至少是非常有意义的,所以我不同意完全拒绝nls模型的pseudo R2值的有用性,因为上面的答案似乎暗示了这一点。

对于非正常错误结构(例如,如果您使用具有非正常错误的GAM ),McFadden pseudo R2类似地定义为

代码语言:javascript
运行
AI代码解释
复制
1-residual deviance/null deviance

有关一些有用的讨论,请参阅herehere

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14530770

复制
相关文章
非线性最小二乘问题例题_非线性自适应控制算法
摘录的一篇有关求解非线性最小二乘问题的算法–LM算法的文章,当中也加入了一些我个人在求解高精度最小二乘问题时候的一些感触:
全栈程序员站长
2022/11/10
7750
SLAM算法&技术之Gauss-Newton非线性最小二乘算法
很多问题最终归结为一个最小二乘问题,如SLAM算法中的Bundle Adjustment,位姿图优化等等。求解最小二乘的方法有很多,高斯-牛顿法就是其中之一。
3D视觉工坊
2020/11/19
2.2K0
SLAM算法&技术之Gauss-Newton非线性最小二乘算法
R语言中的偏最小二乘PLS回归算法
我将围绕结构方程建模(SEM)技术进行一些咨询,以解决独特的业务问题。我们试图识别客户对各种产品的偏好,传统的回归是不够的,因为数据集的高度分量以及变量的多重共线性。PLS是处理这些有问题的数据集的强大而有效的方法。
拓端
2020/08/28
1.5K0
总体最小二乘(TLS)
可以从多个角度来理解最小二乘方法,譬如从几何方面考虑,利用正交性原理导出。
sea-wind
2019/09/11
4.9K0
GWAS计算BLUE值1--计算最小二乘均值(lsmeans)
上一次,我计划写个系列,为何?要用BLUE值作表型进行GWAS分析,GWAS分析多年多点或者一年多点的数据时,如何计算矫正后的均值(BLUE值),肝了一上午,写了四篇,从原理到计算方法到代码展示,后面四天的素材就有了,总结一些东西,总能理解更深,保持输出才能不断输入,加油!
邓飞
2021/12/20
1K0
GWAS计算BLUE值1--计算最小二乘均值(lsmeans)
线性回归---(最小二乘)
最小二乘法(又称最小平方法)是一种数学优化技术。误差的平它通过最小化方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。
用户5745385
2019/07/03
1.4K0
线性回归---(最小二乘)
R语言中的偏最小二乘回归PLS-DA
今天,我们将 在Arcene数据集上执行PLS-DA,  其中包含100个观察值和10,000个解释变量。
拓端
2020/09/25
1.8K0
最小二乘回归的Python实现
写在前面 我们构建了非常强大的私募基金数据库,并基于这个数据库,衍生出了FOF Easy数据可视化终端和FOF Power组合基金管理系统,涉及到非常多复杂的模型及算法。在背后支撑着的,是我们可爱又有实力的研发同志们,他们大多有着非常深厚的金融统计背景。因此,私募云通将在接下来一段时间内,推出《用Python玩转统计模型》系列,用最通俗易懂的语言带你走进统计模型的世界。 赶快转发,让更多小伙伴知道这个消息吧! 什么是OLS回归? 回归分析是实现从数据到价值的不二法门。 它主要包括线性回归、0-1回归、定序
企鹅号小编
2018/01/29
2.6K0
矛盾方程的最小二乘解
结论一:方程组Ax=b的最小二乘解的通式为x=Gb+(I-GA)y, 其中G\in A\{1, 3\}, y是\mathbb C^n中的任意向量.
卡尔曼和玻尔兹曼谁曼
2019/01/22
2.2K0
【技术分享】交换最小二乘
ALS是交替最小二乘(alternating least squares)的简称。在机器学习中,ALS特指使用交替最小二乘求解的一个协同推荐算法。它通过观察到的所有用户给商品的打分,来推断每个用户的喜好并向用户推荐适合的商品。举个例子,我们看下面一个8*8的用户打分矩阵。
腾讯云TI平台
2020/02/21
1.4K0
论文翻译 | LS-Net:单目双目视觉的非线性最小二乘学习算法
在本文中,我们提出了最小二乘网络,一种神经非线性最小二乘优化算法,即使在逆境中也能有效地优化这些代价函数.与传统方法不同,所提出的求解器不需要hand-crafted的正则化或先验,因为这些都是从数据中隐式学习的.我们把我们的方法应用于运动立体问题。从单目序列的图像对联合估计运动和场景几何形状.我们表明,我们学习的优化器能够有效地解决这个具有挑战性的优化问题.
3D视觉工坊
2020/12/03
9750
论文翻译 | LS-Net:单目双目视觉的非线性最小二乘学习算法
统计学习:最小二乘实例
1.统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行分析与预测的一门学科。统计学习包括监督学习、非监督学习、半监督学习和强化学习。 2.统计学习方法三要素——模型、策略、算法,对理解统计学习方法起到提纲挈领的作用。 3.本书主要讨论监督学习,监督学习可以概括如下:从给定有限的训练数据出发, 假设数据是独立同分布的,而且假设模型属于某个假设空间,应用某一评价准则,从假设空间中选取一个最优的模型,使它对已给训练数据及未知测试数据在给定评价标准意义下有最准确的预测。 4.统计学习中,进行模型选择或者说提高学习的泛化能力是一个重要问题。如果只考虑减少训练误差,就可能产生过拟合现象。模型选择的方法有正则化与交叉验证。学习方法泛化能力的分析是统计学习理论研究的重要课题。 5.分类问题、标注问题和回归问题都是监督学习的重要问题。本书中介绍的统计学习方法包括感知机、近邻法、朴素贝叶斯法、决策树、逻辑斯谛回归与最大熵模型、支持向量机、提升方法、EM算法、隐马尔可夫模型和条件随机场。这些方法是主要的分类、标注以及回归方法。它们又可以归类为生成方法与判别方法。
AI拉呱
2021/01/14
5610
【技术分享】非负最小二乘
spark中的非负正则化最小二乘法并不是wiki中介绍的NNLS的实现,而是做了相应的优化。它使用改进投影梯度法结合共轭梯度法来求解非负最小二乘。 在介绍spark的源码之前,我们要先了解什么是最小二乘法以及共轭梯度法。
腾讯云TI平台
2020/02/12
3.9K0
最经典的线性回归模型参数估计算法——最小二乘
首先,我们要明白最小二乘估计是个什么东西?说的直白一点,当我们确定了一组数的模型之后,然后想通过最小二乘的办法来确定模型的参数。举个两变量(一个自变量、一个因变量)线性回归的例子来说明一下,如下面所示一堆散点图。
讲编程的高老师
2020/08/14
2.8K0
【技术分享】带权最小二乘
$$minimize_{x}\frac{1}{2} \sum_{i=1}^n \frac{w_i(a_i^T x -b_i)^2}{\sum_{k=1}^n w_k} + \frac{1}{2}\frac{\lambda}{\delta}\sum_{j=1}^m(\sigma_{j} x_{j})^2$$
腾讯云TI平台
2020/02/19
1K0
R语言非线性拟合之多项式回归
前面用了2篇推文,帮大家梳理了从线性拟合到非线性拟合的常用方法,包括多项式回归、分段回归、样条回归、限制性立方样条回归,以及它们之间的区别和联系,详情请看:
医学和生信笔记
2023/02/14
8220
R语言非线性拟合之多项式回归
最小二乘法求多次拟合
[Java]代码     import java.util.*; public class Nihe { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int n, m, i, j, k; System.out.println("输入x的个数"); Scann
代码伴一生
2021/09/19
5700
最小二乘法曲线拟合
Fitting Parameters: [ 1.26607557e+04 -4.98135295e+04 7.91163644e+04 -6.47495637e+04 2.88643748e+04 -6.80602407e+03 7.57452772e+02 -2.89393911e+01 1.19739704e+01]
裴来凡
2022/05/29
1.1K0
最小二乘法曲线拟合
【技术分享】迭代再加权最小二乘
  迭代再加权最小二乘(IRLS)用于解决特定的最优化问题,这个最优化问题的目标函数如下所示:
腾讯云TI平台
2020/02/14
2.4K0
R语言实现偏最小二乘回归法 partial least squares (PLS)回归
偏最小二乘回归是一种回归形式 。  当使用pls时,新 的线性组合有助于解释模型中的自变量和因变量。
拓端
2020/09/25
3.9K0

相似问题

R中非线性最小二乘拟合的预测

14

在r中进行非线性最小二乘拟合

12

python非线性最小二乘拟合

20

R中的非线性最小二乘曲线拟合

30

非线性最小二乘(nls)模型拟合

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档