0

使用以下数据:

http://pastebin.com/4wiFrsNg

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

ModelA<-lm(Dependent1~Explanatory)

因此对 B 建模:

ModelB<-lm(Dependent2~Explanatory)

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

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 是 Continuous 项的固定估计值,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"

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

4

1 回答 1

2

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

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)
于 2013-06-26T14:03:36.300 回答