R:可变长度不同

时间:2015-03-28 21:27:50

标签: r variables

我想在差分自变量和一个非差分变量上回归差分因变量。 我在R中尝试了以下几行:

xt <- ts(xx)
yt <- ts(yy)
zt <- ts(zz)
bt <- ts(bb) 
mt <- ts(mm) 
xtd <- diff(xt) 
ytd <- diff(yt) 
ztd <- diff(zt) 
btd <- diff(bt) 
axx <- ts.intersect(xtd, ytd, ztd, btd, mt) 
reg1 <- lm(xtd~ytd+ztd+btd+mt, axx)
summary(reg1)

如果没有命令ts.intersect(),则会弹出一条错误消息,表示变量mt的变量长度不同。这是有道理的,因为它没有区别。我的问题是: i)这是处理不同变量长度的正确方法吗?和ii)有更有效的方法吗?非常感谢提前

Date    xx  yy  zz  bb  mm
1   03.01.2005  0.065   0.001   14.4700 17.938  345001.0
2   04.01.2005  0.067   0.006   14.5100 17.886  345001.0
3   05.01.2005  0.064   -0.007  14.4200 17.950  334001.0
4   06.01.2005  0.065   -0.005  13.8000 17.950  334001.0
5   07.01.2005  0.060   -0.006  13.5700 17.913  334001.0
6   10.01.2005  0.059   -0.007  12.9200 17.958  334001.0
7   11.01.2005  0.057   -0.009  13.6800 17.962  334001.0
8   12.01.2005  0.060   -0.005  14.0500 17.886  340001.0
9   13.01.2005  0.060   -0.004  13.6400 17.568  340001.0
10  14.01.2005  0.059   -0.005  13.5700 17.471  340001.0
11  17.01.2005  0.058   -0.005  13.2000 17.365  340001.0
12  18.01.2005  0.059   -0.005  13.1700 17.214  340001.0
13  19.01.2005  0.057   -0.006  13.6300 17.143  354501.0
14  20.01.2005  0.057   -0.007  14.1700 17.125  354501.0
15  21.01.2005  0.056   -0.007  13.9600 17.193  354501.0
16  24.01.2005  0.057   -0.006  14.1100 17.283  354501.0
17  25.01.2005  0.058   -0.006  13.6300 17.083  354501.0
18  26.01.2005  0.057   -0.006  13.3200 17.348  348001.0
19  27.01.2005  0.059   -0.005  12.4600 17.295  353001.0
20  28.01.2005  0.060   -0.004  12.8100 17.219  353001.0
21  31.01.2005  0.058   -0.004  12.7200 17.143  353001.0
22  01.02.2005  0.059   -0.003  12.3600 17.125  353001.0
23  02.02.2005  0.058   -0.003  12.2500 17.000  357501.0
24  03.02.2005  0.056   -0.008  12.3800 16.808  357501.0
25  04.02.2005  0.058   -0.004  11.6000 16.817  357501.0
26  07.02.2005  0.058   -0.004  11.9900 16.798  357501.0
27  08.02.2005  0.058   -0.003  11.9200 16.804  355501.0
28  09.02.2005  0.062   0.000   12.1900 16.589  355501.0
29  10.02.2005  0.060   0.000   12.0400 16.500  355501.0
30  11.02.2005  0.062   0.002   11.9900 16.429  355501.0

1 个答案:

答案 0 :(得分:0)

简短的回答是肯定的,你需要使用ts.intersect()当你有一些差异的变量而一些不是。

你可以稍微清理一下代码,这样你就不会重复这么多行了,但是(特别是如果这些都是你的变量那么它并没有什么区别。

例如,您可以通过ts.d=ts(d[2:6])一步将所有列重新编码为time.series。