2016-12-14 28 views
1

我有一个时间序列数据集,包含2列:x是“小时”连续温度数据,y是周期性采样响应数据(定期采样时间为每天上午5点,下午2点,晚上8点)。向后翻转

我想这样做2滞后接近分析在1个小时内通过步骤0-24小时数据

1)绘制所有我的Y数据(常数)与日益滞后X数据(移位X数据),即x在6pm对比y在6pm; x在下午5点对y在下午6点...... x(前一天的下午5点)vs y(下午6点)

2)与1)相同,但是累计移位,即“时间落后”累计滞后窗0 :24对x数据采用1的步长,并对y数据 进行测试,即x在6pm对y在6pm; (平均下午6点 - 下午5点)对比(下午6点)

我想绘制一个线性模型(lm)的“对于每个滞后情景(0-24),“y”与“移动x”并且制作具有滞后数的列的列表,p值为1m;和Adj。 LM的R2),所以我可以看到哪个滞后和“x”的累积平均滞后最能解释y数据。

本质上它与“cummean”或“rollapply”函数相同,但是工作方向相反,但我无法在R中找到任何这样做的内容。翻转的X数据不工作,因为数据的顺序需要保持,因为我需要在几个Y的x的滞后

我想这将需要一个'for'循环遍历所有的数据与“我”是滞后每个滞后

0滞后单次运行将是这样的:

#Creating dummy data 

x<- zoo(c(10,10.5,10.5,11,11.5,12,12.5,12,12,12.5,13,12.5,12,12,11.5,10.5), as.Date(1:16)) 
y<- zoo(c(rep("NA",3),40,rep("NA",3),45,rep("NA",3),50,rep("NA",3),40), as.Date(1:16)) 
z<-merge(x, y, all = FALSE) 
z 

reslt<-lm(z$y~z$x) 
a<-summary(reslt)$coefficients[2,4] 
b<-summary(reslt)$adj.r.squared 

ResltTable<-c(a,b) 
colnames(ResltTable)<-c("p-value","Adj. R^2") 

谢谢!

回答

0

这将倒退yx的值在我之前迭代i。请注意,在使用NA的地方使用“NA”这个问题。此外,该问题涉及每小时,但提供每日数据,所以我们显示每日滞后。 dyn$lm运行lm添加自动对齐。 (请注意,昨天向CRAN发布了一个新版本的dyn,它解决了R开发版本中R的变化)。我们运行这个延迟为0,1,2,...,10但是如果你有更多的数据可以将其运行到更高的值。如果您想在相反方向上滞后,请将-i替换为ilag。如果要使用从0到i的所有滞后,则使用lag(x, 0:-i)并适当调整cbind语句。

library(dyn) # also loads zoo 


x <- zoo(c(10,10.5,10.5,11,11.5,12,12.5,12,12,12.5,13,12.5,12,12,11.5,10.5), as.Date(1:16)) 
y <- zoo(c(rep(NA,3),40,rep(NA,3),45,rep(NA,3),50,rep(NA,3),40), as.Date(1:16)) 
z < -merge(x, y, all = FALSE) 
z 


k <- 10 # highest lag to consider 
tab <- t(sapply(0:10, function(i) { 
    fm <- dyn$lm(y ~ lag(x, -i), z) 
    s <- summary(fm) 
    cbind(i, coef(fm)[1], coef(fm)[2], coef(s)[2, 4], s$adj.r.squared) 
})) 
colnames(tab) <- c("Lag", "Intercept", "Slope", "P Value", "Adj R Sq") 
tab 

,并提供:

> tab 
     Lag Intercept  Slope P Value Adj R Sq 
[1,] 0 -13.750000 5.0000000 0.04653741 0.8636364 
[2,] 1 -2.542373 3.8983051 0.09717103 0.7226502 
[3,] 2 -1.944444 3.8888889 0.29647353 0.2424242 
[4,] 3 14.651163 2.5581395 0.49421946 -0.1162791 
[5,] 4 70.357143 -2.1428571 0.78770438 -0.7857143 
[6,] 5 53.571429 -0.7142857 0.87896228 -0.9285714 
[7,] 6 58.461538 -1.1538462 0.84557904 -0.8846154 
[8,] 7 57.884615 -1.1538462 0.84557904 -0.8846154 
[9,] 8 160.000000 -10.0000000  NaN  NaN 
[10,] 9 102.500000 -5.0000000  NaN  NaN 
[11,] 10 120.000000 -6.6666667  NaN  NaN