楼主: vincent829
14471 8

[其他] 关于r(N) [推广有奖]

  • 0关注
  • 0粉丝

硕士生

0%

还不是VIP/贵宾

-

威望
0
论坛币
515 个
通用积分
0.1673
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1736 点
帖子
99
精华
0
在线时间
108 小时
注册时间
2005-10-6
最后登录
2013-9-25

楼主
vincent829 发表于 2009-3-2 20:51:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
<p>下面是个program,只需注意加粗部分</p><p>program define skewt, rclass<br/>version 10.1<br/>syntax varlist (numeric)[if] [in], [bs saving(string) size(integer 4) reps(integer 1000) replace *]<br/>marksample touse <br/>foreach var of varlist `varlist' { <br/>capture confirm numeric variable `var'<br/> if _rc==0 {<br/>  qui sum `var' if `touse', detail<br/>  di ""<br/>  di in gr _col(5)  "`var'- stats from the sample"<br/>  di ""<br/>  di in gr _col(5) <strong>"N coefficient  = `=sqrt(r(N))'"</strong><br/>  di in gr _col(5) "S-coefficient  = `=r(mean)/r(sd)'"<br/>  di in gr _col(5) "G-coefficient  = `r(skewness)'"<br/>  di in gr _col(5) "Sample mean    = `r(mean)'"<br/>  di ""<br/>  local ratio = (`=sqrt(r(N))')*((`=r(mean)/r(sd)') + ((1/3) * (`r(skewness)') * ((`=r(mean)/r(sd)')^2)) + ((1/(6*((`=sqrt(r(N))')^2)))* (`r(skewness)')))<br/>  return scalar ratio_`var'=`ratio'<br/> }<br/> else {<br/>  di as input "`var'" as text " is not a numeric variable skewness adjusted t-statistic cannot be calculated."<br/> }</p><p>if "`bs'" == "bs" {<br/> if "`saving'" != "" {<br/>  local saving `saving'_`var'<br/> }<br/> bootstrap r(ratio_`var'), saving("`saving'", `replace') reps(`reps') size(`=int(_N/`size')') `options': skewt `var'<br/> }<br/>}<br/>end<br/></p><p>在上述命令中,加粗的部分不理想,因为只能返回no of observation,不管missing还是nonmissing,我想返回no of nonmissing observation,怎么达到,谢谢</p>
二维码

扫码加我 拉你入群

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

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

关键词:coefficient observation nonmissing marksample EFFICIENT detail

沙发
sungmoo 发表于 2009-3-2 20:58:00

sum x if x<.

藤椅
vincent829 发表于 2009-3-2 21:20:00

你的意思是改成 qui sum `var' if `touse'&nonmissing, detail?

板凳
vincent829 发表于 2009-3-2 21:31:00

结果是出现错误r(111)nonmissing not found

我又试了qui sum `var' if `touse'&`var'!=., detail

结果是和没加那个条件一样,返回的还是包括了missing值的数量


报纸
sungmoo 发表于 2009-3-2 21:40:00

sum x等价于sum x if x<.

sum x本来就不会考虑missing吧?

地板
vincent829 发表于 2009-3-2 22:02:00

对,sum不考虑missing,谢谢,

我做出来的结果,对每个variable,N coefficient都一样,我怀疑一直用的第一个variable的r(N),可就是查不出程序哪里有问题

对了,这个是用来求Bootstrapped Skeweness adjusted t数值的

7
arlionn 在职认证  发表于 2009-3-3 08:38:00
以下是引用vincent829在2009-3-2 20:51:00的发言:

下面是个program,只需注意加粗部分

program define skewt, rclass
version 10.1
syntax varlist (numeric)[if] [in], [bs saving(string) size(integer 4) reps(integer 1000) replace *]
marksample touse   /*这个处理会促使每个变量中的观察值相同*/
foreach var of varlist `varlist' {
capture confirm numeric variable `var'
 if _rc==0 {
  qui sum `var' , detail  /*去掉 if `touse'*/
  di ""
  di in gr _col(5) "N coefficient  = `=sqrt(r(N))'"

  qui sum `var' if `touse', detail  

  di in gr _col(5)  "`var'- stats from the sample"
  di ""

  di in gr _col(5) "S-coefficient  = `=r(mean)/r(sd)'"
  di in gr _col(5) "G-coefficient  = `r(skewness)'"
  di in gr _col(5) "Sample mean    = `r(mean)'"
  di ""
  local ratio = (`=sqrt(r(N))')*((`=r(mean)/r(sd)') + ((1/3) * (`r(skewness)') * ((`=r(mean)/r(sd)')^2)) + ((1/(6*((`=sqrt(r(N))')^2)))* (`r(skewness)')))
  return scalar ratio_`var'=`ratio'
 }
 else {
  di as input "`var'" as text " is not a numeric variable skewness adjusted t-statistic cannot be calculated."
 }

if "`bs'" == "bs" {
 if "`saving'" != "" {
  local saving `saving'_`var'
 }
 bootstrap r(ratio_`var'), saving("`saving'", `replace') reps(`reps') size(`=int(_N/`size')') `options': skewt `var'
 }
}
end

在上述命令中,加粗的部分不理想,因为只能返回no of observation,不管missing还是nonmissing,我想返回no of nonmissing observation,怎么达到,谢谢

我想上面的修改应该符合你的要求了。

[em05]

[此贴子已经被作者于2009-3-3 8:38:38编辑过]

8
vincent829 发表于 2009-3-4 06:38:00

谢谢版主,

marksample touse是跟在syntax,返回0/1. qui sum `var' if `touse', detail  其实也就是qui sum `var' if 0(or 1), detail,为什么要放在那里,没看懂,请指教

我后来想了个办法,用foreach var in varlist `varlist' {

skewt `varlist'

}虽然笨了点,呵呵

还有一个相关的问题,这个自编的命令当中没有关于权重的选项,附这个命令的syntax, skewt varlist [if] [in] , [bs seed(#) reps(#) size(#) nowarn nohead saving (bs) replace]
如果求的是普通算术平均没有问题,但如果是针对权重平均求bootstrapped skewenss-adjusted t,怎么办呢?

9
arlionn 在职认证  发表于 2009-3-4 19:56:00
以下是引用vincent829在2009-3-4 6:38:00的发言:

谢谢版主,

marksample touse是跟在syntax,返回0/1. qui sum `var' if `touse', detail  其实也就是qui sum `var' if 0(or 1), detail,为什么要放在那里,没看懂,请指教

A: marksample touse 的作用在于设定一个0/1变量`touse',syntax中用到的样本对应于`touse'的观察值为1,否则为零。简言之,用于标记后续分析中真正用到的样本。

你可以试一下我修改后的程序是否可以达到你的目的。

我后来想了个办法,用foreach var in varlist `varlist' {

skewt `varlist'

}虽然笨了点,呵呵

还有一个相关的问题,这个自编的命令当中没有关于权重的选项,附这个命令的syntax, skewt varlist [if] [in] , [bs seed(#) reps(#) size(#) nowarn nohead saving (bs) replace]
如果求的是普通算术平均没有问题,但如果是针对权重平均求bootstrapped skewenss-adjusted t,怎么办呢?

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

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