我需要分析数据的一系列lm()输出的输出.表GROUP_BY回归:

library(data.table)
x <- c(1:5,66:70,101:110) 
y <- 31:50
g <- c( 1,1,1,1,1,1,1,1,1,1          
       ,2,2,2,2,2,2,2,2,2,2)

dt <- data.table(x,y,g)
mod <- dt[ , .(model = .(lm(x~y, .SD)))
           , by = g]

mod每组都有正确的型号g.现在,我想用残差向量 for each 组g创建一列:

mod[, resi := residuals(model)
    , by = g]

它似乎运行正常,但没有创建nem列resi:

> mod
       g    model
   <num>   <list>
1:     1 <lm[12]>
2:     2 <lm[12]>

为什么这不管用呢?

推荐答案

问题是您将残差()应用于list(model),而不是直接应用于模型对象.

mod[, resi := .(list(residuals(model[[1]])))
    , by = g]

# Or 

mod[, resi := lapply(model, residuals)]

#        g    model                                                                                    resi
#    <num>   <list>                                                                                  <list>
# 1:     1 <lm[12]>                    10.909091,  1.818182, -7.272727,-16.363636,-25.454545, 25.454545,...
# 2:     2 <lm[12]> -1.471465e-14, 6.482041e-15, 5.472051e-15, 4.101520e-15, 2.842011e-15, 1.526991e-15,...

R相关问答推荐

R gtsummary tBL_summary,包含分层和两个独立分组变量

使用Shiny组合和显示复制和粘贴的数据

如果行和列名以相同的开头,将矩阵值设置为0

如何删除多个.CSV文件的行

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

使用R中相同值创建分组观测指标

任意列的欧几里得距离

警告:lmdif:info = 0. nls. lm()函数的输入参数不正确

用黄土法确定区间

LOF中的插图短文字幕

打印XTS对象

具有重复元素的维恩图

R -使用矩阵reshape 列表

将摘要图添加到facet_WRAP gglot的末尾

如何阻止围堵地理密度图?

使用函数从R中的列中删除标高

R将函数参数传递给ggploy

组合名称具有模式的列表的元素

如何使用list_rind在列表中保留已命名但不包含第0行的记录?

我有2011-2022年的年度数据.如何计算最低年份和最高年份之间的差额?