从nls获得了收敛容差(和其他输出)

时间:2015-10-26 15:17:30

标签: r nls

所以,我使用nls()在R中进行非线性回归。

我现在有一些代码可以为我完成,我得到了正确的输出(p!)。 我可以使用< - coeff()轻松地将系数存储在数据框中,但我也需要存储摘要中的一些其他数据。

这是我运行摘要(Power.model)时得到的结果

Formula: Power.mean ~ a + (b * (Power.rep^-c))

Parameters:
  Estimate Std. Error t value Pr(>|t|)    
a 1240.197      4.075 304.358   <2e-16 ***
b   10.400     14.550   0.715    0.490    
c    6.829    230.336   0.030    0.977    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 13.97 on 11 degrees of freedom

Number of iterations to convergence: 17 
Achieved convergence tolerance: 4.011e-06

我可以得到估计并计算剩余的平方和,但我真的想存储std.error,t值,残差标准误差,迭代次数和(最重要的是)实现的收敛容差。桌子也是。

我知道我可以使用capture.output(summary(Power.model))来捕获这些,但我最终得到了一堆字符串。我真正想要的是只捕获数字(理想情况下是数字),而不是(a)所有附加内容(例如,字符串“Achieved convergence tolerance:”)和(b)而不必将字符串转换为常规字符串(单/双数字(例如,4.011e-06到0.000004011)。

我似乎无法找到我可以在我的nls输出上运行的所有函数的列表。到目前为止,我发现的唯一的是coeff()和resid()。列表是理想的,但是其他任何关于访问摘要中的数据而不诉诸于capture.output()以及不可避免地会遵循的字符串编辑/转换的建议将非常感激。

2 个答案:

答案 0 :(得分:2)

coef(summary(Power.model))将提供包含其中一些项目的矩阵,Power.model$convInfo将提供一个列表,其中的组件包含其他这些项目。可以使用deviance(Power.model)获得剩余的平方和。

methods(class = "nls")会列出代表"nls"个对象的功能列表,而str(Power.model)str(summary(Power.model))会显示"nls"和{{1}的内部组件对象。

例如,使用内置"summary.nls"数据框:

BOD

您可能也对扫帚包感兴趣,它将提供> fm <- nls(demand ~ a + b * Time, BOD, start = list(a = 1, b = 1)) > coef(summary(fm)) Estimate Std. Error t value Pr(>|t|) a 8.521429 2.6589490 3.204811 0.03275033 b 1.721429 0.6386589 2.695380 0.05435392 > fm$convInfo $isConv [1] TRUE $finIter [1] 1 $finTol [1] 3.966571e-09 $stopCode [1] 0 $stopMessage [1] "converged" > deviance(fm) [1] 38.06929 > sum(resid(fm)^2) # same [1] 38.06929 输出的数据框表示,如下所示:

nls

答案 1 :(得分:0)

使用beforeSelectionChange,它将返回对象的名称,您还可以使用names(Power.model),其中一个名称为Power.model。 例如,names(Power.model$...)返回Achieved convergence Tolerance。

如果您使用的是RStudio,您可以单击环境窗口中Power.model附近的箭头,它将显示Power.model的所有名称及其值,以便您选择正确的名称。