如何在 R 的回归模型中使用 ICD10 代码?
How to use ICD10 Code in a regression model in R?
我正在尝试查找导致某些疾病的 ICD10 代码。但是 ICD10 有字母数字分类,例如A00.00 。有 1000 个这样的分类,但我不确定如何在我的回归模型中使用它们。有什么建议吗
数据
现有 ICD10 糖尿病患者 (Y)
P1 A00.10 1
P2 A00.20 0
P1 C00.1 1
P3 Z01 1
....
您可能想要解码具有一层或多层的变量中的 ICD10。一种方法可能是生成一个变量作为 dat$diabates,级别为 0(无疾病)和 1(疾病)。一种方法可能是使用 grepl。顺便说一下,ICD10 代码中糖尿病的常见模式是 E08(请检查 http://eicd10.com/index.php?srchtext=diabetes&Submit=Search&action=search),而 A00 是霍乱。
dat$diabates <- as.integer(grepl(pattern = "E08", x = dat$ICD10))
###Add to pattern a common pattern in ICD 10 code
as.numeric(as.character(dat$diabetes))->dat$diabetes
如果您有多个不同的模式(对每个模式重复该过程),则可以生成新变量并将它们合并。
例如:
dat$diabetes_final<-0
dat$diabetes_final[which(dat$diabetes1 ==1 | dat$diabetes2==1)]<-1
我建议将 "healthy" 设置为包含诊断的因子变量的参考水平,因为这将为您提供系数,显示当您比较健康患者与患有疾病的患者时因变量如何变化某种疾病。当然,您可以按照 Jean-Claude Arbaut 的建议对疾病进行分组。
这可能看起来像这样:
# your vector with the diagnosis
diagnosis <- c("healthy", "P1 A00.10 1", "P2 A00.20 0", "P1 C00.1 1", "P3 Z01 1")
# grouping your vector. I have no idea about ICD10 groups, so this is only to show how this would work in R
diagnosis[diagnosis %in% c("P1 A00.10 1", "P2 A00.20 0")] <- "diabetes"
diagnosis[diagnosis %in% c("P1 C00.1 1", "P3 Z01 1")] <- "cancer"
# make the vector a factor with healthy as the reference
diagnosis <- factor(diagnosis)
diagnosis <- relevel(diagnosis, ref = "healthy")
# now you can use the variable in a regression
set.seed(1) # making it reproducible
dv <- rnorm(length(diagnosis)) # generating a dependent variable
summary(lm(dv ~ diagnosis)) # linear regression
# the coeficients look like this
...
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.6265 0.8126 -0.771 0.521
diagnosiscancer 1.5888 0.9952 1.597 0.251
diagnosisdiabetes 0.3005 0.9952 0.302 0.791
...
一个有效的方法是使用合并症的概念。我的 R 包 icd 针对标准化的疾病集执行此操作,例如"Diabetes", "Cancer", "Heart Disease." 可以选择合并症地图,因此您可以选择符合您兴趣的地图,例如icd 中的 PCCC 图可用于儿科,其他用于成人并跨越多种疾病状态。
例如,如introduction vignette中所述。这些实际上是 ICD-9 代码,但您可以使用 ICD-10。
patients <- data.frame(
visit_id = c(1000, 1000, 1000, 1000, 1001, 1001, 1002),
icd9 = c("40201", "2258", "7208", "25001", "34400", "4011", "4011"),
poa = c("Y", NA, "N", "Y", "X", "Y", "E"),
stringsAsFactors = FALSE
)
patients
visit_id icd9 poa
1 1000 40201 Y
2 1000 2258 <NA>
3 1000 7208 N
4 1000 25001 Y
5 1001 34400 X
6 1001 4011 Y
7 1002 4011 E
icd::comorbid_ahrq(patients)
CHF Valvular PHTN PVD HTN Paralysis NeuroOther Pulmonary DM DMcx Hypothyroid Renal Liver
1000 TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
1001 FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
1002 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
PUD HIV Lymphoma Mets Tumor Rheumatic Coagulopathy Obesity WeightLoss FluidsLytes BloodLoss
1000 FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
1001 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
1002 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Anemia Alcohol Drugs Psychoses Depression
1000 FALSE FALSE FALSE FALSE FALSE
1001 FALSE FALSE FALSE FALSE FALSE
1002 FALSE FALSE FALSE FALSE FALSE
"DM" 是糖尿病,"DMcx" 是伴有并发症的糖尿病,例如视网膜病变或肾功能衰竭。这是美国 AHRQ 对标准 Elixhauser 类别的修改。
当您有疾病状态的二进制标志时,您可以在任何统计或机器学习模型中使用它们。
我正在尝试查找导致某些疾病的 ICD10 代码。但是 ICD10 有字母数字分类,例如A00.00 。有 1000 个这样的分类,但我不确定如何在我的回归模型中使用它们。有什么建议吗
数据 现有 ICD10 糖尿病患者 (Y) P1 A00.10 1 P2 A00.20 0 P1 C00.1 1 P3 Z01 1 ....
您可能想要解码具有一层或多层的变量中的 ICD10。一种方法可能是生成一个变量作为 dat$diabates,级别为 0(无疾病)和 1(疾病)。一种方法可能是使用 grepl。顺便说一下,ICD10 代码中糖尿病的常见模式是 E08(请检查 http://eicd10.com/index.php?srchtext=diabetes&Submit=Search&action=search),而 A00 是霍乱。
dat$diabates <- as.integer(grepl(pattern = "E08", x = dat$ICD10))
###Add to pattern a common pattern in ICD 10 code
as.numeric(as.character(dat$diabetes))->dat$diabetes
如果您有多个不同的模式(对每个模式重复该过程),则可以生成新变量并将它们合并。 例如:
dat$diabetes_final<-0
dat$diabetes_final[which(dat$diabetes1 ==1 | dat$diabetes2==1)]<-1
我建议将 "healthy" 设置为包含诊断的因子变量的参考水平,因为这将为您提供系数,显示当您比较健康患者与患有疾病的患者时因变量如何变化某种疾病。当然,您可以按照 Jean-Claude Arbaut 的建议对疾病进行分组。
这可能看起来像这样:
# your vector with the diagnosis
diagnosis <- c("healthy", "P1 A00.10 1", "P2 A00.20 0", "P1 C00.1 1", "P3 Z01 1")
# grouping your vector. I have no idea about ICD10 groups, so this is only to show how this would work in R
diagnosis[diagnosis %in% c("P1 A00.10 1", "P2 A00.20 0")] <- "diabetes"
diagnosis[diagnosis %in% c("P1 C00.1 1", "P3 Z01 1")] <- "cancer"
# make the vector a factor with healthy as the reference
diagnosis <- factor(diagnosis)
diagnosis <- relevel(diagnosis, ref = "healthy")
# now you can use the variable in a regression
set.seed(1) # making it reproducible
dv <- rnorm(length(diagnosis)) # generating a dependent variable
summary(lm(dv ~ diagnosis)) # linear regression
# the coeficients look like this
...
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.6265 0.8126 -0.771 0.521
diagnosiscancer 1.5888 0.9952 1.597 0.251
diagnosisdiabetes 0.3005 0.9952 0.302 0.791
...
一个有效的方法是使用合并症的概念。我的 R 包 icd 针对标准化的疾病集执行此操作,例如"Diabetes", "Cancer", "Heart Disease." 可以选择合并症地图,因此您可以选择符合您兴趣的地图,例如icd 中的 PCCC 图可用于儿科,其他用于成人并跨越多种疾病状态。
例如,如introduction vignette中所述。这些实际上是 ICD-9 代码,但您可以使用 ICD-10。
patients <- data.frame(
visit_id = c(1000, 1000, 1000, 1000, 1001, 1001, 1002),
icd9 = c("40201", "2258", "7208", "25001", "34400", "4011", "4011"),
poa = c("Y", NA, "N", "Y", "X", "Y", "E"),
stringsAsFactors = FALSE
)
patients
visit_id icd9 poa
1 1000 40201 Y
2 1000 2258 <NA>
3 1000 7208 N
4 1000 25001 Y
5 1001 34400 X
6 1001 4011 Y
7 1002 4011 E
icd::comorbid_ahrq(patients)
CHF Valvular PHTN PVD HTN Paralysis NeuroOther Pulmonary DM DMcx Hypothyroid Renal Liver
1000 TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
1001 FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
1002 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
PUD HIV Lymphoma Mets Tumor Rheumatic Coagulopathy Obesity WeightLoss FluidsLytes BloodLoss
1000 FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
1001 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
1002 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Anemia Alcohol Drugs Psychoses Depression
1000 FALSE FALSE FALSE FALSE FALSE
1001 FALSE FALSE FALSE FALSE FALSE
1002 FALSE FALSE FALSE FALSE FALSE
"DM" 是糖尿病,"DMcx" 是伴有并发症的糖尿病,例如视网膜病变或肾功能衰竭。这是美国 AHRQ 对标准 Elixhauser 类别的修改。
当您有疾病状态的二进制标志时,您可以在任何统计或机器学习模型中使用它们。