我使用列grp
下方列出的权重对不同组(保存在wght
中)进行线性回归。一切正常。
by_time_frame <- group_by(df, grp)
weighted_model <- do(by_time_frame, tidy(lm(y~x, weights=wght, data=.)))
但是,我无法在散点图上绘制每组的(加权)回归线:
xyplot(y ~ x | grp, data=df, main='Original Data'),
panel = function(x, y) {
panel.xyplot(x, y)
panel.abline(summary(weighted_model))
}
)
答案 0 :(得分:1)
考虑以R为基础的by
建立分组回归:
wgt_models <- by(df, df$grp, function(sub_df)
lm(y ~ x, weights = wght, data = sub_df)
)
然后,使用for
遍历列表以添加panel.abline
层,而无需使用summary()
:
xyplot(y ~ x | grp, data= df, main = 'Original Data'),
panel = function(x, y) {
panel.xyplot(x, y)
for (m in wgt_models) panel.abline(m)
}
)
可能的是,您也可以在内部调用by
,因为它也是一个循环,尤其是应用家庭循环:
xyplot(y ~ x | grp, data= df, main = 'Original Data'),
panel = function(x, y) {
panel.xyplot(x, y)
by(df, df$grp, function(sub_df)
panel.abline(lm(y ~ x, weights = wght, data = sub_df))
)
}
)