Использование lapply для извлечения Pvalue из теста ADF в R - PullRequest
0 голосов
/ 28 августа 2018

Это мой список:

mylist=dput(mylist)
list(list(c(30, 50, 35, 25, 45), c(40, 35, 35, 50, 45), c(40, 
20, 40, 50, 25), c(35, 45, 45, 45, 40), c(20, 30, 50, 45, 20), 
    c(40, 40, 50, 30, 40)), list(c(50, 50, 25, 40, 45, 40, 35, 
40, 45, 20), c(40, 35, 40, 40, 45, 30, 20, 50, 35, 25), c(20, 
30, 50, 35, 45, 40, 25, 50, 35, 50), c(20, 35, 30, 25, 40, 30, 
50, 20, 25, 35), c(40, 25, 25, 20, 50, 30, 50, 40, 35, 35), c(50, 
20, 45, 35, 50, 45, 30, 45, 35, 50)), list(c(45, 50, 25, 25, 
30, 25, 35, 35, 35, 30, 50, 50, 30, 30, 20), c(40, 20, 35, 35, 
50, 20, 25, 30, 35, 20, 40, 20, 45, 30, 20), c(50, 20, 25, 35, 
35, 30, 50, 25, 40, 35, 45, 45, 35, 45, 25), c(50, 50, 25, 35, 
25, 35, 20, 25, 45, 40, 35, 40, 50, 40, 30), c(50, 25, 20, 30, 
40, 45, 40, 50, 35, 40, 30, 45, 35, 50, 40), c(35, 50, 35, 45, 
25, 40, 50, 40, 50, 50, 50, 50, 35, 35, 40)), list(c(50, 50, 
50, 40, 20, 25, 50, 40, 50, 50, 45, 40, 30, 50, 35, 45, 50, 30, 
35, 45), c(45, 20, 25, 20, 25, 30, 20, 30, 45, 25, 50, 30, 30, 
25, 50, 45, 20, 45, 45, 50), c(20, 40, 50, 25, 40, 45, 25, 30, 
20, 20, 35, 45, 20, 40, 50, 45, 40, 40, 45, 35), c(40, 40, 20, 
25, 50, 50, 35, 45, 50, 45, 50, 35, 30, 40, 35, 45, 25, 45, 45, 
25), c(20, 25, 35, 45, 35, 40, 40, 35, 35, 40, 30, 30, 40, 50, 
25, 40, 30, 25, 20, 40)), list(c(35, 25, 45, 20, 25, 30, 30, 
35, 30, 40, 30, 20, 20, 30, 45, 40, 35, 35, 35, 35, 25, 45, 35, 
20, 50), c(50, 35, 30, 30, 35, 45, 45, 50, 25, 25, 40, 25, 50, 
45, 25, 30, 30, 25, 45, 45, 30, 20, 50, 30, 30), c(35, 40, 50, 
25, 40, 45, 30, 25, 50, 25, 35, 50, 50, 50, 25, 50, 20, 50, 40, 
25, 25, 35, 20, 20, 50), c(40, 35, 35, 40, 50, 35, 25, 40, 25, 
25, 30, 45, 50, 35, 20, 50, 20, 20, 45, 50, 40, 30, 35, 50, 45
), c(40, 25, 50, 50, 20, 50, 25, 50, 40, 30, 30, 50, 45, 45, 
40, 45, 20, 20, 45, 35, 45, 50, 40, 40, 35), c(40, 45, 35, 35, 
30, 45, 40, 40, 20, 50, 50, 45, 40, 40, 45, 45, 35, 40, 20, 30, 
35, 45, 30, 50, 25)))

В каждой позиции mylist[[1]][[1]],mylist[[1]][[2]],mylist[[3]][[1]],mylist[[1]][[4]],mylist[[1]][[5]],mylist[[1]][[6]] (до позиции mylist[[5]][[6]]) я хотел бы запустить тест АПД и извлечь его значение, используя функцию Lapply.

Для этого я создаю список результатов и запускаю следующий код:

resultlist<-vector(mode = "list", 5)
# library(  _enter_name_of_package )
resultlist <- lapply(mylist, 
                function(x) 
                lapply(x, function(y) rep(adf.test(mylist)$p.value(y), length(y))))

Это не работает. Это было бы фундаментально, чтобы сохранить код структуры lapply как выше.

Я смог извлечь среднее значение, выполнив это (даже давая мне повторные значения, это не проблема)

resultlist <- lapply(mylist, function(x) lapply(x, function(y) rep(mean(y), length(y))))

Имея в виду этот код, я хочу запустить тест ADF и извлечь значение.

1 Ответ

0 голосов
/ 28 августа 2018

В общем, если вы хотите применить функцию (здесь myfun) к каждому элементу списка списков (здесь mylist), то сделайте следующее:

lapply(mylist, lapply, myfun)

Это вернет результат списка списков, который можно преобразовать в вектор с помощью unlist.

Я не уверен, какую функцию adf.test вы используете для своего конкретного приложения, поскольку эта функция существует в обоих пакетах tseries и aTSA (и, возможно, в других). В любом случае, решение будет выглядеть примерно так:

lapply(mylist, lapply, function(x) adf.test(x)$p.value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...