You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

面板数据下计算受孕至出生期间平均烟雾暴露量的方法问询

问题分析与实现方案

错误原因说明

你之前的代码无法得到正确结果有两个核心原因:

  • inrange()函数参数不符合要求,该函数标准语法为inrange(校验变量, 最小值, 最大值),你传入的参数数量错误,且逻辑上没有关联到妊娠全周期的日期范围
  • 当前数据集每行仅包含新生儿出生当日的烟雾暴露值,没有覆盖受孕到出生之间所有日期的暴露数据,无法直接计算周期均值

实现步骤(基于Stata)

步骤1:日期格式标准化

首先将字符串格式的日期转为Stata内部可计算的日期格式:

* 原数据日期格式为日/月/年,使用DMY参数转换
gen dt_birth_stata = date(dt_birth, "DMY")
gen dt_conception_stata = date(dt_conception, "DMY")
* 设为可读日期展示格式
format dt_birth_stata dt_conception_stata %td

步骤2:准备每日烟雾暴露基准数据集

你需要提前准备一份覆盖所有妊娠时段的全局每日烟雾暴露数据集(命名为smoke_daily.dta),结构如下:

日期变量当日烟雾暴露量
datesmoke

步骤3:扩展样本观测到妊娠全周期

将每个新生儿的单条观测,扩展为和妊娠天数一致的多条观测,每条对应妊娠期间的一天:

* 按妊娠天数扩展行数
expand days_gestation
* 生成妊娠周期内的逐日日期
bysort dt_birth_stata dt_conception_stata: gen preg_date = dt_conception_stata + _n - 1
format preg_date %td

步骤4:匹配每日烟雾暴露值

将扩展后的样本数据集和每日烟雾基准数据集匹配,关联得到妊娠期间每一天的烟雾暴露值:

* 匹配前将smoke_daily.dta的日期变量名改为preg_date,和样本数据集对齐
merge m:1 preg_date using "smoke_daily.dta", keep(match master) keepusing(smoke) nogen

步骤5:计算妊娠周期平均暴露量

按新生儿维度分组计算均值,之后可缩回单条/新生儿的结构:

* 若有唯一新生儿id,优先使用id作为分组变量
bysort dt_birth_stata dt_conception_stata: egen mean_smoke_preg = mean(smoke)
* 保留每个新生儿的单条结果
bysort dt_birth_stata dt_conception_stata: keep if _n == 1

内容的提问来源于stack exchange,提问作者acarr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:48:01