「加重」回帰と呼ばれるものを実行するために、以下のようなスクリプトを作成しました。
library(plyr)
set.seed(100)
temp.df <- data.frame(uid=1:200,
bp=sample(x=c(100:200),size=200,replace=TRUE),
age=sample(x=c(30:65),size=200,replace=TRUE),
weight=sample(c(1:10),size=200,replace=TRUE),
stringsAsFactors=FALSE)
temp.df.expand <- ddply(temp.df,
c("uid"),
function(df) {
data.frame(bp=rep(df[,"bp"],df[,"weight"]),
age=rep(df[,"age"],df[,"weight"]),
stringsAsFactors=FALSE)})
temp.df.lm <- lm(bp~age,data=temp.df,weights=weight)
temp.df.expand.lm <- lm(bp~age,data=temp.df.expand)
temp.df
では、各行に重みがあることがわかります。つまり、合計 1178 のサンプルがありますが、同じbp
との行でage
は、それらは 1 行にマージされ、weight
列に表示されます。
weight
関数でパラメーターを使用した後、データフレームが「展開」されlm
ている別のデータフレームと結果をクロスチェックします。temp.df
しかしlm
、2つのデータフレームの出力が異なることがわかりました。
weight
関数内のパラメーターを誤って解釈しましたか?lm
のように提示されたデータセットに対して回帰を適切に (つまり、データフレームを手動で拡張せずに) 実行する方法を誰かに教えてもらえますtemp.df
か? ありがとう。