我需要对多个时间序列进行平稳性测试。我使用ur.df
包中的urca
函数来完成它们。然后,我将每个adf
测试的输出存储为列表列表-因为每个测试本身都是列表。
我需要能够将所有参数存储起来,例如从输出到数据帧。有办法吗?
我知道我可以提取诸如@teststat
,@cval
之类的一些参数,但是如何通过lm
回归输出尽可能地提取所有参数使用broom
例如,如果这是ur.df
函数的输出
test1 <- ur.df(usage_1601_1612, type = "none", lags = 1, selectlags = "AIC")
test1
的内容如下所示
Test regression none
Call:
lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
Residuals:
Min 1Q Median 3Q Max
-6093.2 -1385.8 -100.9 1414.3 6962.8
Coefficients:
Estimate Std. Error t value Pr(>|t|)
z.lag.1 -0.004212 0.005191 -0.811 0.4177
z.diff.lag -0.126685 0.052161 -2.429 0.0156 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2351 on 362 degrees of freedom
Multiple R-squared: 0.01838, Adjusted R-squared: 0.01296
F-statistic: 3.39 on 2 and 362 DF, p-value: 0.03479
Value of test-statistic is: -0.8114
Critical values for test statistics:
1pct 5pct 10pct
tau1 -2.58 -1.95 -1.62
这是我运行的常规代码
urresultorigobjects <-
lapply(usagextsobjects, function(x) {
summary(ur.df(x, type = "none", lags = 1, selectlags = "AIC"))
})
这将生成列表urresultorigobjects
,其中包含对列表xts
中的每个usagextsobjects
对象进行平稳性测试的输出。
我希望能够捕获所有输出并将相关信息存储在数据帧中,以供基于代码的参考以用于下游处理。
任何建议将不胜感激。
答案 0 :(得分:0)
我不知道是否有更简单的方法,但我是这样管理的:
df.groupby(["id", "experiment"])["observation"].value_counts(normalize=True).unstack(fill_value=0).stack()