私は 2 列の時系列データセットを持っています: x は「毎時」の連続温度データで、y は定期的にサンプリングされた応答データ (毎日午前 5 時、午後 2 時、午後 8 時に取得された定期的なサンプル) です。
データを分析するために2つのラグアプローチを行いたい
1) すべての私の y データ (定数) 対徐々に遅れる x データ (x データを 1 時間刻みで 0-24 時間ずらす) をプロットします。つまり、午後 6 時の x と午後 6 時の y です。x 午後 5 時 vs y 午後 6 時 ...... x(前日の午後 5 時) vs y (午後 6 時)
2) 1) と同じですが、累積シフト、つまり x データに対して 1 のステップで 0:24 の「時間的に逆方向」の累積ラグ ウィンドウを使用し、y データに対してテストします。つまり、午後 6 時の x と午後 6 時の y です。x (午後 5 時と午後 6 時の平均) 対 y 午後 6 時 ...... x (前日の午後 6 時から午後 5 時までの平均) 対 y (午後 6 時)
各ラグシナリオ(0〜24)の「y」と「シフトされたx」の線形モデル(lm)をプロットし、ラグの数、lmのp値の列を含むテーブルを作成します。と調整します。lm の R2) で、"x" のどのラグと累積平均ラグが y データを最もよく説明しているかを確認できます。
基本的には「cummean」または「rollapply」関数と同じですが、逆方向に機能しますが、これを行う R には何も見つかりませんでした。X データの反転は機能しません。データの順序を維持する必要があるためです。いくつかの y に対して x のラグが必要なためです。
「i」がラグである各ラグですべてのデータを実行するには、「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")
ありがとう !