使用以下数据:
我想知道如何将预定义的偏移量拟合到另一个模型的原始关系,即如何拟合模型A的估计值,因此:
ModelA<-lm(Dependent1~Explanatory)
因此,模型B:
ModelB<-lm(Dependent2~Explanatory)
其中解释变量是我的数据集中的变量“Categorical”,或变量“Continuous”。我得到了一个与CV上类似问题相关的有用答案:
https://stats.stackexchange.com/questions/62584/how-to-fit-a-specific-model-to-some-data
这里的exaplantory变量是“连续”。但是我还有一些额外的问题我需要回答,我认为可能更适合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"
如果有人对如何为分类变量创建偏移量有任何意见,我们将不胜感激:)
答案 0 :(得分: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)