R BootStrap 数据框
R BootStrap Data Frame
# 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")
假设你 运行 这个 bootstrap 并得到 1000 个截距、wt 和 disp 变量的估计值,然后你想将所有估计值放入数据框中。
dataframe = data.frame(results$t)
这样就可以了,但是您如何对其进行编码以确保列名获得正确的变量名?我这样做了,它使列名成为 'Var1' 'Var2' 和 'Var3' 但我希望它们是 'Intercept' 'wt' 和 'weight'我知道我可以把它们改成这样;我想知道如何使其自动化以确保列从启动时获得正确的名称。
在这里,我们可以使用 '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
有 "names" 属性。所以,如果我们想重命名 data.frame
转换的 matrix
,只需提取 names
df1 <- data.frame(results$t)
names(df1) <- names(results$t0)
# 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")
假设你 运行 这个 bootstrap 并得到 1000 个截距、wt 和 disp 变量的估计值,然后你想将所有估计值放入数据框中。
dataframe = data.frame(results$t)
这样就可以了,但是您如何对其进行编码以确保列名获得正确的变量名?我这样做了,它使列名成为 'Var1' 'Var2' 和 'Var3' 但我希望它们是 'Intercept' 'wt' 和 'weight'我知道我可以把它们改成这样;我想知道如何使其自动化以确保列从启动时获得正确的名称。
在这里,我们可以使用 '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
有 "names" 属性。所以,如果我们想重命名 data.frame
转换的 matrix
,只需提取 names
df1 <- data.frame(results$t)
names(df1) <- names(results$t0)