楼主: 6825000514
11088 9

倾向性得分匹配PSM怎么控制行业和年份 [推广有奖]

  • 0关注
  • 1粉丝

本科生

86%

还不是VIP/贵宾

-

威望
0
论坛币
1292 个
通用积分
1.0001
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
402 点
帖子
35
精华
0
在线时间
176 小时
注册时间
2019-1-31
最后登录
2024-10-3

楼主
6825000514 发表于 2020-6-30 01:06:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
倾向性得分匹配PSM怎么控制行业和年份?怎么把PSM和fixed effect模型合并在一起呢?

我一开始写的code是这样的:
psmatch2 gender x1 x2 x3 x4 i.year i.industry, outcome(Y) n(4) cal(0.01) ate ties logit common


但是我导师说不能用i.year i.industry ,要用if。他的原话是这样的:
Your PSM matching (logistic) regression needs some fine tuning: you are not matching correctly on industry and year. As per your current code, the closest year and industry match will be sought, which is wrong because in case of these two variables we want an EXACT match. For this you need to write a loop and use and “if” statement for an exact match on industry and year.  

于是我上网查了一下,是不是要把code改成这样?  但是跑不出结果,求大神指教!!
forvalues i =1/48{
quietly psmatch2 gender x1 x2 x3 x4 if indsutry == `i', outcome(Y) n(4) ate ties logit common                  
}




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:PSM 倾向性 fixed effect regression Variables 倾向性得分匹配PSM

沙发
6825000514 发表于 2020-6-30 18:28:19
更正一下,这个应该不是控制行业和年份,应该是叫做按行业和年份分组,我查了一下官方给的code是这样的:
The following code illustrates how to match within exact cells and then calculate the average effect for the whole population.

        g att = .
        egen g = group(groupvars)
        levels g, local(gr)
        qui foreach j of local gr {
                psmatch2 treatvar varlist if g==`j', out(outvar)
                replace att = r(att) if  g==`j'
        }
        sum att


但是我还是跑不数来结果,结果显示 qui foreach j of local gr {
no observations
r(2000);

求会的大神指教啊!

藤椅
KUAILEDEJINGYU 学生认证  发表于 2020-7-2 17:13:55
6825000514 发表于 2020-6-30 18:28
更正一下,这个应该不是控制行业和年份,应该是叫做按行业和年份分组,我查了一下官方给的code是这样的:
...
请问您解决了吗

板凳
KUAILEDEJINGYU 学生认证  发表于 2020-7-2 17:17:20
我也需要固定年份行业,但我不知道怎么办

报纸
wangjunlinga 发表于 2020-8-2 13:44:23
楼主可以加你微信么,我的 17824831376,想请教你

地板
湘江之水 发表于 2020-8-20 11:37:45

7
班琦 学生认证  发表于 2020-10-27 18:40:49
楼主解决了吗  我是单独把政策年份单独截出来了  至于行业就不懂怎么整了

8
songter 发表于 2022-8-6 02:02:32
楼主解决了吗,我也遇到同样问题!

9
张蚊香 发表于 2022-12-9 20:29:00
您好,请问您解决了吗这个问题

10
赵安豆 发表于 2025-6-3 20:59:16
倾向性得分匹配(Propensity Score Matching,PSM)是一种在观察数据中模拟随机对照试验的方法。当我们想要控制行业和年份等固定效应时,在PSM的过程中,需要确保这些变量是精确匹配的,而不是基于某个近似值。

按照你导师的说法,他建议用`if`条件语句来实现对行业(industry)和年份(year)的精确匹配,这是因为行业和年份应该是完全相同的才能被视作匹配组。具体的做法是在PSM命令后面加上一个逻辑条件以限定匹配范围,比如:

```stata
psmatch2 gender x1 x2 x3 x4 if industry==t_industry & year==t_year, outcome(Y) n(4) cal(0.01) ate ties logit common
```

这里的`industry==t_industry & year==t_year`只是一个示例,实际上你需要将`t_industry`和`t_year`替换为具体的行业代码和年份值。但是通常情况下,我们并不知道这些具体值,因此需要通过循环或者使用子样本的方式来实现这一目的。

例如,假设你有多个行业(industry)和多年的数据(year),你可以先选择一个基准组或感兴趣的一对(year, industry),然后用`if`语句来指定PSM只在具有相同年份与行业的观测值之间进行匹配。如果需要对所有年份和行业进行处理,则可以使用循环结构。

下面是一个更具体的示例,假设你有三个年份2018、2019、2020以及两个行业A、B:

```stata
foreach year in 2018 2019 2020 {
    foreach industry in A B {
        psmatch2 gender x1 x2 x3 x4 if year'==year & industry'==industry', outcome(Y) n(4) cal(0.01) ate ties logit common
        // 在这里可以添加你后续的分析代码,例如估计处理效应等
    }
}
```

这个循环将为每一年份和每个行业运行PSM命令,并确保只在具有完全相同年份和行业的观测值之间进行匹配。这样做的目的是控制年份和行业固定效应,避免模型中的偏差。

最后,关于如何把PSM和fixed effect模型合并在一起的问题,通常情况下,PSM是在预处理阶段用于平衡对照组与治疗组的协变量分布。在使用PSM匹配后的样本集上运行固定效应模型时(例如,通过`xtreg`等命令),你只需像往常一样指定你的面板数据集和控制年份、行业固定效应即可:

```stata
* 假设你已经用PSM得到了一个匹配的样本集
* 使用这个样本集进行fixed effect回归分析
xtset id year // 确保正确设定面板数据格式
xtreg Y gender x1 x2 x3 x4 i.industry, fe robust
```

请注意,使用`i.`前缀来控制固定效应的前提是你的数据已经被恰当地匹配了。如果之前用PSM生成的是一个特定的匹配样本集,则应确保在回归分析中只包含这些观测值。

以上步骤和建议应该有助于你实现对行业和年份的精确控制,并结合PSM与固定效应模型。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-5 21:33