如何向xyplot的构面添加回归线

问题描述 投票:0回答:1

我使用列在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))
           }
       )

xyplot

r plot linear-regression
1个回答
0
投票

考虑基数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))
        )
     }
)
© www.soinside.com 2019 - 2024. All rights reserved.