Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在多年前拟合的逻辑回归中使用R中的预测函数?_R_Predict_Logistic Regression - Fatal编程技术网

如何在多年前拟合的逻辑回归中使用R中的预测函数?

如何在多年前拟合的逻辑回归中使用R中的预测函数?,r,predict,logistic-regression,R,Predict,Logistic Regression,我有一个问题,我正试图解决,但没有成功。搜索了两天多,我一点线索也没有。很抱歉,如果答案在那里,而我没有找到它 假设你有一个逻辑回归方程(二元模型),它来自于你几年前估计的一个旧模型。因此,您知道参数βk(k=1,2,…,p),因为它们是在过去估计的。但是你没有用来拟合模型的数据 我的问题是:我可以在R中引入这个旧的估计logistic模型作为对象(对应于logistic回归模型)吗 我想用“预测”函数用一组新数据(当前数据)来证明这一逻辑回归,然后检验这个旧模型经得起时间检验的有效性。要使用这

我有一个问题,我正试图解决,但没有成功。搜索了两天多,我一点线索也没有。很抱歉,如果答案在那里,而我没有找到它

假设你有一个逻辑回归方程(二元模型),它来自于你几年前估计的一个旧模型。因此,您知道参数β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')