【问题标题】:Error with ARIMAARIMA 错误
【发布时间】:2016-07-20 03:13:29
【问题描述】:

我正在尝试在 .csv 文件中的时间数据集上运行 ARIMA。到目前为止,这是我的代码:

Oil_all <- read.delim("/Users/Jkels/Documents/Introduction to Computational
Statistics/Oil production.csv",sep="\t",header=TRUE,stringsAsFactors=FALSE)
Oil_all

文件如下:

year.mbbl
1     1880,30
2     1890,77
3    1900,149
4    1905,215
5    1910,328
6    1915,432
7    1920,689
8   1925,1069
9   1930,1412
10  1935,1655
11  1940,2150
12  1945,2595
13  1950,3803
14  1955,5626
15  1960,7674
16  1962,8882
17 1964,10310
18 1966,12016
19 1968,14104
20 1970,16690
21 1972,18584
22 1974,20389
23 1976,20188
24 1978,21922
25 1980,21732
26 1982,19403
27 1984,19608

代码:

apply(Oil_all,1,function(x) sum(is.na(x)))

结果:

[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

当我运行 ARIMA 时:

library(forecast)
auto.arima(Oil_all,xreg=year)

这是错误:

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  0 (non-NA) cases
In addition: Warning message:
In data.matrix(data) : NAs introduced by coercion

所以,我能够调用数据集并打印出来。但是,当我使用 apply 函数检查这些值是否存在时,我看到的都是 0,所以我知道出了点问题,这可能就是我收到错误的原因。我只是不确定错误的含义或如何在代码中修复它。

有什么建议吗?

【问题讨论】:

    标签: r dataset


    【解决方案1】:

    如果我的问题没看错,应该是这样的:

    Oil_all <- read.csv("myfolder/myfile.csv",header=TRUE) 
    ## I don't have your source data, so I tried to reproduce it with the data you printed
    Oil_all
       year value
    1  1880    30
    2  1890    77
    3  1900   149
    4  1905   215
    5  1910   328
    6  1915   432
    7  1920   689
    8  1925  1069
    9  1930  1412
    10 1935  1655
    11 1940  2150
    12 1945  2595
    13 1950  3803
    14 1955  5626
    15 1960  7674
    16 1962  8882
    17 1964 10310
    18 1966 12016
    19 1968 14104
    20 1970 16690
    21 1972 18584
    22 1974 20389
    23 1976 20188
    24 1978 21922
    25 1980 21732
    26 1982 19403
    27 1984 19608
    
    
    library(forecast)
    auto.arima(Oil_all$value,xreg=Oil_all$year)
    
    Series: Oil_all$value 
    ARIMA(3,0,0) with non-zero mean 
    
    Coefficients:
             ar1     ar2      ar3  intercept  Oil_all$year
          1.2877  0.0902  -0.4619  -271708.4      144.2727
    s.e.  0.1972  0.3897   0.2275   107344.4       55.2108
    
    sigma^2 estimated as 642315:  log likelihood=-221.07
    AIC=454.15   AICc=458.35   BIC=461.92
    

    【讨论】:

    • @ Nemesi 你好,所以我尝试了你的建议,由于某种原因,我现在收到一个新错误: ts(x) 中的错误:'ts' 对象必须有一个或多个观察结果跨度>
    • 谢谢,我想通了!
    • 嗨,Elle,作为一般建议:如果您提供您正在使用的数据,那么回答您问题的人可以为您提供更准确的建议。很高兴听到你成功了!
    【解决方案2】:

    你的导入应该是

    Oil_all<-read.csv("/Users/Jkels/Documents/Introduction to Computational Statistics/Oil production.csv")
    

    这就是为什么你的数据很奇怪。抱歉,我没有评论的声誉。我和 Nemesi 做了同样的事情,然后它就奏效了。我认为您正在尝试将 csv 作为制表符分隔文件导入。

    【讨论】:

    • 谢谢!我想通了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 2022-07-06
    • 2019-11-15
    • 2020-12-29
    • 2020-09-09
    • 2020-09-10
    相关资源
    最近更新 更多