楼主: woshizhu99
9907 4

[数据管理求助] 计数问题:如何求得满足特定条件的样本数量 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

初中生

9%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
56 点
帖子
4
精华
0
在线时间
16 小时
注册时间
2013-4-1
最后登录
2015-1-23

楼主
woshizhu99 学生认证  发表于 2014-10-9 09:49:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
先谢过各位!
目前在研究 不同人群的潜在结婚对象问题。 例如,年龄为a的样本,其潜在对象为年龄a+-5的异性;教育程度为大学本科的样本,其潜在对象为教育程度初中—博士的异性。

假设有数据如下:_n  age  educ  sex
1     20   3高中   1
2     25   4大学   2  
3     40   4大学   1  
4     30   1小学   1
5     28   4大学   1
6     25   3高中   2
7     40   3高中   2

现在要建立一个新变量 _c,表示潜在结婚对象的人数。
以样本编号为2的女性为例,在该样本中,其潜在对象为样本编号 1 和 5,其余人均因不同原因不满足要求。所以,_c=2
以样本编号为3的男性为例,在该样本中,其潜在对象为样本编号 7       ,其余人均因不同原因不满足要求。所以,_c=1

这个问题让我很困扰,不知如何下手。

我的思路是,先建立一串虚拟变量,如 for_age25 和 for_age40,用来指明从年龄上看满足要求的样本。再建立一串,如for_educ4,用来指示满足教育要求的对象。建立完成后,数据如下:

_n  age  educ  sex  for_age25  for_age40    for_educ4  
1     20   3高中   1        1                0                1
2     25   2初中   2        1                0                1
3     40   4大学   1        0                1                1
4     35   2初中   1        0                1                1
5     28   4大学   1        1                0                1
6     25   2小学   2        1                0                0

7     40   3高中   2        0                1                1

于是,_c等于若干虚拟变量均为1的观测值的数量。

求一段代码求 _c
(目前在想能不能用 egen anycount 来处理)
二维码

扫码加我 拉你入群

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

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

关键词:样本数量 样本数 anycount Count 教育程度 计数 egen anycount

沙发
ermutuxia 发表于 2014-10-9 13:30:50
gen _c=0

forvalues i=1/7 {

forvalues j=1/7 {

if (abs(age(`i')-age(`j'))<=5 & sex(`i')!=sex(`j')) {
replace _c=_c+1 in `i'
}

}

}
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
crystal8832 + 12 + 1 + 1 热心帮助其他会员

总评分: 论坛币 + 12  学术水平 + 1  热心指数 + 1   查看全部评分

藤椅
woshizhu99 学生认证  发表于 2014-10-9 16:14:56
ermutuxia 发表于 2014-10-9 13:30
gen _c=0

forvalues i=1/7 {
谢谢,你的代码确实能解决问题。
不过,我现在手头数据观测值有100万以上,这样对每一个样本逐一累加,运行起来会不会很慢?

板凳
ermutuxia 发表于 2014-10-10 09:31:29
woshizhu99 发表于 2014-10-9 16:14
谢谢,你的代码确实能解决问题。
不过,我现在手头数据观测值有100万以上,这样对每一个样本逐一累加,运 ...
没关系,你最好使用配置比较高的电脑运行程序

报纸
woshizhu99 学生认证  发表于 2014-10-10 14:19:50
ermutuxia 发表于 2014-10-10 09:31
没关系,你最好使用配置比较高的电脑运行程序
直接按照这个算法来,I7笔记本大概要跑半个月。。。

不过依旧按照你的思路,改良了下算法,已经达成目的。不过还是算了十几个小时。
不知道有没有更高效的算法来进行计数。

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

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