gpt4 book ai didi

r - 如何在R包RecordLinkage中使用compare.linkage——意外输出

转载 作者:行者123 更新时间:2023-12-04 11:13:28 25 4
gpt4 key购买 nike

我在 R 包 RecordLinkage 中使用 compare.linkage 函数,
得到一个我知道是错误的结果,所以我知道我误解了一些东西。
我在 x64 Windows 上使用 R 3.2.3。我对 Stata 非常熟悉,但对 R 不太熟悉。我只是在 r-help 上交叉发布。

我可以从阻塞字段创建记录对,但所有对都是未知状态 (NA)。我无法创建匹配或不匹配。我想要一个简单的工作示例,说明如何使用 RecordLinkage 包链接数据集。似乎手册和 R Journal Vol。 2/2 只展示了如何使用 compare.dedup 函数去重复单个数据集,而不是如何使用 compare.linkage 函数将两个数据集链接在一起。我可以重现 R Journal 文章中的示例,所以我的 R 安装很好。

手册中的示例数据集对 7 个变量有 500 和 10000 个观察值,但 1 个观察值和 2 个变量足以说明问题。
我的第一个比较模式如下所示:

  id1  id2 fname_c1 bm is_match
1 17 343 1 1 NA

相反,我想要并期待一个看起来像这样的比较模式:
  id1  id2 fname_c1 bm is_match
1 17 343 1 1 1

我的阻塞变量是 fname_c1 用于名字的第一个组件。我的匹配变量是出生月份的 bm。我的理解是我的示例输出中的第 1 行是 fname_c1 在基础数据集中匹配的第一行。当两个链接数据集中的匹配变量 bm=1 时,我希望并期望 is_match 为 1,如示例中所示。

有关更多详细信息,这是我键入的内容和 R 输出:
> library(RecordLinkage)
> data(RLdata500)
> data(RLdata10000)
> RLdata500[17, ]
fname_c1 fname_c2 lname_c1 lname_c2 by bm bd
17 ALEXANDER <NA> MUELLER <NA> 1974 9 9
> RLdata10000[343, ]
fname_c1 fname_c2 lname_c1 lname_c2 by bm bd
343 ALEXANDER <NA> BAUMANN <NA> 1957 9 7
> rpairs <- compare.linkage(RLdata500,RLdata10000,blockfld=c(1), exclude=c(2:5,7))
> rpairs$pairs[c(1:2), ] # Why is_match=NA? (should be 1)
id1 id2 fname_c1 bm is_match
1 17 343 1 1 NA
2 17 2385 1 0 NA
> rpairs <- epiWeights(rpairs) # (Weight calculation)
> summary(rpairs) # (0 matches in Linkage Dataset)

Linkage Data Set

500 records in data set 1
10000 records in data set 2
47890 record pairs

0 matches
0 non-matches
47890 pairs with unknown status


Weight distribution:
[omitted here to save space]

引用:
  • “RecordLinkage”包手册
    (可在 PDF 在线获取,网址为
    https://cran.r-project.org/web/packages/RecordLinkage/RecordLinkage.pdf )
  • R 期刊文章“RecordLinkage 包:检测数据中的错误”
    (可在 PDF 在线获取,网址为
    https://journal.r-project.org/archive/2010-2/RJournal_2010-2_Sariyar+Borg.pdf )

  • 我在手册和 R 期刊文章中看到了一些关于真实匹配结果的身份参数的内容,但我想我只需要引用(“黄金标准”)数据集。我的示例在两个基础数据集中都有一个非缺失值 (bm=1),因此这不是结果为 NA 的原因。我错过了什么?如何使用 R 中的 compare.linkage 链接两个简单的数据集?

    安德斯·亚历山大森

    andersalex@gmail.com

    最佳答案

    我遇到了同样的问题,我有这个答案的可能解决方案 这是由于 identity范围。

    从样本数据中,在Record Linkage包中,我发现这个向量identity.RLdata500携带有关RLdata500的重复记录的信息500 条记录中有 50 条是重复记录

    length(unique(identity.RLdata500))
    [1] 450

    我在我的数据集中找到了相似的列并存储为一个单独的向量并将该向量传递给身份参数
    New_data_seq
    118
    118

    New_data_seq <- R_New_data_zero$SEQ_NO
    abc <- compare.dedup (R_New_data_zero,identity = New_data_seq)


    BICODE ALCODE IS_T OID conc
    I A 1 99 IA1
    I A 1 99 IA1
    abc$pairs[1:1, ]

    id1 id2 BICODE ALCODE IS_T OID conc is_match
    1 2 1 1 1 1 1 1

    关于r - 如何在R包RecordLinkage中使用compare.linkage——意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35065163/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com