【问题标题】:Why can't I add a one level factor in my lm? [duplicate]为什么我不能在我的 lm 中添加一级因子? [复制]
【发布时间】:2023-04-03 15:57:01
【问题描述】:

我正在执行回归,我想添加一年作为因子,但我的一年只是一年(2010 年),当我运行方程式时出现错误:

contrasts<- (tmp, value = contr.funs[1 + isOF[nn]]) : 
contrasts can be applied only to factors with 2 or more levels

我的方程式:

Lanu <- lm(YFT ~ PR1*factor(DN1)*factor(NTM1)*factor(AÑO1))

我所有的因子都有相同的长度,YFT 是密度,PR1 是深度,因子DN1 是两种类型的网络,NTM1 是三个位置。我想知道我的因素中是否存在相互作用。

【问题讨论】:

  • 如果所有数据都来自同一年,则无法估计与年份的交互。在像这样的回归模型中,试图包含一个只有一个水平的因素在统计上没有任何意义。
  • 您实际上是在问“我如何将 2010 年与其他年份进行比较,而我只有 2010 年的数据?”

标签: r r-factor


【解决方案1】:

由于您只有 1 年,因此年份将只是 constant。不会有任何识别变化,这就是@MrFlick 在他的评论中所暗示的。这就是为什么如果您尝试对比或尝试将其放入 lm 等式时会出现错误。

实际上,您不应该包括年份,因为年份没有任何变化。

从技术上讲,如果您要省略默认常数(通常称为“Beta naught”),您可以将其包含在回归中,该常数在以下情况下计算为平均响应所有预测变量值都为零。这与人为地将 y 截距设置为 2010 相同。

很难想到这样的场景是有利的,即使那样你也不能有与常数的交互项。

以下是您的选择:

  1. 忘记包括年份
  2. 获得更多的岁月
  3. 使用 2010 作为 y 轴截距:Lanu &lt;- lm(YFT ~ 0 + PR1*factor(DN1)*factor(NTM1)*factor(AÑO1), offset=rep(2010, length(YFT))
  4. 使用月份、季度或年份的某些细分来代替年份

请注意,将0 +- 1 添加到等式会删除正常截距,而offset 会创建人工年份截距。

【讨论】:

    猜你喜欢
    • 2014-02-25
    • 2021-01-06
    • 2011-07-05
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 2023-02-03
    • 2014-10-08
    相关资源
    最近更新 更多