使用 glm 预测新数据

Use glm to predict on fresh data

我对 glm 比较陌生 - 所以请多多包涵。

我创建了一个 glm(逻辑回归)来预测个体是否继续学习(“0”)或不继续学习(“1”)。我有兴趣预测后者。 glm 在数据集中使用了七个因素,混淆矩阵非常适合我需要的东西,并且还结合了七年的数据。直截了当。

但是,我现在需要将模型应用于当前年份的数据,其中当然没有 NOTCONTINUE 列。假设 glm 模型是“CombinedYears”,新数据是“Data2020”

我如何使用 glm 模型预测谁将(“0”)或将不会(“1”)继续学习?我需要在最新文件中插入一个 NOTCONTINUE 列吗??我试过这个结构

Predict2020 <- predict(CombinedYears, data.frame(Data2020), type = 'response')

但输出仅包含 <0.5 的值。

非常感谢任何帮助。提前谢谢你

您提到您已经创建了一个预测模型来预测特定学生是否会继续学习。您使用了 glm 包并且您的模型名称是 CombinedYears。

现在,您必须知道您的问题是二元分类,并且您为此使用了逻辑回归。当您将模型应用于新数据,甚至是用于拟合模型的相同数据时,模型的输出就是概率。这些值介于零和一之间。在模型的开发阶段,您需要确定这些概率的截止阈值,您可以在以后预测新数据时使用这些概率。例如,您可以将 0.5 确定为截止值,高于该值的每个概率都被视为 NOTCONTINUE,低于该值的概率被视为 CONTINUE。但是,也可以通过最大化特异性和敏感性来根据您的数据确定最佳阈值。这可以通过计算接受者操作特征曲线 (AUC) 下的面积来完成。有许多包可以为您完成此操作,例如 R 中的 pROC 和 AUC 包。相同的包也可以确定最佳截止值。

您需要做的是:

  1. 计算AUC后确定截止阈值

    library(pROC)
    roc_object = roc(your_fit_data$NOTCONTINUE ~ fitted(CombinedYears))
    coords(roc.roc_object, "best", ret="threshold", transpose = FALSE)
    
  2. 使用您的模型预测新数据年份(就像您所做的那样)

    
    
     Predict2020 = predict(CombinedYears, data.frame(Data2020), type = 'response')
    
  3. 现在Predict2020的内容就是每个人的概率 学生。使用您从步骤 (1) 中获得的截止值对您的 相应的学生