楼主: zhdking
13713 16

[其他] 如何给多组数据两两之间进行ttest呢? [推广有奖]

11
zhdking 发表于 2012-5-12 22:41:54
sungmoo 发表于 2012-5-12 14:14
forv i=1/6{
loc s=`i'+1
forv j=`s'/7{
好的 好的!!谢谢版主!!
之前从没用过forv 今天真是学习了~
另外 我有新的问题,
因为我要运行49个变量,
就要forv i=1/48{
loc s=`i'+1
forv j=`s'/49{
ttest x`i'=x`j'
}

但是,因为变量实在太多了~我主要想关注p值,找单侧检验的显著值及较小的,
但是如何保存呢?我设想的,
gen p=min(r(p_l), r(p_u)) if r(p)<=0.2
或者
save p=min(r(p_l), r(p_u)) if r(p)<=0.2
当然,p只是我自己取的一个变量名字,随便一个m,n也可以。
但不知该如何组合这些个命令,以及不知该放在什么位置。
总之想把每次运行完ttest后,比较的p值给存起来,因为p太多了,出来的结果也都占用空间,我之前单纯一个个运行的时候,都得运行一段,把p给复制下来,再运行。

12
sungmoo 发表于 2012-5-12 23:17:55
set ob 1176
foreach i in u v p pl pu{
g `i'=.
}
forv i=1/48{
loc s=`i'+1
forv j=`s'/49{
loc n=`n'+1
replace u=`i' in `n'
replace v=`j' in `n'
ttest x`i'=x`j'
replace p=r(p) in `n'
replace pl=r(p_l) in `n'
replace pu=r(p_u) in `n'
}
}
keep u-pu
已有 1 人评分论坛币 收起 理由
dxystata + 20 好的意见建议

总评分: 论坛币 + 20   查看全部评分

13
zhdking 发表于 2012-5-12 23:44:45
sungmoo 发表于 2012-5-12 23:17
set ob 1176
foreach i in u v p pl pu{
g `i'=.
再次真诚谢过~
真是高手啊
今天太累了,脑子已经不转了,
明个一早起来好好钻研 在stata上运行下~
太感谢了!
您也早休息:)

14
zhdking 发表于 2012-5-13 11:33:22
sungmoo 发表于 2012-5-12 23:17
set ob 1176
foreach i in u v p pl pu{
g `i'=.
完全按照您的程序运行的,可是,在前面33个变量都是缺失,使得最终只是进行到x41与x44的ttest。
剩下的x41与x45,,,,x49,以及x42等的都没有进行t检验,正好也是剩下的33个没做。
当然,这33个跟我之前的比起来已经算是相当小的工作量了,我也可以自己再用笨办法做一遍。
但还是想请教 前面的33个缺失值是怎么回事呢?
我曾经很弱的把set ob 1209
可是这下把缺失值弄得更多了,只从1177算起,只算了33个值。。。

15
zhdking 发表于 2012-5-13 12:36:45
sungmoo 发表于 2012-5-12 23:17
set ob 1176
foreach i in u v p pl pu{
g `i'=.
sorry啊,, 我又重新运行了一遍,是可以的
我开始也纳闷呢 不知stata为什么,,有时运行出问题,,
现在终于好了~谢了

16
yingqidao 发表于 2013-12-12 02:55:05
学习了 感谢提供帮助

17
不可以游息5 学生认证  发表于 2020-12-4 16:08:06
sungmoo 发表于 2012-5-11 23:01
这个需要贴出数据结构。特别是,如何表现分组的。

"x1、x2、……、xn"形式还是"x、g"形式?
想继续询问楼主,如果是"x,g"形式(g是组别变量)的该如何做呢?谢谢!

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

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