楼主: xingxf
13192 28

[编程问题求助] 按数值相似度编入已有分组并标记 [推广有奖]

21
monstersivle 发表于 2013-2-3 01:58:59
楼主的原数据中R与year MV_ MB_的匹配出奇地精确,
【会不会是先出的MV_ MB_ ,后通过某算法赋值给R变量的?】

检查办法:
use example,clear
keep if group=="N"
gen nr=year*1000+MV_*10+MB_*1
tabout nr using x.xls, c(min R max R N R) sum  replace
每组最小值=最大值,证明单一性
截取

nrMinMaxN
RRR

2001011

-1.3

-1.3

51

2001012

14.3

14.3

52

2001013

22.3

22.3

52

2001014

43.5

43.5

52

2001015

150.2

150.2

52

2001021

13.6

13.6

50

2001022

33.5

33.5

53

2001023

58.4

58.4

52

2001024

105.3

105.3

52

2001025

352.8

352.8

53

2001031

26.5

26.5

51

2001032

69.2

69.2

52

2001033

102.7

102.7

52

2001034

197.9

197.9

52

2001035

522.5

522.5

53

2001041

29.7

29.7

51

2001042

99.7

99.7

52

2001043

176.8

176.8

52

2001044

348.3

348.3

52

用此方法检查sungmoo荣誉版主的解法:keep if group=="N"
gen nr=year*1000+p*10+q*1
rename r rnew
tabout nr using y.xls, c(min rnew max rnew N rnew min R max R N R) sum replace
截取:
nrMinMaxNMinMaxN
rnewrnewrnewRRR

2001011

-1.3

-1.3

36

-1.3

-1.3

36

2001012

-1.3

-1.3

35

-1.3

14.3

35

2001013

14.3

14.3

31

14.3

22.3

31

2001014

22.3

22.3

42

22.3

22.3

42

2001015

43.5

43.5

103

43.5

150.2

103

2001021

-1.3

-1.3

37

-1.3

13.6

37

2001022

-1.3

-1.3

52

-1.3

33.5

52

2001023

14.3

14.3

54

14.3

58.4

54

2001024

22.3

22.3

51

22.3

105.3

51

2001025

105.3

105.3

71

105.3

352.8

71

2001031

26.5

26.5

35

26.5

26.5

35

2001032

14.3

14.3

44

14.3

69.2

44

2001033

69.2

69.2

58

69.2

102.7

58

2001034

22.3

22.3

45

22.3

197.9

45

2001035

197.9

197.9

80

197.9

522.5

80

2001041

-1.3

-1.3

52

-1.3

29.7

52

2001042

-1.3

-1.3

41

-1.3

99.7

41







不爱其亲而爱他人者,谓之悖德;不敬其亲而敬他人者,谓之悖礼。——《孝经》

22
sungmoo 发表于 2013-2-3 08:04:46
求解释: gen下的group()函数(不是egen下的那个)
https://bbs.pinggu.org/thread-1210548-1-1.html
依据您的解法,跑完,结果也与原数据不一致
请注意18楼中提到的前提:“同一年里,MV_、MB_分别按MV、MB大小得出”。

楼主提供的原数据并不满足这一要求。



另外,楼主的标题似乎不很恰当。本题的主要意思是,根据已有的对旧观测值的分组(按大小分组),对新观测值分组;原分组事实上确定了一系列区间,新观测值根据其所在区间确定分组。

若最初采用cumul等方法分组,各相邻分组的相邻临界值未必精确相等,从而若只根据各分组临界值做新分组,新观测值可能不在任何已有分组。前面的做法舍掉了各原分组的上临界值(只采用下临界值来保证“不间断”的分组)。

23
xingxf 发表于 2013-2-3 09:30:11
sungmoo 发表于 2013-2-3 08:04
https://bbs.pinggu.org/thread-1210548-1-1.html
“......新观测值可能不在任何已有分组。” 分析得很对,这种可能性确实存在,但是对于任意给定的样本,无论用什么方法进行一开始的分组,这种可能性都没办法避免。

24
sungmoo 发表于 2013-2-3 10:14:22
“......新观测值可能不在任何已有分组。” 分析得很对,这种可能性确实存在,但是对于任意给定的样本,无论用什么方法进行一开始的分组,这种可能性都没办法避免。
前面说过了,18楼中的再分组,就舍掉了每个原分组的上临界值。

25
蓝玫小浣熊 发表于 2013-2-3 15:12:36
看了一会,不明白

26
luckykong 发表于 2013-2-3 15:44:39
monstersivle 发表于 2013-2-3 01:14
是啊,我也怀疑原分组是否是像楼主说的按照cumul, equal + ceil()做的。
xtset ID year的结果是
repeat ...
gen n = group(10) 表示将数据从小到大,分为10组。但是使用的时候,需要先对数据sort。
看了一下帖子,发现对于“相似组”的概念,我理解有误。。。
我认为“A”中相似组是这样定义的:将A中数据分为10组,其中第一小组内的数据跟N中第一小组数据相似,A中第二组和N中第二组相似,以此类推。。但是看你们的解释,貌似这样理解有错误。。

27
xingxf 发表于 2013-2-3 22:32:28
luckykong 发表于 2013-2-3 15:44
gen n = group(10) 表示将数据从小到大,分为10组。但是使用的时候,需要先对数据sort。
看了一下帖子, ...
你看看我说的那个按身高体重排序的例子就明白了。

28
luckykong 发表于 2013-2-4 00:37:44 来自手机
xingxf 发表于 2013-2-3 22:32
你看看我说的那个按身高体重排序的例子就明白了。
呃~~我明白了,刚刚只是说我犯错的原因~~
不过暂时没想到好方法,没法帮到你~

29
xingxf 发表于 2013-2-4 03:50:47
luckykong 发表于 2013-2-4 00:37
呃~~我明白了,刚刚只是说我犯错的原因~~
不过暂时没想到好方法,没法帮到你~
没关系,还是要谢谢你。另外sungmoo已提供一种解法,我已设置成最佳答案,你可以看看。

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-22 15:56