R: Рассчитать BCa по вектору результатов начальной загрузки - PullRequest
1 голос
/ 28 марта 2019

Я ищу способ расчета скорректированных ускоренных доверительных интервалов в R с использованием вектора результатов начальной загрузки (которые являются оценками начальной скорости роста населения - лямбда). Тем не менее, пакеты, которые я нахожу, либо созданы для использования определенных типов объектов (как в «загрузочном» пакете), либо не рассчитывают доверительные интервалы типа BCa. Причина, по которой я загрузил результаты с помощью цикла for, а затем сохранил результаты в векторе, заключается в том, что для каждой повторной выборки начальной загрузки я сначала получаю матрицу результатов 80 x 33, которая определяет параметры для каждой группы населения в каждом году выборки, что, в свою очередь, определить лямбда для каждой популяции. Насколько я могу судить, это было бы громоздко в загрузочном пакете и было легко программировать как цикл for. Фактический набор функций довольно сложен и не может быть включен сюда.

Я пытался использовать этот вопрос в качестве руководства для фальсификации «загрузочного» объекта, но он не работал: Как использовать предварительно загруженные данные для получения доверительного интервала BCa? .

Допустим, у меня есть наблюдаемая оценка лямбда

lambda = 1.18

и что мы моделируем вектор загрузочных оценок

library(fGarch)
lambdaBS = rsnorm(999,mean=lambda-0.04,sd=0.11,xi=2.5)
plot(density(lambdaBS))

который искажен и смещен вправо.

Я надеюсь, что, используя эту информацию, существует существующая в настоящее время функция, которая вычисляет доверительные интервалы BCa, иначе можно легко запрограммировать функцию для этого. Пока я не обнаружил, что это так.

1 Ответ

0 голосов
/ 29 марта 2019

Как и в случае с R, где некоторые утилиты распространяются повсеместно между пакетами, было простое решение, но мне потребовались часы поиска, поэтому я отвечу на свой вопрос для всех, кто можетискал что-то подобное.

Используя данные примера в вопросе, функция bca в пакете "coxed" R дает скорректированные смещения и ускоренные доверительные интервалы для вектора результатов начальной загрузки.И мы можем сравнить их с другими доверительными интервалами.

library(fGarch)
library(coxed)

set.seed(15438)

#simulate bootstrap statistics
lambdaBS = rsnorm(9999,mean=lambda-0.04,sd=0.11,xi=2.5)

#bias-corrected and accelerated
bca(lambdaBS)

1.002437 1.452525

#confidence intervals using standard error (inappropriate)
c(lambda-(sd(lambdaBS)*2),lambda+(sd(lambdaBS)*2))

0.9599789 1.4000211

#percentile confidence intervals
quantile(lambdaBS, c(0.025,0.975))

    2.5%     97.5% 
0.9895892 1.4016528 

Кажется, это работает хорошо.Я не уверен, как он исправляет смещение, не требуя начальной оценки рассматриваемой статистики, но я еще не читал статью, на которой основан этот метод.

Другое моделирование показывает, как это сравнивается с результатами, использующими boot и boot.ci.

library(boot)

#generate data
set.seed(12345)
dat = rsnorm(500,mean=1.6,sd=0.5,xi=3.0)

#bootstrap the median
meanfun = function(x,id){ mean(x[id])}
test = boot(data=dat,R=999,statistic=meanfun)

#BCa using boot.ci
boot.ci(test,type="bca")

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 999 bootstrap replicates

CALL : 
boot.ci(boot.out = test, type = "bca")

Intervals : 
Level       BCa          
95%   ( 1.537,  1.626 )  
Calculations and Intervals on Original Scale


#BCa using bca function from coxed package
bca(test$t)

 1.536888 1.625524

И в этом случае обе функции дают одинаковые результаты.

...