R BootStrap Кадр данных - PullRequest
       59

R BootStrap Кадр данных

1 голос
/ 26 мая 2020
# 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 оценок переменных intercept, wt и disp, а затем вы хотите поместить все оценки во фрейм данных.

dataframe = data.frame(results$t)

Это будет сделать это, но как вы его закодируете, чтобы убедиться, что имена столбцов имеют правильные имена переменных? Я сделал это таким образом, и он делает имена столбцов 'Var1' 'Var2' и 'Var3', но я бы сделал sh, чтобы они были 'Intercept' 'wt' и 'weight', и я знаю, что могу изменить их на это ; Мне интересно, как автоматизировать его, чтобы столбцы получали правильные имена при загрузке.

1 Ответ

1 голос
/ 26 мая 2020

Здесь мы можем использовать атрибут names из компонента 't0'. Когда у нас есть объекты модели (или любые объекты), лучше проверить 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)
...