首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:使用dynlm处理子集

R:使用dynlm处理子集
EN

Stack Overflow用户
提问于 2015-05-02 03:12:22
回答 1查看 425关注 0票数 0

我想使用R计算以下两个回归:

代码语言:javascript
复制
library("dynlm")

zooX = zoo(test[, -1])
lmx <- dynlm(d(Euribor3)~d(Ois3)+d(CDS)+d(Vstoxx)+d(log(omo))+d(L(Euribor3, 1)), data=zooX[1:16])
summary(lmx)

zooX = zoo(test[, -1])
lmx <- dynlm(d(Euribor3)~d(Ois3)+d(CDS)+d(Vstoxx)+d(log(omo))+d(L(Euribor3, 1)), data=zooX[17:31])
summary(lmx)

这两个模型之间唯一的区别是子集(第一个1:16和第二个17:31)。现在,这两个模型给出了以下输出:

代码语言:javascript
复制
Time series regression with "zoo" data:
Start = 3, End = 16

Call:
dynlm(formula = d(Euribor3) ~ d(Ois3) + d(CDS) + d(Vstoxx) + 
    d(log(omo)) + d(L(Euribor3, 1)), data = zooX[1:16])

代码语言:javascript
复制
Time series regression with "zoo" data:
Start = 19, End = 31

Call:
dynlm(formula = d(Euribor3) ~ d(Ois3) + d(CDS) + d(Vstoxx) + 
    d(log(omo)) + d(L(Euribor3, 1)), data = zooX[17:31])

从输出(系数、t值等未报告)可以看出,第一个模型使用了观察3:16。第二个模型使用观察19:31。由于变量的转换,两个子集之间出现了一个缺口,即第一个模型有End=16,第二个模型是Start=19,这意味着在回归过程中,观测值17和18不包括在内。现在我的问题是什么更有意义?要么让模型中的子集保持原样,要么通过两次观测(即15:31)将第二模型的子集移回,以缩小差距?然后,产出将变成:

代码语言:javascript
复制
Time series regression with "zoo" data:
Start = 17, End = 31

Call:
dynlm(formula = d(Euribor3) ~ d(Ois3) + d(CDS) + d(Vstoxx) + 
    d(log(omo)) + d(L(Euribor3, 1)), data = zooX[15:31])

正如你所看到的,第一个模型仍然有End=16,第二个模型现在有Start=17。非常感谢!

这是我的数据集:

代码语言:javascript
复制
Date    Euribor3    Ois3    Vstoxx  CDS omo
03.01.2005  2.154   2.089   14.47   17.938  344999
04.01.2005  2.151   2.084   14.51   17.886  344999
05.01.2005  2.151   2.087   14.42   17.95   333998
06.01.2005  2.15    2.085   13.8    17.95   333998
07.01.2005  2.146   2.086   13.57   17.913  333998
10.01.2005  2.146   2.087   12.92   17.958  333998
11.01.2005  2.146   2.089   13.68   17.962  333998
12.01.2005  2.145   2.085   14.05   17.886  339999
13.01.2005  2.144   2.084   13.64   17.568  339999
14.01.2005  2.144   2.085   13.57   17.471  339999
17.01.2005  2.143   2.085   13.2    17.365  339999
18.01.2005  2.144   2.085   13.17   17.214  347999
19.01.2005  2.143   2.086   13.63   17.143  354499
20.01.2005  2.144   2.087   14.17   17.125  354499
21.01.2005  2.143   2.087   13.96   17.193  354499
24.01.2005  2.143   2.086   14.11   17.283  354499
25.01.2005  2.144   2.086   13.63   17.083  354499
26.01.2005  2.143   2.086   13.32   17.348  347999
27.01.2005  2.144   2.085   12.46   17.295  352998
28.01.2005  2.144   2.084   12.81   17.219  352998
31.01.2005  2.142   2.084   12.72   17.143  352998
01.02.2005  2.142   2.083   12.36   17.125  352998
02.02.2005  2.141   2.083   12.25   17  357499
03.02.2005  2.144   2.088   12.38   16.808  357499
04.02.2005  2.142   2.084   11.6    16.817  357499
07.02.2005  2.142   2.084   11.99   16.798  359999
08.02.2005  2.141   2.083   11.92   16.804  355500
09.02.2005  2.142   2.08    12.19   16.589  355500
10.02.2005  2.14    2.08    12.04   16.5    355500
11.02.2005  2.14    2.078   11.99   16.429  355500
14.02.2005  2.139   2.078   12.52   16.042  355500
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-02 08:06:26

如果您通过data = zooX[...,]对自己进行细分,那么dynlm()没有看到完整的示例,因此必须丢失两个观察结果。如果您提供完整的data = zooX,然后分别设置end = 14start = 15,那么dynlm()首先可以将所有滞后/差异等全部模型框架组合在一起,然后选择所需的子集。在下面的示例中,我这样做,但是使用数据中可用的适当日期索引。

首先,我们将数据读入具有适当Date索引的Date系列:

代码语言:javascript
复制
library("dynlm")
zooX <- read.zoo(textConnection("Date    Euribor3    Ois3    Vstoxx  CDS omo
03.01.2005  2.154   2.089   14.47   17.938  344999
04.01.2005  2.151   2.084   14.51   17.886  344999
05.01.2005  2.151   2.087   14.42   17.95   333998
06.01.2005  2.15    2.085   13.8    17.95   333998
07.01.2005  2.146   2.086   13.57   17.913  333998
10.01.2005  2.146   2.087   12.92   17.958  333998
11.01.2005  2.146   2.089   13.68   17.962  333998
12.01.2005  2.145   2.085   14.05   17.886  339999
13.01.2005  2.144   2.084   13.64   17.568  339999
14.01.2005  2.144   2.085   13.57   17.471  339999
17.01.2005  2.143   2.085   13.2    17.365  339999
18.01.2005  2.144   2.085   13.17   17.214  347999
19.01.2005  2.143   2.086   13.63   17.143  354499
20.01.2005  2.144   2.087   14.17   17.125  354499
21.01.2005  2.143   2.087   13.96   17.193  354499
24.01.2005  2.143   2.086   14.11   17.283  354499
25.01.2005  2.144   2.086   13.63   17.083  354499
26.01.2005  2.143   2.086   13.32   17.348  347999
27.01.2005  2.144   2.085   12.46   17.295  352998
28.01.2005  2.144   2.084   12.81   17.219  352998
31.01.2005  2.142   2.084   12.72   17.143  352998
01.02.2005  2.142   2.083   12.36   17.125  352998
02.02.2005  2.141   2.083   12.25   17  357499
03.02.2005  2.144   2.088   12.38   16.808  357499
04.02.2005  2.142   2.084   11.6    16.817  357499
07.02.2005  2.142   2.084   11.99   16.798  359999
08.02.2005  2.141   2.083   11.92   16.804  355500
09.02.2005  2.142   2.08    12.19   16.589  355500
10.02.2005  2.14    2.08    12.04   16.5    355500
11.02.2005  2.14    2.078   11.99   16.429  355500
14.02.2005  2.139   2.078   12.52   16.042  355500
"), header = TRUE, format = "%d.%m.%Y")

然后,在中间选取观测的时间指标。您可以手动完成此操作,也可以基于zooX系列:

代码语言:javascript
复制
mid <- as.Date("2005-01-24")
mid <- time(zooX)[ceiling(nrow(zooX)/2)]

无论在哪种情况下,mid现在都表示2005-01-24的中间时间索引。然后我们可以建立我们的模型

代码语言:javascript
复制
f <- d(Euribor3) ~ d(Ois3) + d(CDS) + d(Vstoxx) + d(log(omo)) + d(L(Euribor3))
m1 <- dynlm(f, data = zooX, end = mid)
m2 <- dynlm(f, data = zooX, start = mid + 1)

第一项现在一直持续到2005-01-24:

代码语言:javascript
复制
Time series regression with "zoo" data:
Start = 2005-01-05, End = 2005-01-24

Call:
dynlm(formula = f, data = zooX, end = mid)

Coefficients:
   (Intercept)         d(Ois3)          d(CDS)       d(Vstoxx)     d(log(omo))  
    -0.0008859      -0.0125676       0.0001073       0.0012116       0.0124502  
d(L(Euribor3))  
    -0.4217354  

第二次从2005-01-25开始:

代码语言:javascript
复制
Time series regression with "zoo" data:
Start = 2005-01-25, End = 2005-02-14

Call:
dynlm(formula = f, data = zooX, start = mid + 1)

Coefficients:
   (Intercept)         d(Ois3)          d(CDS)       d(Vstoxx)     d(log(omo))  
    -0.0005556       0.2565964      -0.0027670      -0.0009140      -0.0152427  
d(L(Euribor3))  
    -0.5143080  

然而,我不确定我是否会建议一个6回归系数的模型只适合14或15个观测.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29997978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档