2017-01-22 2 views
1

Я использую пакет boot в R для расчета загрузочных SE и доверительных интервалов. Я пытаюсь найти элегантный и эффективный способ получить имена моих параметров вместе с распределением их исходных данных. Например, рассмотрим простой пример, приведенный here:Получить имена коэффициентов регрессии с R Bootstrap

# Bootstrap 95% CI for regression coefficients 
library(boot) 
# function to obtain regression weights 
bs = function(data, indices, formula) { 
    d = data[indices,] # allows boot to select sample 
    fit = lm(formula, data=d) 
    return(coef(fit)) 
} 
# bootstrapping with 1000 replications 
results = boot(
    data=mtcars, 
    statistic=bs, 
    R=1000, 
    formula=mpg~wt+disp) 

Это работает отлично, за исключением того, что результаты просто появляются в виде числовых показателей:

# view results 
results 
Bootstrap Statistics : 
     original  bias std. error 
t1* 34.96055404 0.1559289371 2.487617954 
t2* -3.35082533 -0.0948558121 1.152123237 
t3* -0.01772474 0.0002927116 0.008353625 

В частности, при получении в длинные, сложные регрессионные формулы, вовлекая множество переменных факторов, может потребоваться некоторая работа, чтобы отслеживать, какие именно индексы идут, с какой оценкой коэффициента.

Я мог бы, конечно, снова переоформить мою модель за пределами функции начальной загрузки и извлечь имена с помощью names(coef(fit)) или что-то вроде того, или, возможно, использовать что-то еще, например, вызов model.matrix(). Они кажутся громоздкими, как с точки зрения дополнительного кодирования, так и с точки зрения дополнительных ресурсов CPU и ram.

Как легко получить хороший вектор имен коэффициентов для сопряжения вектора ошибок стандартного коэффициента в ситуациях, подобных этому?

UPDATE

Основываясь на большом ответ от ЖМА, вот моего основного кода, чтобы получить базовую регрессионную таблицу:

Names = names(results$t0) 
SEs = sapply(data.frame(results$t), sd) 
Coefs = as.numeric(results$t0) 
zVals = Coefs/SEs 
Pvals = 2*pnorm(-abs(zVals)) 

Formatted_Results = cbind(Names, Coefs, SEs, zVals, Pvals) 
+1

'attr (results $ t0," names ")'; от поиска 'str (results)' – user20650

ответ

2

оценок из вызова «загрузок привязали» функция, здесь lm, по исходным данным, хранятся в элементе списка, называемом «t0».

results$t0 
(Intercept)   wt  disp 
34.96055404 -3.35082533 -0.01772474 

Этот объект сохраняет имена оценок от первоначального вызова функции, которые вы можете получить доступ с names.

names(results$t0) 
[1] "(Intercept)" "wt"   "disp" 
Смежные вопросы