r - 大型数据集的匹配采样包或函数
问题描述
我需要一个 R 包或函数,它允许我将控件与大型数据集(500 万个主题)的案例相匹配。我尝试了几个包,我的问题总结如下。我只尝试匹配一个协变量,我很可能需要匹配几个。
包MatchIt
:最近邻、最优和遗传方法都只运行几个小时。该"cem"
方法运行得非常快,但我需要知道哪些案例匹配/不匹配,以便我可以对匹配的子集进行进一步分析。在 cem 结果上运行match.data()
仅提供要在回归中使用的权重,而不是匹配的子集。如果我想要一对一匹配但我想保留尽可能多的控件,cem 中的配对函数将起作用。
matchControls()
在e1071
包中:运行很长时间,它们会返回"not able to allocate vector of size 1352 GB"
Match()
包中的功能Matching
:只需运行并运行...
quickmatch()
从quickmatch
包中:它运行得很快,但我不确定我是否正确使用了该函数或如何从"qm_matching"
返回的对象中提取匹配的数据。quickmatch
以下是我对假数据的尝试。
library(MatchIt)
library(cem)
library(Matching)
library(rgenoud)
library(quickmatch)
set.seed(100)
control_df=data.frame(Group=factor("Control"),value=rnorm(1400000,95,2))
set.seed(101)
treatment_df=data.frame(Group=factor("Treatment"),value=c(rnorm(500000,92,2),rnorm(100000,50,5)))
dat=rbind(control_df,treatment_df)
covariate_balance(dat$Group, dat$value, matching = NULL,
normalize = TRUE, all_differences = TRUE)
my_distances <- distances(dat, dist_variables = c("value"))
matchedDat=quickmatch(my_distances,dat$Group )
matchedDat.df=data.frame(matchedDat)
不确定如何处理返回的对象。我认为quickmatch
可能是最可行的选择。结果covariate_balance
显示对照组和治疗组之间存在相当大的不平衡,因此可以进行一些匹配。
具体来说,我如何获得匹配的结果,即标记在对照和治疗之间成功匹配的受试者?cluster_label
from暗示该matchedDat.df
函数正在创建大量集群如何/我可以限制这个?
对于加速上述某些功能或新建议的任何帮助将不胜感激。
解决方案
在仔细阅读文档后,我认为我可以使用包或包cem
解决我的问题。Matchit
cem
library(cem)
library(tidyverse)
set.seed(100)
control_df=data.frame(Group=factor("Control"),value=rnorm(1400000,95,2))
set.seed(101)
treatment_df=data.frame(Group=factor("Treatment"),value=c(rnorm(500000,92,2),rnorm(100000,50,5)))
dat=rbind(control_df,treatment_df)%>% rownames_to_column()
cem.match=cem(treatment="Group", baseline.group="Control",data=dat,keep.all=TRUE, drop ="rowname")
matchedData=data.frame(Group.check=cem.match$groups, matched=cem.match$matched,weights=cem.match$w)%>%
rownames_to_column()%>%
inner_join(dat,by="rowname") %>%
filter(matched==TRUE)
推荐阅读
- javascript - 在 TypeScript 中,如何使用泛型提取类实例类型?
- excel - 获取具有另一列过滤范围的唯一列表
- sql - 如何正确地将两列中的日期谱系分配给彼此?
- ios - 带有菜单的 ToolbarItem 很难点击 - SwiftUI
- javascript - 我的 api 调用以错误结束:套接字挂断,我正在使用节点 js 通过 axios 发出并获取调用请求
- javascript - React Native Expo:用户选择后立即将图像加载到 firabse 存储
- docker - Docker 映像构建错误:设备上没有剩余空间
- c# - 无法在单元测试中访问已处置的对象
- android-jetpack-compose - Jetpack Compose - 阻止重点元素窃取背压?
- css - 如何正确修复 ScrollView 使其行为类似于常规视图但具有垂直滚动?