【问题标题】:How to apply diagnostic prediction model to new data如何将诊断预测模型应用于新数据
【发布时间】:2021-05-13 02:22:53
【问题描述】:

在一些帮助下,我对增强型和多重插补数据集执行了 LASSO 回归,以构建一个诊断模型,该模型可以使用大量预测变量来区分疾病 A 和疾病 B。

最终,我得到了下表,其中包含选定的变量(这些都是以是/否为结果的分类变量)及其系数:

Predictor mean regression coefficient
Intercept 10.141
var1 1.671
Var2 -1.971
Var3 -5.266
Var4 -2.244
Var5 5.266

我的问题是:我如何使用上表来预测新患者(尚未用于建立 te 模型)是否患有疾病 A 或疾病 B。

我想到了以下几点:

截距 + (1.671 (var1) x 0 或 1) - (1.971 (var2) x 0 或 1) - (5.266 (var3) x 0 或 1) ..... + (5.266 (var5) x 0或 1) = X

患疾病 A 的概率(在数据集中编码为 1)= e^X / (1+ e^X)

但是这种方法正确吗?

我希望有人可以帮助我!

【问题讨论】:

    标签: r coefficients lasso-regression


    【解决方案1】:

    是的,因为您描述的是逻辑回归,所以这些步骤是正确的。这些是根据您的模型计算预测的步骤。

    a) 将系数乘以 x 变量,确保包括截距(如果适用)(值为 1)

    b) 对 a) 的结果求和

    c) 取幂以产生对数赔率

    d) 用 log_odds / (1 + log_odds) 计算最终概率

    您没有提到具体的语言,但这里有一些使用pandas/numpypython 中的伪代码,假设数据集x_variablescoefficients 的pandas series

    scores = x_variables.transpose()
    scores = transpose_predictors.mul(coefficients, axis = 0)
    sum_scores = scores.sum(axis = 0, skipna = True)
    log_odds = np.exp(sum_scores)
    final_scores = log_odds / (1 + log_odds)
    

    编辑:R 中的代码相同,其中coefficients 是系数值的向量。

    # do the scoring via matrix multiplication
    scores <- t(t(x_variables) * coefficients)
    
    # sum the scores by row and exponentiate. 
    log_odds <- exp(rowSums(scores, na.rm = TRUE))
    final_scores <- log_odds / (1 + log_odds)
    

    【讨论】:

    • 非常感谢您的回复!我对python不熟悉,但是你能在R中给出上面的代码吗?非常感激。另外,在步骤 a) 中,您的回答是:所以无论系数是负值还是正值,我都应该分别从截距中减去或添加,对吗?
    • 没问题,我编辑添加了等效的 R 代码。从技术上讲,这都是加法,但是当您乘以负系数时,该符号将流过,因此您将添加一个负数(例如 Var2 的情况)。因此,在这些情况下,它在功能上变成了减法。
    猜你喜欢
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2020-09-19
    • 2016-01-02
    相关资源
    最近更新 更多