Есть ли способ составить список результатов, полученных в результате повторного процесса? - PullRequest
1 голос
/ 03 мая 2019

Я использовал тест ADF в повторном процессе и хотел бы перечислить статистику теста, полученную в одном списке / векторе, чтобы представить ее в гистограмме.

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

x=0
  repeat{
    B=adf.test(((arima.sim(model=list(ar=c(1.587,-0.6914),ma=c(-1.525,0.7327)),sd=sqrt(0.03204),n=50))),alternative=c("stationary"),k=5)
    TestStat1=(B$statistic)
    ADF_LIST=append(adf_list, TestStat1, after = length(TestStat1))
    x=x+1
    if(x==10){
      break
    }
  }

1 Ответ

0 голосов
/ 03 мая 2019

В дополнение к моему комментарию выше, это то, что я бы сделал (я полагаю, adf.test от tseries)

set.seed(2018)
library(tseries)
adf_list <- replicate(10, adf.test(
    arima.sim(
        model = list(ar = c(1.587, -0.6914), ma = c(-1.525, 0.7327)),
        sd = sqrt(0.03204),
        n = 50))$statistic,
    simplify = F)
adf_list
#[[1]]
#Dickey-Fuller
#    -2.972603
#
#[[2]]
#Dickey-Fuller
#    -2.317256
#
#[[3]]
#Dickey-Fuller
#    -3.235755
#
#[[4]]
#Dickey-Fuller
#     -3.89434
#
#[[5]]
#Dickey-Fuller
#    -1.897195
#
#[[6]]
#Dickey-Fuller
#     -3.15147
#
#[[7]]
#Dickey-Fuller
#    -2.723526
#
#[[8]]
#Dickey-Fuller
#     -2.07447
#
#[[9]]
#Dickey-Fuller
#    -2.193647
#
#[[10]]
#Dickey-Fuller
#    -2.197571

Как видите, replicate(n, expr, simplify = F) неоднократно оценивает expr n раз и сохраняет результаты в list.Нет необходимости вручную увеличивать / добавлять list.

Если вы предпочитаете массив, вы можете удалить simplify = F (или установить simplify = T, который является значением по умолчанию).


Обновить

Чтобы показать гистограммуВы могли бы сделать что-то вроде этого (я увеличил количество симуляций до 100 и использую ggplot2 для построения графика)

library(tidyverse)
set.seed(2018)
replicate(100, adf.test(
    arima.sim(
        model = list(ar = c(1.587, -0.6914), ma = c(-1.525, 0.7327)),
        sd = sqrt(0.03204),
        n = 50))$statistic) %>%
    data.frame(B = .) %>%
    ggplot(aes(B)) +
    geom_histogram(bins = 40)

enter image description here

...