在 Stata 中进行加权热甲板插补的简单方法?

2024-01-09

我想在 Stata 中进行简单的加权热甲板插补。在 SAS 中,等效命令如下(请注意,这是一个较新的 SAS 功能,从 2015 年左右的 SAS/STAT 14.1 开始):

proc surveyimpute method=hotdeck(selection=weighted); 

为了清楚起见,基本要求是:

  1. 插补大多数是基于行的或同时的。如果第 1 行捐赠x到第 3 行,那么它也必须捐赠y.

  2. 必须考虑重量。体重 = 2 的捐赠者被选择的可能性是体重 = 1 的捐赠者的两倍

我假设丢失的数据是矩形的。换句话说,如果一组可能缺失的变量包含x and y那么要么两者都缺失,要么都不缺失。这是一些生成示例数据的代码。

global miss_vars "wealth income"
global weight    "weight"

set obs 6
gen id = _n
gen type = id > 3
gen income = 5000 * _n
gen wealth = income * 4 + 500 * uniform()
gen weight = 1
replace weight = 4 if mod(id-1,3) == 0

// set income & wealth missing every 3 rows
gen impute = mod(_n,3) == 0
foreach v in $miss_vars {
    replace `v' = . if impute == 1
}

数据如下:

            id       type     income     wealth     weight     impute
  1.         1          0       5000   20188.03          4          0
  2.         2          0      10000   40288.81          1          0
  3.         3          0          .          .          1          1
  4.         4          1      20000   80350.85          4          0
  5.         5          1      25000   100378.8          1          0
  6.         6          1          .          .          1          1

换句话说,我们需要随机(加权)选择一个捐赠者同类型的观察每行缺失值,并使用该捐赠者填写收入和财富值。在实际使用中,类型变量的生成当然是它自己的问题,但我在这里保持非常简单以关注主要问题。

例如,第 3 行可能类似于以下任一 post hotdeck(因为它填充了第 1 行或第 2 行的收入和财富(但相反,永远不会获取第 1 行的收入和第 2 行的财富):

  3.         3          0       5000   20188.03          1          1
  3.         3          0      10000   40288.81          1          1

另外,由于第 1 行的权重 = 4,第 2 行的权重 = 1,因此第 1 行应在 80% 的时间为供体,第 2 行应在 20% 的时间为供体。


看来 Stata 中没有办法做到这一点,也没有社区提供的命令。有社区提供的命令可以执行 hotdeck(具体来说,hotdeck, whotdeck, and 霍德克瓦)但他们都没有处理样本权重。这whotdeck命令表面上似乎是处理权重,但这些不是样本权重,而是内部估计的重要性权重。

于是我自己写了一个程序并上传到github。它被称为wtd_hotdeck https://github.com/johne13/wtd_hotdeck。请点击该链接以获取更多信息和任何后续更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Stata 中进行加权热甲板插补的简单方法? 的相关文章

  • 使用 Teradata ODBC 与 Teradata 数据库的 SAS 连接

    我正在尝试连接到 SAS 中的 Teradata 我在机器上设置了 Teradata ODBC 目前我的假设是使用 ODBC 是我访问数据库的唯一方法 这是我的连接命令的语法 库名称 Teradata ODBC dsn dsnname ui
  • 在SAS中将字符变量转换为数值

    我正在 SAS 中创建字符变量的数字版本 我用的是最好的32 数字格式以及输入语句 因为我不想丢失任何数据 下面是 SAS 删除数据的示例 我不清楚原因 DATA trial X 1264263 336532 Y INPUT X BEST3
  • 根据 R 中的日期通过线性插值进行数据插补

    我有一个来自不同地块的矿物氮值的大型数据集 其中包括一些我们无法采样的日期缺失的数据 众所周知 土壤中的矿物质氮值会发生变化linearly采样之间 为了简化起见 我创建了一个数据框 其中有 10 个图 其中有 4 个日期 它们之间的距离不
  • 选择数据步骤中具有最大值的观测值

    Table old date 05DEC2016 a 28NOV2016 b 22DEC2016 c 23JAN2017 d 12JAN2017 e 09JAN2017 f 25DEC2016 g 我需要创建一个新表 data new se
  • SAS 哈希表:有没有办法在不同的键上查找/连接或具有可选键

    我经常处理一些键不完美的数据 并且我需要连接来自不同源的数据 我想继续使用哈希对象以获得速度优势 但是当我使用大量数据时 我可能会遇到崩溃 记忆限制 一个简单的概述是我有 2 个不同的键 它们都是唯一的 但并非每条记录都存在 我们将它们称为
  • SAS 替换所有列中的字符

    我有一个 SAS 数据集 必须导出到 csv 文件 我有以下两个相互矛盾的要求 我必须使用分号作为 csv 文件中的分隔符 一些字符变量是从公式中手动输入的字符串 因此它们可能包含分号 我对上述问题的解决方案是转义分号或用逗号替换它 我怎样
  • 解析宏变量名称中包含 %eval 的宏,SAS

    这是一个玩具示例 旨在帮助解决我遇到的更大问题 它本质上涉及在引用更大的宏变量名称时使用 eval 宏 我创建了一个宏变量 x 2 它使用循环 it 的值 从最终输出可以看出该变量已成功创建 但是我只能将其放入日志而不评估 it 1 这当使
  • 从 .Net 中的 SAS 数据源读取数据

    我被要求在 ASP Net 应用程序中从 SAS 读取一些数据 我有 Windows 窗体应用程序的工作代码 然而相同的代码doesn t在 ASP Net 中工作 但我可以尝试一下 具有相同引用的干净项目始终会失败 这是我所得到的连接 S
  • R 与 Stata 中的 Cox 比例风险模型

    我正在尝试使用以下数据在 R 中复制 Stata 的 cox 比例风险模型估计http iojournal org wp content uploads 2015 05 FortnaReplicationData dta http iojo
  • XPT 到 CSV 的转换? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 也许这是错误的地方 但我不太确定该把它放在哪里 我有一个非常大的 XPT 格式的压缩 SAS 文件 我
  • sklearn.impute.IterativeImputer 的实现

    考虑data其中包含以下一些 nan Column 1 Column 2 Column 3 Column 4 Column 5 0 NaN 15 0 63 0 8 0 40 0 1 60 0 51 0 NaN 54 0 31 0 2 15
  • MICE 中的条形图不显示分类变量

    我正在使用miceR 中的包进行多重插补 我仅使用数值变量进行了几次插补 插补方法是预测均值匹配 当我使用stripplot imp 我可以看到所有变量的观察值和估算值 当我估算分类变量和数值变量的组合时 就会出现问题 数值变量的插补方法是
  • XML 映射的 PATH 元素中的 POSITION() 函数在 XML 映射器中有效,但在 SAS 代码中无效

    我正在尝试将 xml 文件导入到 SAS Xml 文件是 Google 对地址请求的 地理响应 这是它的片段
  • 在R中导入SAS cport文件

    我试图通过一些分析找出一种在 R 中导入 SAS cport 文件的方法 有人可以帮助我如何完成这项工作吗 我不想先使用 SAS 将其转换为 csv 然后再导入到 R 中 我尝试用谷歌搜索但无法找到合适的解决方案 Thanks None
  • SAS 全球日期比较

    我正在尝试进行日期比较 但没有得到正确的结果 有谁知道发生了什么事吗 macro ttt let check start 28APR2014 if check start d lt 25may2014 d then let true 1 e
  • 使用 SAS EG 通过代理从 API 下载 JSON 文件

    我正在尝试使用瑞士当局提供的 API 对公司网络内的地址进行地理编码 我的公司使用带有用户名和密码的代理服务器 我是 SAS EG 的新手 这是我迄今为止拥有的代码 我必须匿名一些内容才能被允许在此处发布 filename response
  • 将多个文件读取到多个数据框中

    在d 文件夹中 我有很多Stata文件 例如data aa 1 dta data aa 2 dta data aa 3 dta data bb 1 dta data bb 2 dta data bb 3 dta data cc 1 dta
  • 输出带有SAS表测试结果的表的宏

    Problem 我不是一个非常有经验的 SAS 用户 但不幸的是我可以访问数据的实验室仅限于 SAS 另外 我目前无法访问这些数据 因为它只能在实验室中使用 因此我创建了模拟数据进行测试 我需要创建一个宏来获取值和尺寸PROC MEANS表
  • sas 宏 & 符号

    let test one let one two put test put test put test put test put test 出色地 我完全被这些 符号打败了 我不明白为什么他们在宏变量之前需要这么多 符号 有什么技巧可以掌握
  • 在从一个表中提取的循环内调用执行以执行宏

    我目前有以下情况 macro sqlloop event id lots of code mostly proc sql segments mend 生成一个输出表 名为export table2 我需要能够为另一个表 名为 vars 中的

随机推荐

  • 如何使用 heroku CLI 连接到选定的应用程序

    我正在尝试在 Heroku 上部署我的 Java Web 应用程序 当我制作教程时 我使用创建了一个应用程序赫罗库创建命令 我们可以说它是 name app1 然后我在教程结束后删除了它并创建了一个新的来部署它 让它成为 new app 但
  • 最新的 CSS 父选择器 [重复]

    这个问题在这里已经有答案了 我能找到的关于此的最新信息是W3C 选择器 4 级编辑草稿 http dev w3 org csswg selectors 4 但是 据我所知 它不再提及父选择器 我知道有一个谷歌对此进行的调查 https do
  • 我的 TableView 中分隔线之前的空白

    我有一个关于 UITableView 的问题 我有一个 UITableViewController 并且创建了一个自定义单元格 当我可视化 tableView 时 我在分隔线之前看到了一点空白 正如您在这个屏幕截图中看到的那样 为什么 这是
  • F# 与 OCaml:堆栈溢出

    我最近发现了一个关于适合 Python 程序员的 F http combiol org fs FSUG FS4PPv2 pptx 看完之后 我决定自己实现一个 蚂蚁谜题 的解决方案 有一只蚂蚁可以在平面网格上走动 蚂蚁一次可以向左 向右 向
  • php 分叉问题

    我有以下测试 php 来执行 fork spawn 过程 其中测试还尝试在完成后杀死子进程 僵尸 我希望有一个更有效的流程 其中任何子进程都会尽快从进程表中删除 当前尝试填满了进程表 并导致内存分配问题 导致系统关闭 该应用程序在 Fedo
  • 读取和写入同一个netcat tcp连接

    假设我写入 netcat 连接 tail f file nc localhost 7050 do whatever nc localhost 7050 这里发生的是我们有两个套接字连接 用于执行一些请求 响应 但由于一些原因 这并不理想 我
  • 如何控制 Flexbox 中每列的项目数?

    在弹性容器中 我有 5 个具有列方向的项目 但在一定宽度下 我想每列显示 3 个项目 并强制其他项目换行有没有办法在没有固定高度的情况下做到这一点 我的代码 div class container div class item 1 item
  • 关键事件不适用于多个 ckeditors

    我有这个jsfiddle http jsfiddle net praveen jegan s47M3 41 当用户在屏幕上键入过滤词时 系统会向用户发出过滤词提醒ckeditor 在我的示例中 过滤后的单词are ants and word
  • LinearSVC和SVC(kernel=“线性”)有什么区别?

    I found sklearn svm LinearSVC http scikit learn org stable modules generated sklearn svm LinearSVC html and sklearn svm
  • Git 只允许从开发合并到主控

    我希望能够设置我们的分支 以便合并只能从开发分支进入主分支 我知道这听起来可能很严厉 我应该问自己一个问题 我是否不信任团队中的开发人员 目前我不信任 因为他们刚刚熟悉 Git 我会及时取消该限制 但在那之前这将很有用 是否可以 谢谢 标记
  • oidc-client-js 回调后无状态响应

    我认为这是与 Angular 5 2 8 6 相关的错误 与 Angular 5 2 7 一起工作正常 我创建一个ng5分支 https github com client sdk samples sample angular OidcCl
  • 如何在不通过 PhoneApplicationPage 的情况下访问 WIndows Phone 应用程序中的 NavigationService?

    如何在不通过 PhoneApplicationPage 的情况下访问 Windows Phone 应用程序中的 NavigationService 我的目标是在启动时将其传递给应用程序的主要视图模型 这种技术在 WPF 和 Silverli
  • 使用 LINQ 自动生成类型的简洁参数化查询

    我在工作中结合使用 LINQ 和 Dapper 出于性能原因 我正在用 Dapper 替换我的 LINQ 代码 我有很多通过从 SQL Server 拖放到 Visual Studio 数据库图表中创建的 LINQ 数据对象 在下面的实例中
  • 如何在 Twig 模板中使用 Mustache?它们都有相同的标签分隔符

    我在我的项目中使用 Twig 它使用这些标签 name 我也想将 Mustache 包含在我的项目中 但小胡子也使用相同的标签 name 所以存在冲突并且没有任何效果 Mustache 在他们的文档中提供的解决方案当然不起作用 因为我必须输
  • Gevent猴子解锁

    我正在分多个步骤执行我的程序 其中之一是使用gevent Monkey patch from gevent import monkey monkey patch all 一切都很好 但是我用完之后可以取消补丁吗 我想返回到我的默认套接字函数
  • 实际上,如何从工作区中的目录中删除文件,而这些文件不属于工作区?

    如果我要删除的文件不属于工作区 那么如何从工作区的目录中删除文件 我的文件系统上有一个目录 其中包含从 perforce 获取的文件 但在某些进程运行后 它会在这些目录中创建一些新文件 是否有 perforce 命令可以删除这些生成的不属于
  • 如何调试“4005 路径未找到”错误?

    我正在尝试将 Pusher 与使用 Backbone js 的 Web 应用程序集成 我正在遵循 Pusher 文档中的 Pusher with Backbone 指南 因此 我在应用程序启动时看到 Web 控制台中弹出此错误 Pusher
  • 如果我打开一个已经在 C++ 中打开的文件会发生什么

    想象一下我声明了一个输出文件 如果我用这段代码打开它两次会发生什么 它还可以工作吗 ofstream outfile outfile open record txt std ofstream app outfile open record
  • PHPExcel CSV 到 XLSX

    我在将文件从 CSV 转换为 XLSX 格式时遇到问题 索引 php h1 Convert CSV to XLSX h1
  • 在 Stata 中进行加权热甲板插补的简单方法?

    我想在 Stata 中进行简单的加权热甲板插补 在 SAS 中 等效命令如下 请注意 这是一个较新的 SAS 功能 从 2015 年左右的 SAS STAT 14 1 开始 proc surveyimpute method hotdeck