xtsオブジェクトXがあります
dput(x)
structure(c(111.09, 110.95, 110.71, 110.79, 110.72, 110.83, 110.75,
110.74, 110.85, 110.95, 110.98, 120.99, 121.27, 120.61, 120.55,
120.76, 120.86, 120.82, 120.88, 121.1, 120.86, 120.76, 111.29,
111.08, 110.95, 110.88, 111.05, 111.17, 111.17, 111.17, 111.2,
111.19, 111.28), .Dim = c(11L, 3L), .Dimnames = list(NULL, c("val1",
"val2", "val3")), index = structure(c(1356987540, 1357160340,
1357246740, 1357333140, 1357592340, 1357678740, 1357765140, 1357851540,
1357937940, 1358197140, 1358283540), tzone = "GMT", tclass = c("POSIXct",
"POSIXt")), .indexCLASS = c("POSIXct", "POSIXt"), .indexTZ = "GMT", tclass = c("POSIXct",
"POSIXt"), tzone = "GMT", class = c("xts", "zoo"))
そのデータは次のようになります
val1 val2 val3
2012-12-31 20:59:00 111.09 120.99 111.29
2013-01-02 20:59:00 110.95 121.27 111.08
2013-01-03 20:59:00 110.71 120.61 110.95
2013-01-04 20:59:00 110.79 120.55 110.88
2013-01-07 20:59:00 110.72 120.76 111.05
2013-01-08 20:59:00 110.83 120.86 111.17
2013-01-09 20:59:00 110.75 120.82 111.17
2013-01-10 20:59:00 110.74 120.88 111.17
2013-01-11 20:59:00 110.85 121.10 111.20
2013-01-14 20:59:00 110.95 120.86 111.19
2013-01-15 20:59:00 110.98 120.76 111.28
そして、を使用して各val(val1、val2、val3)間の相関を取得できます。cor(x, method="pearson")
同様の行列が必要ですが、3つのval間の相関の代わりに、線形回帰係数が必要です。私は自分のやりたいことを正確に実行する関数を作成しましたが、Rは私にとって新しいものであり、非常にC /C++の方法で作成したように感じます。誰かが私がよりRに似たソリューションを作成するのを手伝ってくれることを願っています(多分applyメソッドの1つを使用するか、このような操作を行う方法を理解するのに役立つ何かへのリンクさえ使用します)。
私が作成した関数は次のようになります
getLmFromValues <- function( vals ) {
#create an empty data.frame
df <- data.frame( matrix(0, nrow = ncol(vals), ncol = ncol(vals) ) )
colnames(df) <- colnames(vals)
rownames(df) <- colnames(vals)
for( outer in 1:ncol(vals) ) {
for ( inner in 1:ncol(vals) ) {
if ( inner == outer ) {
df[outer,inner] <- NA #could also be 1
}
else {
#get linear model of vectors and store the slope coeficient
df[outer, inner] <- coef( lm( vals[,outer] ~ vals[,inner] ) )[2]
}
}
}
return( df )
}
私の関数からの出力は次のようになります
val1 val2 val3
val1 NA 0.3015123 0.6071429
val2 0.8122685 NA 0.7978208
val3 0.6384838 0.3114367 NA