如何将诊断预测模型应用于新数据
How to apply diagnostic prediction model to new data
在一些帮助下,我对自举数据集和多重推算数据集执行了 LASSO 回归,以构建一个诊断模型,该模型可以使用大量预测变量区分疾病 A 和疾病 B。
最终,我得到以下 table 与所选变量(它们都是分类变量,结果为 yes/no)及其系数:
Predictor
mean regression coefficient
Intercept
10.141
var1
1.671
Var2
-1.971
Var3
-5.266
Var4
-2.244
Var5
5.266
我的问题是:我如何使用以上 table 来预测新患者(尚未用于构建模型)是否患有疾病 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)
但是这种做法正确吗?
我希望有人能帮我解决这个问题!
是的,因为你描述的是逻辑回归,所以步骤是正确的。这些是根据您的模型计算预测的步骤。
a) 将系数乘以 x 变量,确保包括截距(如果适用)(值为 1)
b) 对 a)
的结果求和
c) 取幂产生对数赔率
d) 用log_odds / (1 + log_odds)
计算最终概率
你没有提到特定的语言,但这里有一些伪代码 python
使用 pandas/numpy
,假设数据集 x_variables
和 pandas [= coefficients
的 15=]。
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)
在一些帮助下,我对自举数据集和多重推算数据集执行了 LASSO 回归,以构建一个诊断模型,该模型可以使用大量预测变量区分疾病 A 和疾病 B。
最终,我得到以下 table 与所选变量(它们都是分类变量,结果为 yes/no)及其系数:
Predictor | mean regression coefficient |
---|---|
Intercept | 10.141 |
var1 | 1.671 |
Var2 | -1.971 |
Var3 | -5.266 |
Var4 | -2.244 |
Var5 | 5.266 |
我的问题是:我如何使用以上 table 来预测新患者(尚未用于构建模型)是否患有疾病 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)
但是这种做法正确吗?
我希望有人能帮我解决这个问题!
是的,因为你描述的是逻辑回归,所以步骤是正确的。这些是根据您的模型计算预测的步骤。
a) 将系数乘以 x 变量,确保包括截距(如果适用)(值为 1)
b) 对 a)
的结果求和c) 取幂产生对数赔率
d) 用log_odds / (1 + log_odds)
计算最终概率你没有提到特定的语言,但这里有一些伪代码 python
使用 pandas/numpy
,假设数据集 x_variables
和 pandas [= coefficients
的 15=]。
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)