我想将一个函数应用于多个列。我在数据框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)
然而,处理&#34;变量&#34;似乎存在问题。列。
如何正确完成?
更新:使用此选项可创建具有随机值的三列:
data = data.frame(matrix(rnorm(30), nrow=10))
答案 0 :(得分: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增强Dickey-Fuller测试单位根/协整测试 检验统计量的值为:-6.0255
$ X2增强Dickey-Fuller测试单位根/协整测试 检验统计量的值为:-7.164
$ X3增强Dickey-Fuller测试单位根/协整测试 检验统计量的值为:-5.0921
和
$ X1增强Dickey-Fuller测试单位根/协整测试 检验统计量的值为:-1.2124
$ X2增强Dickey-Fuller测试单位根/协整测试 检验统计量的值为:-0.8715
$ X3增强Dickey-Fuller测试单位根/协整测试 检验统计量的值为:-0.6598