微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅排除NA值而不排除R中lm中的整行?

如何解决仅排除NA值而不排除R中lm中的整行?

如果我有一个如下所示的数据集,查看花园不同栖息地中蜘蛛的物种丰富度。

  'data.frame': 6 obs. of  5 variables:
 $ ID           : int  1 2 3 4 5 6
 $ species_count: num  10 13 15 17 22 9
 $ habitat_type : Factor w/ 2 levels "wall","tree": 1 2 1 2 1 2
 $ wall_height  : num  153 NA 160 NA 170 NA
 $ tree_diameter: num  NA 48 NA 52 NA 71

我想创建一个species_count 作为因变量,habitat_typewall_heighttree_diameter 作为自变量的 lm,但是 NA 很棘手。>

lm.1 <- lm(species_count ~ habitat_type + wall_height + tree_diameter,data = DF,na.action = na.exclude)

抛出以下错误

对比错误tmp,value = contr.funs[1 + isOF[nn]]) : 对比只能应用于具有 2 个或更多水平的因素

作为 na.excludena.omit 删除整行。

使用:

DF$wall_height <- na.exclude(DF$wall_height)

DF$tree_diameter <- na.exclude(DF$tree_diameter)

只是重复值,将 tree_diameter 值赋予 wall,反之亦然,如下所示:

DF[1,]
  ID species_count habitat_type wall_height tree_diameter
1  1            10         wall         153            48

有没有办法只省略 NA 值,同时保留行中的其余信息,还是必须使用单独的线性模型?

在此先感谢您的帮助,并希望我在解释问题时已经足够清楚。

解决方法

根本问题在于

wall_height 不适用于 tree obs,反之亦然。

因此,尝试一起分析来自 walltree 栖息地的数据没有任何好处。原则上,您可以比较两个栖息地,然后评估栖息地特定特征与栖息地内物种数量的关系。

在实践中,您面临着观察极少的问题。通常,您需要在模型中使用的每个预测变量大约 10 个案例。您或许可以对 2 个栖息地进行充分的比较,但在一个栖息地内的任何结果(每个仅进行 3 次观察)都将是高度可疑的。

其他一些想法。首先,通常使用不同类型的模型(泊松广义线性模型)更好地分析计数数据。其次,物种的数量大概由每个物种的不同数量的个体来表示。可能从中可以收集到一些信息,这应该在物种多样性的生态学文献中进行解释。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。