Как рассчитать доверительный интервал с помощью «функции начальной загрузки» в R - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь вычислить доверительный интервал в R. Из-за некоторых особых причин мне приходится делать это с помощью функций в пакете «bootstrap» (что означает, что я не могу использовать функции в пакете «boot»).)

Вот мой код.

И я пытаюсь вычислить коэффициент корреляции Пирсона, а затем применить метод Bootstrap (с B = 100), чтобы получитьоценка коэффициента корреляции.Но я не знаю, как построить 95-процентные доверительные интервалы.

library(bootstrap) 
data('law')

set.seed(1)
theta <- function(ind) {
  cor(law[ind, 1], law[ind, 2], method = "pearson")
  }
law.boot <- bootstrap(1:15, 100, theta) 
# sd(law$thetastar)
percent.95 <- function(x) {
  quantile(x,  .95)
  }
law.percent.95 <- bootstrap(1:15, 100, theta, func=percent.95)

Извините, если я не давал себе четких указаний или помечал неправильные теги.Дважды извините за то, что не создали набор данных (теперь он предоставляется), и поблагодарите профессора Роланда за указание на это.Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Существуют различные способы расчета КИ для оценки начальной загрузки (см. к этой статье в Википедии, например .

. Самый простой способ - рассказать о 2.5% и 97.5%квантили из коэффициентов начальной загрузки (Percentile Bootstrap в статье в Википедии):

quantile(law.boot$thetastar, c(0.025, 0.975))
#      2.5%     97.5% 
# 0.4528745 0.9454483 

Основная Bootstrap будет рассчитываться как

2 * mean(law.boot$thetastar) - quantile(law.boot$thetastar, c(0.975, 0.025))
#     97.5%      2.5% 
# 0.5567887 1.0493625
0 голосов
/ 29 ноября 2018

Вы можете сделать это вручную.

library(bootstrap) 
data('law')
names(law) <- tolower(names(law))

set.seed(1)
theta <- function(ind) cor(law[ind, 1], law[ind, 2], method = "pearson")
law.boot <- bootstrap(1:15, 1000, theta) 

ci1 <- qnorm(p=c(.025, .975), 
            mean=mean(law.boot$thetastar), 
            sd=sd(law.boot$thetastar))

Дает:

> ci1
[1] 0.5055894 1.0268053

По сравнению с начальной загрузкой с нуля:

set.seed(1)
FX <- function(x) with(x, cor(lsat, gpa))
boot <- replicate(1000, FX(law[sample(nrow(law), round(nrow(law)), 
                                     replace=TRUE), ]))

ci2 <- qnorm(p=c(.025, .975), 
            mean=mean(boot), 
            sd=sd(boot))

Дает:

> ci2
[1] 0.5065656 1.0298412

Таким образом ci1 и ci2 кажутся похожими.

Однако, обратите внимание: Я адаптировал загрузчик для 1000 повторений.Только с 100 повторениями разница, естественно, несколько больше.

Примечание 2: В моем ответе КИ считаются заданными.Однако, вероятно, более уместно использовать процентили.См. ответ Тотала как их получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...