【问题标题】:How to correct efp() error "invalid type (list) for variable 'data'"?如何更正 efp() 错误“变量‘数据’的类型(列表)无效”?
【发布时间】:2014-10-19 13:22:55
【问题描述】:

我有一个大 (>100,000) 单列浮点时间序列数据。我想找到数据中关于时间的结构变化(在我的案例索引中)。为了做到这一点,我正在使用 R strucchange 包。但我遇到了错误。我希望用我的数据集生成以下类型的图

这是我正在使用的代码:

data = read.csv("tst1.csv", header = FALSE)
library(strucchange)

## fit, visualize and test OLS-based CUSUM test
## with a Cramer-von Mises functional
ocus <- efp(data ~ 1, type = "OLS-CUSUM")
sctest(ocus, functional = "meanL2")

## estimate breakpoints
bp <- breakpoints(data ~1)
summary(bp)

plot.ts(data)
lines(bp)
lines(fitted(bp, type = "mean"), col = 2)

我收到以下错误消息:

Loading required package: zoo

Attaching package: ‘zoo’

The following objects are masked from ‘package:base’:

as.Date, as.Date.numeric

Loading required package: sandwich
Error in model.frame.default(formula, data = data) : 
invalid type (list) for variable 'data'
Calls: efp -> model.frame -> model.frame.default
Execution halted

我的数据 tst1.csv 看起来像:

0.6
0.78
0.54
0.96
0.43
1.43
1.03
0.83
0.68
3.23
3.09
2.87
...

非常感谢任何帮助。

谢谢

【问题讨论】:

  • 您在哪里确切收到错误消息?我会假设打电话给efp()str(data) 的输出是什么?
  • @StephanKolassa,当我使用 Rscript test.R 在终端上运行代码时,我收到了此错误消息。我是 R 的新手。我不知道如何获取 str(data)。但是,当我在 R 控制台上输入数据时,我得到一个数据框。谢谢

标签: r machine-learning time-series sampling


【解决方案1】:

那是因为数据是一个数据框。为了正确地将其放入公式中,请尝试以下操作:

ocus <- efp(V1 ~ 1, data=data,type = "OLS-CUSUM")

【讨论】:

  • @coulminer_我试过你的代码,我得到了以下错误:加载所需的包:动物园附加包:'zoo'以下对象被'package:base'屏蔽:as.Date,as.Date .nu​​meric 加载所需的包:基于夹层 OLS 的 CUSUM 测试,平均 L2 范数数据:ocus S0 = 307.4023,p 值 = 0.005 model.frame.default(公式,数据 = 数据)中的错误:变量的无效类型(列表) 'data' 调用:断点 ... breakpoints.formula -> model.frame -> model.frame.default 执行停止 ----------跨度>
  • 那是因为您再次在公式中使用名为“数据”的数据框,其中需要一个变量。解决方案与前一种情况相同:在估计断点的部分也用 data$V1 替换数据,如下所示:bp
猜你喜欢
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 2018-12-01
  • 2018-01-20
  • 1970-01-01
  • 2021-02-14
相关资源
最近更新 更多