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

如何在R中按容器和站点分组绘制logistic回归曲线?解决NA参数错误

解决drm函数分组拟合的NA错误问题

问题根源

你遇到的Error in Container:Site : NA/NaN argument,是因为数据中Container或Site变量存在缺失值——当用Container:Site生成交互分组时,缺失值会导致分组项出现NA,而drm的curveid参数不允许包含NA值。

分步解决方案

  1. 检查并清理缺失值
    先确认数据中是否存在缺失:

    # 查看Container和Site的缺失情况
    table(is.na(pupation_rates$Container))
    table(is.na(pupation_rates$Site))
    

    清理含缺失值的行:

    # 基础R写法
    pupation_rates_clean <- na.omit(pupation_rates)
    # 若使用tidyverse
    library(dplyr)
    pupation_rates_clean <- pupation_rates %>%
      filter(!is.na(Container), !is.na(Site))
    
  2. 创建明确的分组因子
    把Container和Site合并为一个独立的分组变量,替代直接使用交互项,避免潜在语法问题:

    pupation_rates_clean$Group <- interaction(pupation_rates_clean$Container, 
                                              pupation_rates_clean$Site, 
                                              sep = "_")
    
  3. 重新拟合模型
    使用新的Group变量作为curveid参数:

    library(drc)
    # logistic回归曲线拟合
    model <- drm(Pupae ~ Day, fct = L.3(), data = pupation_rates_clean,
                 curveid = Group)
    summary(model)
    plot(model, log="", main = "Logistic Function by Container & Site")
    

额外提示

  • 若Pupae是计数型数据(非比例值),可根据研究目标检查三参数logistic模型的适用性,或尝试带泊松/负二项分布的广义模型。
  • 绘图时可自定义分组样式,提升可读性:
    group_count <- length(unique(pupation_rates_clean$Group))
    plot(model, log="", main = "Logistic Function by Container & Site",
         col = 1:group_count, lty = 1:group_count)
    legend("topleft", legend = unique(pupation_rates_clean$Group),
           col = 1:group_count, lty = 1:group_count)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:02:25