问题标签 [propensity-score-matching]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
319 浏览

r - 使用“匹配”包进行倾向得分匹配,包括可视化和结果表

我需要使用MatchingR 中的包进行倾向得分匹配。与MatchIt包不同,Matching它不包括任何可视化步骤和综合结果表。

的结果MatchBalance()将为每个变量创建一个长表,包括 std、mean、diff、max、raw、eQQ diff、T-test p-value 和其他结果。但我想要的是一个包含所有变量和结果的集成表。

以下是结果MatchBalance()

“匹配”的结果

结果来自

但我想要的是如下(来自MatchIt包装):

结果与集成表。

以及匹配前和匹配后之间的差异图等可视化。

0 投票
1 回答
959 浏览

r - R:使用 MatchIt 进行倾向得分匹配。如何使用replace = TRUE找到匹配观察的数量?

请考虑以下几点:

我正在将数据与MatchItR 中的包匹配。我的控件少于处理的控件并使用选项replace = TRUE。根据手册,权重告诉我们匹配控件的频率。

从手册:

“对于替换匹配,使用replace = TRUE。替换匹配后,权重可以用来反映每个控制单元匹配的频率。”

但是,我不明白为什么权重可以有小数以及如何反映频率。

例如,我replace == TRUE在手册中的示例中添加了(参见第 18 页):

对于控制“PSID393”,权重为 4.276。因此,我假设这个控件匹配了 4 或 5 次(四舍五入后)。

然而,我们也可以match.matrix一一查看匹配的治疗和控制。过滤“PSID393”,我们看到控件实际上已经匹配了 7 次:

reprex 包(v0.2.1)于 2019 年 5 月 6 日创建

如何正确解释这两个输出?

0 投票
1 回答
1226 浏览

python - 从 pymatch 使用 Matcher 时出现“完美分离”错误(倾向得分匹配)

我正在尝试使用pymatch包,但我不断收到错误消息Error: Perfect separation detected, results not available。我检查了多次,我的数据集不相等。它包含 260k 行用于控制和 50k 用于处理,并且具有不同的平均值。我只有 5 个变量,全部integersFloats四舍五入到 2 位小数。

我的目标是将一些经过处理的客户与未处理的客户进行匹配,以便基于倾向得分匹配进行进一步分析。

我已经删除了异常值,因为它显然不能很好地处理这些。我还在逗号后将小数四舍五入到 2 个位置。我尝试只使用整个数据集的 2 个变量。没有任何效果。

我期待一个输出,Average Accuracy: 78%但我得到Average Accuracy: nan% 了错误Error: Perfect separation detected, results not available

0 投票
2 回答
276 浏览

r - 通过 MatchIt(或其他软件包)减少“处理”样本量以增加样本相似性

我正在尝试使用 MatchIt 在几个协变量上匹配两个样本,但我很难创建足够相似的样本。我的两个样本都很大(对照组约 1000 个,对照组约 5000 个)。

我希望获得与参与者尽可能匹配的匹配样本,并且我可以在对照组中丢失样本量。现在,MatchIt 只返回两组 1000,而我想要两个非常匹配的组,并且可以使用较小的组(例如,500 而不是 1000)。

有没有办法通过 MatchIt 或其他包来做到这一点?我宁愿避免使用随机抽样,然后尽可能匹配,因为我希望组之间尽可能接近匹配。

抱歉没有一个可重复的例子,我对使用 R 还是很陌生,不知道如何制作这个问题的样本......

下面是我用于匹配两组的代码。

0 投票
1 回答
302 浏览

r - MatchIT 函数返回相等的连续变量但不相等的分类变量

我使用 MatchIt 函数得出一个 1:4 比例的已处理:未处理数据集,试图达到相似的平均年龄和性别频率。

我有一个小的治疗组(n = 44)和一个更大的对照组(n = 980)。为了减少对照组的数量并排除年龄和性别作为混杂因素,我尝试使用 MatchIt 函数创建一个 176 人的对照组,其平均年龄和性别平衡与治疗组相似。

输出总结如下:

年龄变量效果很好 - 它没有显着差异,但性别似乎有所不同(对照组为 85% 男性,治疗组为 57%),因此我对治疗后的性别数据进行了卡方检验。它在性别上表现出非常显着的差异:

我如何解释这里的差异?我的 MatchIT 函数有问题(方法不正确?)还是它有效但我已将卡方应用于不正确的问题?

0 投票
2 回答
951 浏览

r - 使用 MatchIt 进行倾向得分匹配。如何将卡尺引入精确的附加规格

我是 R 新手,我使用 matchit 通过倾向得分来匹配患者。我的数据集包括两组患者,它们的不同之处在于他们是否接受了药物。除了倾向得分匹配外,我还想精确匹配年龄、性别和家庭实践,因为治疗决定确实因这些特征而异。

我的问题是我想精确匹配年龄± 2 岁,因为我想通过增加精确匹配的灵活性(而不是使用任意切割)来增加可以在我的数据集中匹配的治疗患者的数量-off,例如使用分类年龄变量)。

下面的代码运行良好

我只是想将确切的代码更改为类似

这可能吗?

0 投票
1 回答
30 浏览

r - 在数据集中插入一个与倾向得分匹配的人的值相对应的值

我有两组(EG和CG)倾向得分匹配。我的第一个数据框 df_1 显示了相应的参与者对。

此外,我有一个数据框(长格式;即每一行都是一个测量点),其中仅包括来自 EG 的参与者。该数据框还包括一个表示时间点 1 的年龄的变量和一个表示我选择参与者的年龄组的变量。

最后,我的数据框只包含来自 CG 的参与者(同样是长格式)。此数据框不包括年龄组变量。

我现在想要一个包含 EG 和 CG 参与者的数据框(如 rbind df_2 和 df_3)。但是我想将 age_group 上的值插入到 CG 参与者中,该值对应于来自 EG 的相应匹配人的值。例如,ID 为 836587 (CG) 的人应该在 age_group 上收到与 801208 (EG) 相同的值,因为这两个参与者是一对匹配的(根据 df_1)。

这是最终数据集的样子:

你知道怎么做吗?非常感谢任何帮助或建议!

0 投票
1 回答
486 浏览

sas - SAS 倾向得分匹配:在 PSMATCH 中考虑匹配的观察值小于数据集中可用的总观察值

我正在使用 SAS 程序 PSMATCH 来平衡群组。我正在使用逻辑回归分别计算倾向得分,然后使用 PSDATA 在 PSMATCH 中使用生成的数据集。我正在通过区域、方法(最优、贪婪和可变比率)、距离变量、卡尺值和比率的变化来进行多次匹配迭代(以获得最佳结果)。请在下面找到代码:

我担心的是考虑匹配的观察数量(即所有观察)。总观察逻辑回归数据集是治疗组 1:531 和治疗组 2:3252 但是,在 PSMATCH 报告中,所有观察报告为治疗组 1:446 和治疗组 2:2784 无论 PSMATCH 方法的变化如何,结果都是一致的

有人可以帮助我了解计数下降的可能原因吗?

0 投票
0 回答
58 浏览

probability - 我想了解我们从逻辑回归中得到的概率结果

我从逻辑回归模型得到的结果为 0 或 1。我想将它们的概率用作我的营销工作的倾向得分。当我看到结果时,我注意到有两个概率,我想知道哪个概率是预测 1 的概率,哪个是预测 0 的概率。下面是我看到的一个粗略的结果样本,这让我很困惑。

这里第一个概率数高于第二个,但我不知道哪个是预测 1 和预测 0 的概率。如何确保我采用 1 的概率,然后对观察结果进行排序以获取最高倾向的客户?

0 投票
1 回答
742 浏览

r - 如何使用 MatchIt 在 R 中为倾向得分匹配准备变量?

我有一个包含大约 200 列和 100 万行的大型数据集。我有一个治疗组,我正在尝试使用基于大约 15 个不同变量的倾向匹配评分创建一个对照组。

我有两个问题在网上找到了相互矛盾的答案,如果您能帮助我,我将不胜感激。

1) 如何组织数据以最好地运行匹配过程?我的数据混合了数字、字符和因子(一些是有序的,另一些不是)变量,我在网上看到有人说 MatchIt 程序使用字符变量运行分析,而另一些人说它不适用于“最近”功能,但与其他功能一起使用。那么,我是否应该努力将所有内容转换为数字或因子(我不确定这是否可能),或者我可以使用我的变量运行 MatchIt 吗?

2) 函数 MatchIt 是否已更新为读取未用于匹配函数的变量中的 NA?我看过一些旧帖子说 MatchIt 需要一个完整的数据集,即使是那些没有用于匹配的变量,但这些帖子也说它可能会被修复。还是这样吗?

谢谢