所以,我使用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()以及不可避免地会遵循的字符串编辑/转换的建议将非常感激。
答案 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的所有名称及其值,以便您选择正确的名称。