如何在多年前拟合的逻辑回归中使用R中的预测函数?
我有一个问题,我正试图解决,但没有成功。搜索了两天多,我一点线索也没有。很抱歉,如果答案在那里,而我没有找到它 假设你有一个逻辑回归方程(二元模型),它来自于你几年前估计的一个旧模型。因此,您知道参数βk(k=1,2,…,p),因为它们是在过去估计的。但是你没有用来拟合模型的数据 我的问题是:我可以在R中引入这个旧的估计logistic模型作为对象(对应于logistic回归模型)吗 我想用“预测”函数用一组新数据(当前数据)来证明这一逻辑回归,然后检验这个旧模型经得起时间检验的有效性。要使用这个函数,你需要逻辑回归模型的对象如何在多年前拟合的逻辑回归中使用R中的预测函数?,r,predict,logistic-regression,R,Predict,Logistic Regression,我有一个问题,我正试图解决,但没有成功。搜索了两天多,我一点线索也没有。很抱歉,如果答案在那里,而我没有找到它 假设你有一个逻辑回归方程(二元模型),它来自于你几年前估计的一个旧模型。因此,您知道参数βk(k=1,2,…,p),因为它们是在过去估计的。但是你没有用来拟合模型的数据 我的问题是:我可以在R中引入这个旧的估计logistic模型作为对象(对应于logistic回归模型)吗 我想用“预测”函数用一组新数据(当前数据)来证明这一逻辑回归,然后检验这个旧模型经得起时间检验的有效性。要使用这
事先非常感谢。根据我的评论,我认为您可以从直接从系数计算预测开始。下面的示例比较了
predict.glm
的输出与直接在数据上计算的预测概率:
# construct some data and model it
# y ~ x1 + x2
set.seed(1)
x1 <- runif(100)
x2 <- runif(100)
y <- rbinom(100,1,(x1+x2)/2)
data1 <- data.frame(x1=x1,x2=x2,y=y)
x3 <- runif(100)
x4 <- runif(100)
y2 <- rbinom(100,1,(x3+x4)/2)
data2 <- data.frame(x1=x3,x2=x4,y=y2)
glm1 <- glm(y~x1+x2,data=data1,family=binomial)
# extract coefs
#summary(glm1)
coef1 <- coef(glm1)
# calculate predicted probabilities for current data
tmp1 <- coef1[1] + (data1$x1*coef1[2]) + (data1$x2*coef1[3])
pr1 <- 1/(1+(1/exp(tmp1)))
# these match those from `predict`:
all.equal(pr1,predict(glm1,data1,type='response'))
# now apply to new data:
tmp2 <- coef1[1] + (data2$x1*coef1[2]) + (data2$x2*coef1[3])
pr2 <- 1/(1+(1/exp(tmp2)))
pr2
#构造一些数据并对其建模
#y~x1+x2
种子(1)
x1您可以创建一个glm拟合,该拟合仅使用从现有系数创建的偏移量,然后使用常规预测函数进行拟合。例如,使用iris数据(首先在真实数据上拟合模型,然后使用虚拟数据和第一次拟合的系数拟合新模型):
fit1这个问题似乎离题了,因为它是关于统计的。也许应该将其迁移到。用户正在尝试将其拥有的方程式转换为对象。这是一个相当程序化的问题,我认为它非常适合。我可能会修改一个现有的模型,但那是欺骗。@RomanLuštrik我怀疑,将一个方程转换为glm对象可能比根据基础统计数据从头开始构建算法更难。我想,这可能还在范围之内。设置得不错——我很想运行数据集的qqplot
,而不是这个模型中的“模拟”数据。
fit1 <- glm( I(Species=='versicolor') ~ Petal.Length + Petal.Width,
data=iris, family=binomial )
coef(fit1)
dummydata <- data.frame( Petal.Length = rnorm(10), Petal.Width=rnorm(10),
Species = rep(c('versicolor','other'), each=5) )
fit2 <- glm( I(Species=='versicolor') ~ 0 +
offset(-2.863708 + 1.563076*Petal.Length - 3.153165*Petal.Width),
data=dummydata, family=binomial )
pred1 <- predict(fit1, newdata=iris)
pred2 <- predict(fit2, newdata=iris)
plot(pred1,pred2)
abline(0,1, col='green')