如何在R中的nls包非线性模型中计算R平方?

问题描述

我使用nls软件包分析了非线性回归。

power<- nls(formula= agw~a*area^b,data=calibration_6,start=list(a=1,b=1))
summary(power)

我听说在非线性模型中,R平方不是有效的,而不是R平方的,我们通常会显示R提供的残差标准误差。

但是,我只想知道R平方是什么。可以在nls包中检查R平方吗?

非常感谢!

  • OutPut

enter image description here

解决方法

我找到了解决方案。从统计角度来看,此方法可能是不正确的(因为R ^ 2在非线性模型中无效),但我只是想了解非线性模型的整体拟合优度。

步骤1>将数据转换为对数(通用对数)

使用非线性模型时,无法检查R ^ 2

nls(formula= agw~a*area^b,data=calibration,start=list(a=1,b=1))

因此,我将数据转换为日志

x1<- log10(calibration$area)
y1<- log10(calibration$agw)  

cal<- data.frame (x1,y1)

第2步>分析线性回归

logdata<- lm (formula= y1~ x1,data=cal)
summary(logdata)

Call:
lm(formula = y1 ~ x1)

enter image description here

此模型提供y = -0.122 + 1.42x

但是,我想将拦截力强制为零,

步骤3>强制拦截为零

logdata2<- lm (formula= y1~ 0 + x1)
summary(logdata2)

enter image description here

现在等式为y = 1.322x,这意味着log(y)= 1.322 log(x),

所以它是y = x ^ 1.322。

在幂曲线模型中,我将截距强制为零。 R ^ 2为0.9994

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...