【问题标题】:linear regression by multiple condition in dplyr packagedplyr 包中的多条件线性回归
【发布时间】:2017-11-17 11:23:12
【问题描述】:

假设我有 20 辆车,每辆车都进行了 10 次测试,在每次测试中,根据行驶的路线距离定义了多个路段。

我想为每个 veh_id+test_id+segment 组合的高度与路线距离的回归得到简单的线性回归斜率。

在 R 中使用 dplyr 包,我认为这样的东西应该可以工作:

dataset <- dataset %>%
group_by (veh_id, test_id, segment) %>%
do(data.frame(mod = coef(lm(height ~ distance,data = .))[2])) %>%
left_join(dataset,.)

但是报错为:

lm.fit 中的错误(x,y,偏移量 = 偏移量,奇异值.ok = 奇异值.ok,...) : 0 (non-NA) 案例

我回顾了我的数据,“高度”变量有一些 NA...

有没有办法通过排除那些高度的NA来执行代码?

【问题讨论】:

  • 在 lm 函数中添加 na.action=na.exclude

标签: r dplyr regression coefficients


【解决方案1】:

避免在lm() 函数中排除NAs。相反,好的做法是将清洁步骤与建模步骤分开。例如,您可以使用 tidyr 包中的 drop_na() 函数从数据集中删除包含缺失值的行。下面我以内置的airquality数据集为例:

library(tidyr)
dataset <- airquality %>% drop_na()

> nrow(airquality) - nrow(dataset)
[1] 42

【讨论】:

    猜你喜欢
    • 2014-11-03
    • 2019-10-20
    • 1970-01-01
    • 2016-11-07
    • 2021-08-21
    • 1970-01-01
    • 2017-10-02
    • 2014-08-20
    • 2010-11-23
    相关资源
    最近更新 更多