2015-10-26 2 views
0

Итак, я использую NLS() для нелинейной регрессии в R.достигается толерантность конвергенции (и другие выходы) от НЛС

теперь у меня есть некоторый код, который делает это для меня, и я получаю правильный вывод (уф !). Я могу легко сохранить коэффициенты в кадре данных, используя < - 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, т значение, остаточная std-ошибка, количество итераций и (что наиболее важно) достигнутый допуск конвергенции в таблице.

Я понимаю, что могу использовать capture.output (summary (Power.model)), чтобы захватить их, но я просто закончил с кучей строк. То, что я действительно хочу, - это захватить только числа (в идеале как числа) без (а) всех дополнительных функций (например, строки «Достигнутый допуск конвергенции») и (б) без необходимости преобразования строк в обычные (одиночные/(например, 4.011e-06 - 0,000004011).

Я не могу найти список всех функций, которые я могу запускать на выходе nls. Единственные, которые я нашел до сих пор, - coeff() и resid(). Список был бы идеальным, но в противном случае любые другие рекомендации по доступу к данным в сводке, не прибегая к capture.output() и редактированию/преобразованию строк, которые неизбежно последуют, будут очень оценены.

ответ

0

names(Power.model), он вернет вам имена объекта, и вы также можете использовать names(Power.model$...), с ... одним из имен Power.model. Например, Power.model$convInfo$finTol возвращает Допустимое сходимость Толерантность.

Если вы используете RStudio, вы можете щелкнуть по стрелке возле Power.model в окне Environment и отобразить все имена Power.model со значением, которое позволит вам выбрать правильное имя.

2

coef(summary(Power.model)) даст матрицу, содержащую некоторые из этих элементов, а Power.model$convInfo предоставит список, компоненты которого содержат другие из этих элементов. Остаточную сумму квадратов можно получить, используя deviance(Power.model).

methods(class = "nls") даст список функций, которые действуют на "nls" объектов и str(Power.model) и str(summary(Power.model)) будут показаны внутренние компоненты "nls" и "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 вывода, как это:

> library(broom) 
> tidy(fm) 
    term estimate std.error statistic p.value 
1 a 8.521429 2.6589490 3.204811 0.03275033 
2 b 1.721429 0.6386589 2.695380 0.05435392 

> glance(fm) 
    sigma isConv  finTol logLik  AIC  BIC deviance df.residual 
1 3.085016 TRUE 3.966571e-09 -14.05658 34.11315 33.48843 38.06929   4 
Смежные вопросы