You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言计算线性回归p值出现difftime对象报错,寻求解决方法

报错原因

该报错的核心是你直接将Date类型的sample_date作为线性回归的因变量传入lm()函数:

  • 提取回归系数时,R会隐式将Date类型转换为对应的数值时间戳计算,因此你代码中提取coefficients[2]的步骤不会报错
  • 调用summary()计算p值时,需要对回归残差(此时为difftime时间差类型)做平方运算,R原生没有定义difftime类型的^运算规则,因此触发报错。
解决方法

仅需在调用lm()时将sample_date转为数值类型即可,修改后的代码如下:

out <- data %>%
dplyr::group_by(sys_loc_code, chemical_name) %>%
  dplyr::summarise(
    n = n(),
    # 将sample_date转为数值再参与回归
    lm_fit = lm(as.numeric(sample_date)~result_numeric),
    Linear_Regression = lm_fit$coefficients[2],
    Linear_Regression_pvalue = summary(lm_fit)$coefficients[2,4],
    MK_fit = Kendall::MannKendall(result_numeric),
    MK_Tau = MK_fit$tau,
    MK_2sidedP = MK_fit$sl,
    MK_Score = MK_fit$S,
    MK_denominator = MK_fit$D,
    MK_varS = MK_fit$varS,
    # 清理中间变量
    .keep = "unused"
  )

补充说明:这里的回归系数Linear_Regression单位为天/单位浓度变化,和你原来直接用Date做因变量得到的系数数值完全一致,不会影响结果解释。同时代码中将lm和MannKendall的拟合结果先存为中间变量,避免重复拟合浪费算力。

内容的提问来源于stack exchange,提问作者melmo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:54:04