如何使用 R 的 RecordLinkage 包查找记录匹配项?

How to Find Record Matches Using R's RecordLinkage package?

我对数据 link 总体而言相对较新,尤其是 R RecordLinkage package。我有如下数据:

require(RecordLinkage)
library(RCurl)

dss_member <- read.csv(text = getURL("https://raw.githubusercontent.com/kilimba/data/master/dss_member.csv"),
                       stringsAsFactors = F)
dss_member$id <- NULL
patient <- read.csv(text = getURL("https://raw.githubusercontent.com/kilimba/data/master/patient.csv"),
                    stringsAsFactors = F)
patient$id <- NULL

rpairs <- compare.linkage(patient,dss_member)

rpairs$pairs

rpairs <- epiWeights(rpairs) 

summary(rpairs)

如您所见,我有两个数据框,dss_member(11 行)和patient(5 行)。我在两者中都插入了一行,理论上 应该 肯定是 link,用户 James Earl Jones。但是我有两个问题。

  1. rpairs$pairs 导致输出的最后一列 is_match 始终显示为 NA,即使我确信两个数据集中至少有一行是相同的。这是什么意思?这与尚未回答的another SO question有关。

  2. rpairs <- epiWeights(rpairs)

    summary(rpairs)

结果如下:

Linkage Data Set

5 records in data set 1 
11 records in data set 2 
55 record pairs 

0 matches
0 non-matches
55 pairs with unknown status


Weight distribution:

  [0,0.2] (0.2,0.4] (0.4,0.6] (0.6,0.8]   (0.8,1] 
       47         1         3         2         2 

(a) 为什么它显示 0 个匹配项和 0 个不匹配项,而至少 肯定 匹配项 (James Earl Jones)

(b)函数compare.linkage()中的identity参数是可选的吗?如果是这样,当你把它放在外面和放在里面时会发生什么?

(c) 即使没有 "Gold Standard" 也可以使用这个包来执行记录 linkage,而 记录 link年龄评价?

亲切的问候, 图迈尼

图迈尼,

您需要区分真实状态(假或真)和分类(非link、可能或link)。请参阅作者在 R Journal 2/2 (2010) 中的文章、软件包手册以及作者在此处的回复:R RecordLinkage Identity .

直接回答您的问题:

(a) 输出显示“0 个匹配”和“0 个不匹配”,因为您在 compare.linkage() 中省略了 identity1 和 identity2 参数。

(b) 是的,compare.linkage() 中的 identity1 和 identity2 参数是可选的。如果您省略身份参数,那么您将忽略真正的匹配状态。如果您正确指定身份参数,则会使用真正的匹配状态。

(c) 我不确定您所说的 "record linkage" 与 "record linkage evaluation" 是什么意思。 Record linkage可以理解为一个分类问题,以比较模式为输入,匹配状态为输出。

这里有一个您可能想尝试的四步解决方案:

1) 运行 compare.linkage 没有 身份参数。

2) 从记录对中创建两个身份 变量

3) 将两个恒等式变量转换为恒等式vectors.

4) 运行 compare.linkage 再次 with 身份参数。

安德斯·亚历山大森 andersalex@gmail.com