私がしたいこと
複数のサイトで値を同時に観測したデータ フレームがあります。これらの観測は複数回繰り返されます (気象観測所のグループを考えてみてください。すべての気象観測所が 1 年間、毎日、毎正時に温度を測定しています)。
月ごとのサブセットで、各サイトでの測定値間の相関関係を取得したいと思います。R-squared を取得することに特に興味があります。つまり、サイト 1: サイト 2、サイト 1: サイト 3 など、1 月、2 月、3 月などの R 二乗です。
ここまでの話
いくつかのデータを偽造しましょう:
df <- data.frame("B" = c(rep("January",20),rep("February",20)),
"D" = c(seq(1,20,1),seq(1,20,1)),
"site1" = c(seq(1,20,1),seq(0.1,2,0.1)),
"site2" = c(seq(2,40,2),seq(0.2,4,0.2)),
"site3" = c(seq(3,60,3),seq(0.3,6,0.3)))
ここで、多数のサイトがあるため (実行時までサイトの数はほとんどわかりません)、これらを長い data.frame に溶かしてみましょう。
require(reshape)
df.melt <- melt(data = df,
id.vars = c("B","D"),
values = c("site1","site2","site3"))
行き詰まるところ
nlme
パッケージを試してみようと思いました。groupedData
オブジェクトを作成することから始めます。
require(nlme)
df.melt.grp <- groupedData(value ~ value | variable,
data = df.melt,
inner = ~ B)
私がここで言っていることはvalue
、 に依存しvalue
、 (融解後のサイトである) によってグループ化されvariable
、さらに月ごとにサブセット化されていると考えていると思います。
次にlmlist
、回帰を取得するために適用しようとします
lm.model <- lmList(object = df.melt.grp)
残念ながら、これの要約を尋ねると、相互相関または月ごとのサブセット化が得られていないように見えます。
> summary(lm.model)
Call:
Model: value ~ value | variable
Data: df.melt.grp
Coefficients:
(Intercept)
Estimate Std. Error t value Pr(>|t|)
site1 5.775 2.163481 2.669309 8.680907e-03
site2 11.550 2.163481 5.338618 4.658854e-07
site3 17.325 2.163481 8.007927 9.612311e-13
Residual standard error: 13.68306 on 117 degrees of freedom
質問
一連の「for」ループに頼らずに、月ごとに異なるサイトでの測定値間の相関 (r-squared を使用して測定) を取得するにはどうすればよいですか?