如何将boot()输出的Bootstrap Statistics转换为数据框?
问题描述
使用boot()函数计算一系列回归系数后,得到如下Bootstrap统计结果,希望将其转换为包含original、bias、std.error的完整数据框。尝试调用results$t0仅能获取原始系数值,无法得到偏差和标准误。
代码示例
bs<-function(formula, data, indices) { d<-data[indices,] fit1<-lm(formula,data=d) r<-residuals(fit1) taus<-c(0.1, 0.2, 0.3, 0.4, 0.5) fit2<-rq(srs~r, tau=taus, data=d) return(coef(fit2)) } library(boot) results<-boot(data=earli, statistic=bs, R=1000, formula=Freq~prepreg_bmi+mat_age) results
输出结果
Bootstrap Statistics : original bias std. error t1* 39.000000 -0.06213177 0.4923311 t2* 0.000000 0.81613987 0.9480617 t3* 39.994080 0.20734506 0.5515006 t4* 1.978584 -0.27895713 1.0157747 t5* 41.494479 0.08356320 0.6923510 t6* 2.982711 -0.28310189 1.2957767 t7* 43.464062 -0.22307964 0.7879350 t8* 3.075496 0.31197213 1.4150300 t9* 44.974168 0.03526846 0.8638345 t10* 3.978100 -0.53116587 1.5490870
解决方案
直接提取boot对象中的三个核心统计量,合并为数据框即可,同时可以添加系数名称提升可读性:
# 提取各列数据 original_vals <- results$t0 bias_vals <- results$bias std_error_vals <- results$std.error # 合并为数据框 boot_stats_df <- data.frame( original = original_vals, bias = bias_vals, std.error = std_error_vals, row.names = names(original_vals) ) # 查看结果 print(boot_stats_df)
关键说明
results$t0对应输出中的original列results$bias对应输出中的bias列results$std.error对应输出中的std. error列names(original_vals)会自动读取每个系数的名称(比如不同分位数下的截距和斜率),让数据框的行标签更清晰
内容的提问来源于stack exchange,提问作者Jeff S
相关产品推荐
相关产品推荐

