【问题标题】:How to fit predefined offsets to models containing categorical variables in R如何将预定义的偏移量拟合到 R 中包含分类变量的模型
【发布时间】:2013-06-23 13:40:22
【问题描述】:

使用以下数据:

http://pastebin.com/4wiFrsNg

我想知道如何将预定义的偏移量拟合到另一个模型的原始关系,即如何拟合模型 A 的估计值,因此:

ModelA<-lm(Dependent1~Explanatory)

因此模型 B:

ModelB<-lm(Dependent2~Explanatory)

解释变量是我的数据集中的变量“分类”或变量“连续”。我得到了一个与简历上类似问题相关的有用答案:

https://stats.stackexchange.com/questions/62584/how-to-fit-a-specific-model-to-some-data

这里的解释变量是“连续的”。但是,我有一些额外的问题需要回答,我认为这些问题可能更适合 SO。如果不是这种情况,请告诉我,我会删除这个问题:)

具体来说,我在上面的链接中被告知,为了在我的数据集中为连续解释变量拟合预定义的斜率,我应该这样做:

lm( Dependent2 ~ 1 + offset( Slope * Continuous ) )

其中坡度是取自模型 A 的预定义坡度。效果很好。

现在我想知道,当 x 是具有两个级别的分类变量,然后当 x 是具有二次项即 x+x^2 的连续变量时,我该怎么做?

对于我正在尝试的二次项:

lm( Dependent2 ~ 1 + offset( Slope * Continuous )+ offset( Slope2 * I((Continuous)^2)) )

其中 Slope 是连续项的固定估计值,Slope2 是二次项的固定估计值。

但是,我不确定如何使它适用于分类变量。当我尝试将偏移量设置为:

lm( Dependent2 ~ 1 + offset( Slope * Categorical ) )

其中,斜率是从模型 A 中获取的固定估计的斜率值,我得到一个错误:

"Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :   0 (non-NA) cases
In addition: Warning message:
In Ops.factor(0.25773, Categorical) : * not meaningful for factors"

如果有人对如何为分类变量创建偏移量提供意见,将不胜感激:)

【问题讨论】:

  • 我猜offset 想要对因子进行虚拟编码。可以通过reproducible code and data 给出更好的答案。
  • 嗨 Roland,我添加了一些原始数据并澄清了解释。我希望这会有所帮助。

标签: r modeling lm categorical-data


【解决方案1】:

你能做的最好的可能是为你的因子的每个级别手动计算偏移量:

x <- rep(1:3, each=10)
df <- data.frame(x=factor(x), y=3 - x)

# compute the offset for each level of x
df$o <- with(df, ifelse(x == "1", 2, ifelse(x == "2", 1, 0)))

# fitted coef's for the models below will all be zero due to presence of offset
lm(y - o ~ x - 1, data=df)
# or
lm(y ~ x + offset(o), data=df)

【讨论】:

  • 感谢您的回答。我已经为我的帖子中的数据(我称之为“数据”)尝试了这个: data$o
  • 如果Categorical只有2个级别,那么你只需要一个ifelse。注意有两个选项:“if”和“else”......
  • 当您适合 y - o ~ x - 1 时,x 的估计值将根据偏移量进行调整。例如,假设x 的级别 2 的平均值 y 为 10。如果没有偏移,您将看到估计系数 10。如果您的偏移值为 8,则估计值将改为 2。不过,一般来说,您不希望包含一个x,其效果已经包含在偏移量中——我把它放在帖子中主要是为了说明目的。
  • 所以,tl;博士:你可能只想要y ~ offset(o)。为混乱道歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 2021-11-06
  • 1970-01-01
相关资源
最近更新 更多