楼主: vincent829
10974 28

[数据管理求助] cut()不能和by一起用,怎么办? [推广有奖]

21
sungmoo 发表于 2009-7-5 12:39:18
voodoo 发表于 2009-7-5 12:11 确实,往往我们要寻求的是程序直观可读性和执行效率之间的权衡。当然也有例外:帖子http://www.pinggu.org/bbs/thread-451864-1-1.html中sungmoo所提出的方法就比“变连乘为连加”的方法要好。
我不太明白:它“例外”的意义指什么。

如果从我个人的“直观”的意义上说,“连加法”更直观。

22
voodoo 发表于 2009-7-5 13:46:15
sungmoo 发表于 2009-7-5 12:36
voodoo 发表于 2009-7-5 12:31 可读性确实因人而异,但关键是“普通的”Stata学习者如何理解你程序的可读性——这应该是个客观标准。
那么,一个命令,有多“普通”,才可以由“普通的”学习者理解呢?学习者有多“普通”,才算“普通”呢?

这有客观标准吗?
用“普通的”这个词也许太普通了,应该用经济学中“代表性”(representative)这一词也许更恰当、更学术化一点。“代表性的Stata学习者”! :-)

至于“客观标准”,我想假如我们能从Stata学习者中抽取一个100人的随机样本,然后让它们对两段程序的可读性进行评价,假如60个人认为sungmoo程序的可读性比voodoo的强,那么我们是否可以以0.10 的显著性水平(双侧pr=0.056888)拒绝“原假说H0: Stata学习者认为两段程序的可读性相同”?或者说我们是否可以以0.05 的显著性水平(单侧pr=0.028444)拒绝“原假说H0: Stata学习者认为voodoo程序的可读性比sungmoo的要好”?如此这般的答案是否够“客观”呢? :-)
巫毒上传,必属佳品!
坛友下载,三思后行!

23
sungmoo 发表于 2009-7-5 17:54:10
voodoo 发表于 2009-7-5 13:46 至于“客观标准”,我想假如我们能从Stata学习者中抽取一个100人的随机样本,然后让它们对两段程序的可读性进行评价,假如60个人认为sungmoo程序的可读性比voodoo的强,那么我们是否可以以0.10 的显著性水平(双侧pr=0.056888)拒绝“原假说H0: Stata学习者认为两段程序的可读性相同”?或者说我们是否可以以0.05 的显著性水平(单侧pr=0.028444)拒绝“原假说H0: Stata学习者认为voodoo程序的可读性比sungmoo的要好”?如此这般的答案是否够“客观”呢? :-)
个人以为,如果以此种方式说明“客观”,其实不必披上统计学的外衣。

直接说成:“客观”以投票决定,就可以了。

再简单说,即以“民主”定义“客观”。这是否会导致“多数人暴力”?(当然这又是另一个问题了:以投票来决定或定义“客观标准”,会带来哪些问题)

24
sungmoo 发表于 2009-7-5 18:07:22
即使披上了统计学的外衣,我们为何选择0.1的显著性水平(或者其他某个水平)来设计拒绝域?

这个显著性水平的选择,是否还要通过投票来决定?

25
vincent829 发表于 2009-7-5 18:56:27
谢谢两位,sungmoo和voodoo
我用两位的方法对样本都进行了分组,结果是对于一个接近60k观测值的样本来说,出现不一样的分组情况只有168例,应该在接受范围之内吧

26
voodoo 发表于 2009-7-6 18:31:41
vincent829 发表于 2009-7-5 18:56
谢谢两位,sungmoo和voodoo
我用两位的方法对样本都进行了分组,结果是对于一个接近60k观测值的样本来说,出现不一样的分组情况只有168例,应该在接受范围之内吧
先验相同的方法却带来不同的结果,这事实上也是问题,而且是大问题。我个人能想到的原因有两个:
1. voodoo的方法并未忽略missing values,而sungmoo的cumul命令则忽略;
2. 更可能的原因是由于sort命令对相同mv公司排序的随机性导致(见如下程序示例,也可参见help sort),进而在不同情况下将相同mv的公司分入不同但相邻的group。sort命令有个stabe选项可以避免这一问题,但由于sungmoo的cumul命令中也暗含一个sort `by' `varlists'语句(viewsource cumul.ado),就不知该如何解决了。

clear
set obs 10
gen id = _n
gen mv = 1 in 1/5
replace mv = _n in 6/10
gen rnd = uniform()
sort rnd
list id mv  // 1st before sorting
preserve
sort mv
list id mv  // 1st after sorting
restore
list id mv  // 2nd before sorting
sort mv
list id mv  // 2nd after sorting
巫毒上传,必属佳品!
坛友下载,三思后行!

27
voodoo 发表于 2009-7-7 11:39:47
voodoo 发表于 2009-7-6 18:31
2. 更可能的原因是由于sort命令对相同mv公司排序的随机性导致(见如下程序示例,也可参见help sort),进而在不同情况下将相同mv的公司分入不同但相邻的group。sort命令有个stabe选项可以避免这一问题,但由于sungmoo的cumul命令中也暗含一个sort `by' `varlists'语句(viewsource cumul.ado),就不知该如何解决了。
在Stata FAQs上看到一个关于sort随机性的提醒:http://www.stata.com/support/faqs/lang/sort.html
巫毒上传,必属佳品!
坛友下载,三思后行!

28
brcs8 学生认证  发表于 2018-4-9 21:51:35
sungmoo 发表于 2009-7-2 21:10
*不知以下可否实现目标?(酌情可去掉eq选项)
gsort year -mv
by year: cumul mv, g(group) eq
请问一下这个命令为什么总是第一等级的少一个,然后多出一个等级,比如说一共有30个值需要按照顺序大小五等分,应该每个等级都是六个值,但是group值是0 1 2 3 4 5 ,0有5个,多出一个5,这是什么原因啊

29
brcs8 学生认证  发表于 2018-4-10 20:16:34
sungmoo 发表于 2009-7-2 23:33
*如果公司的次序不重要,可以去掉eq项。试一下下面:

gsort year mv
为什么会多出一组,然后第一组少一个值

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

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