用r中的任意系数预测()

Ste*_*cil 2 r predict glm

我有一些由非r用户设置的logit模型的系数.我想将这些系数导入r并在相同的数据集(ROC和混淆矩阵)上生成一些拟合优度与我自己的模型.我的第一个想法是使用类似的东西将系数强制转换为现有的GLM对象

摘要(拟合)$ coefficients [,1] < - y

要么

摘要(拟合)$ coefficients < - x

其中y和x是包含我试图用来预测和拟合的系数的矩阵,它是先前创建的适合数据集的虚拟glm对象.当然,这只给我带来了错误.

有没有办法将任意系数向量传递给predict()函数或指定模型中的系数?我可以通过将一个向量传递给GLM中的偏移量参数来以某种方式强制这个吗?谢谢

编辑:正如评论中所提到的,使用任意系数的统计基础不多.我有一个商业伙伴,他们相信他/她'知道'正确的系数,并且我试图根据这些估计与适当模型产生的系数来量化预测能力的损失.

Edit2:Per BondedDust的答案,我能够强制系数,但无法清除由于强制而返回的forecast()错误消息,看起来是由预测调用的predict.lm,也看起来在系数的等级和导致错误.

42-*_*42- 5

predict.glm如果您遵循将对象传递给 的代码predict.lm,则看起来需要更改的模型列表的节点确实是fit$coefficients。但是,更改summary()-object 将不会产生任何效果。glm 和 lm对象[['coefficients']]中的 不是具有列的矩阵:“估计”、“标准”。Error'、't value'、'Pr(>|t|)' 例如由 产生summary,而只是系数向量。

 fit$coefficients <- y
 newpred <- predict(fit)
Run Code Online (Sandbox Code Playgroud)

如果您需要进一步使用fit.


use*_*650 5

这不是您发布的问题的答案--BonddedDust回答 - 但描述了自己计算预测概率的另一种方法,这可能有助于这种情况.

# Use the mtcars dataset for a minimum worked example
data(mtcars)

# Run a logistic regression and get predictions 
mod <- glm(vs ~ mpg + factor(gear) + factor(am), mtcars, family="binomial")
p1 <- predict(mod, type="response")

# Calculate predicted probabilities manually
m <- model.matrix(~ mpg + factor(gear) + factor(am), mtcars)[,]
p2 <- coef(mod) %*% t(m)
p2 <- plogis(p2)

all(p1 == p2)
#identical(as.numeric(p1), as.numeric(p2))
Run Code Online (Sandbox Code Playgroud)

您可以coef(mod)使用给定的系数向量替换.model.matrix将生成计算所需的虚拟变量 - 检查排序是否与系数向量的排序相同.