【问题标题】:R BootStrap Data FrameR BootStrap 数据帧
【发布时间】:2020-05-26 20:25:39
【问题描述】:
# Bootstrap 95% CI for R-Squared
library(boot)
# function to obtain R-Squared from the data
rsq <- function(formula, data, indices) {
  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=rsq,
   R=1000, formula=mpg~wt+disp)

# get 95% confidence interval
boot.ci(results, type="bca")

假设您运行此引导程序并获得 1000 个对截距、重量和分布变量的估计值,因此您希望将所有估计值放入数据框中。

dataframe = data.frame(results$t)

这样就可以了,但是您如何对其进行编码以确保列名获得正确的变量名?我是这样做的,它使列名“Var1”、“Var2”和“Var3”,但我希望它们是“拦截”、“重量”和“重量”,我知道我可以把它们改成这样;我想知道如何自动化它以确保列从启动时获得正确的名称。

【问题讨论】:

  • 您可能需要names(dataframe) &lt;- names(results$t0)
  • 根据您拥有的功能,t 是一个没有名称属性的矩阵,而 t0 即从 'rsq` 返回的具有names 并且您可以分配名称基于此

标签: r statistics-bootstrap


【解决方案1】:

在这里,我们可以使用 't0' 组件中的names 属性。当我们有模型对象(或任何对象)时,最好检查str 以了解每个组件的结构。这将有助于理解模型和组件

str(results)
#List of 11
# $ t0       : Named num [1:3] 34.9606 -3.3508 -0.0177
#  ..- attr(*, "names")= chr [1:3] "(Intercept)" "wt" "disp"
# $ t        : num [1:1000, 1:3] 34.1 37.2 37.3 33.8 34.7 ...
# $ R        : num 1000
# ...

输出是list,可以使用$[[ 提取list 组件(对于多个元素,[

t 元素是一个matrix,没有dimnames 属性,而t0 有“名称”属性。所以,如果我们想重命名转换后的data.framematrix,只需提取names

df1 <- data.frame(results$t)
names(df1) <- names(results$t0)

【讨论】:

    猜你喜欢
    • 2019-11-05
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 2019-05-07
    • 2013-07-24
    • 1970-01-01
    相关资源
    最近更新 更多