2015-09-14 1 views
1

Я хочу применить функцию к нескольким столбцам. Мои данные в dataframe data структурированы следующим образом:Применение функции к нескольким столбцам

col1 col2 col3 
x x x 
x x x 
x x x 

В частности, я хочу, чтобы применить тест ADF на временных рядах каждого столбца.

Я думал, что что-то подобное может работать:

f <- function(x) ur.df(x, type = "none", lags = 10, selectlags = "AIC")) 
sapply(data, f) 

Тем не менее, кажется, что проблема обращения с «переменной» столбца.

Как это делается правильно?

Обновление: Используйте это, чтобы создать три столбца со случайными значениями:

data = data.frame(matrix(rnorm(30), nrow=10)) 
+1

Какой пакет 'ur.df () 'от? –

+1

Я верю, что это от 'urca' – Whitebeard

+0

Не могли бы вы добавить некоторые фактические данные и ваш ожидаемый результат? Что такое ur.df и как именно выглядит ваша проблема? что пошло не так? – Cleb

ответ

1

Есть две проблемы с вашим кодом, насколько я могу видеть:

1) В определении функции, то есть одна скобка слишком много; это должно быть:

f <- function(x) ur.df(x, type = "none", lags = 10, selectlags = "AIC") 

2) Количество задержек слишком велико для данного измерения набора данных. Следующие работы (обратите внимание на различные размеры и лаги и для различных наборов данных, соответственно):

library(urca) 
data <- data.frame(matrix(rnorm(300), nrow=100)) 
f <- function(x) ur.df(x, type = "none", lags = 10, selectlags = "AIC") 
sapply(data,f) 

data2 = data.frame(matrix(rnorm(30), nrow=10)) 
f2 <- function(x) ur.df(x, type = "none", lags = 3, selectlags = "AIC") 
sapply(data2,f2) 

, который дает следующий результат (число, конечно, может отличаться, так как я не установил семя для rnorm):

$ X1 дополненной Дики-Фуллера Test Unit Root/Коинтеграционный Test значение тестовой статистики является: -6,0255

$ X2 дополненной Unit Дики-Фуллера Test Root/Тест Коинтеграционный вал у.е тестовой статистики является: -7,164

$ X3 дополненной Unit Дики-Фуллера Test Root/Коинтеграционный Test Значение тестовой статистики является: -5,0921

и

$ X1 дополненной Дики-Фуллера Test Unit Root/Коинтеграционный Test значение тестовой статистики является: -1,2124

$ X2 дополненной Unit Дики-Фуллера Test Root/Коинтеграционный испытания значение тестовой статистики является: -0,8715

$ X3 дополненной Дики-Фуллера Test Unit Root/Test Коинтеграционный Значение тестовой статистики является: -0,6598

+0

спасибо, что, наконец, сработал! – Christopher

+0

Добро пожаловать, рад, что он решил вашу проблему! – Cleb