首先,我知道计算非线性回归的R^2值并不是完全正确或有效的做法。
然而,我们现在正在将大部分工作从SigmaPlot转移到R上,对于我们的非线性(浓度-反应)模型,同事们习惯看到一个与模型相关的R^2值来估计拟合优度。
SigmaPlot使用1-(残差平方和/总平方和)来计算R^2值,但是在R中,我似乎无法提取总平方和(残差平方和在摘要中报告)。
如果能帮助我解决这个问题,我将不胜感激,因为我正在尝试将我们转向使用更好的拟合优度估计方法。
谢谢。
首先,我知道计算非线性回归的R^2值并不是完全正确或有效的做法。
然而,我们现在正在将大部分工作从SigmaPlot转移到R上,对于我们的非线性(浓度-反应)模型,同事们习惯看到一个与模型相关的R^2值来估计拟合优度。
SigmaPlot使用1-(残差平方和/总平方和)来计算R^2值,但是在R中,我似乎无法提取总平方和(残差平方和在摘要中报告)。
如果能帮助我解决这个问题,我将不胜感激,因为我正在尝试将我们转向使用更好的拟合优度估计方法。
谢谢。
我没有提取总SS,而是直接计算它们:
test.mdl <- nls(ctrl.adj~a/(1((conc.calc/x0)^b)),
data=dataSet,
start=list(a=100,b=10,x0=40), trace=T);
1 - (deviance(test.mdl)/sum((ctrl.adj-mean(ctrl.adj))^2))
我使用SigmaPlot时得到了与此相同的R^2值,所以一切都应该没问题。
所以y的总变化类似于(n-1)*var(y),而模型未能解释的比例是sum(residuals(fit)^2)
,因此可以进行如下计算:1-(sum(residuals(fit)^2)/((n-1)*var(y)))
fit <- nls(y ~x); summary(fit)
? - SiggyFR^2 can then be calculated by:
1-(deviance(test.mdl)/sum((ctrl.adj-mean(ctrl.adj))^2))`我得到了与使用SigmaPlot相同的r^2值,所以一切都应该没问题。 - sinclairjesse