2017-06-29 22 views
0

使用Stata的双向曲线与置信区间

clear 
score  group  test 
2   0   A 
3   0   B 
6   0   B 
8   0   A 
2   0   A 
2   0   A 
10   1   B 
7   1   B 
8   1   A 
5   1   A 
10   1   A 
11   1   B 
end 

我想散点图通过group每个test(同图)置信区间(实际数据有数以千计的意见)是指score。结果图将有两组两个点。 test==agroup==0 vs group==1)的一组点和test==bgroup==0 vs group==1)的一组点。

我目前的做法很有效,但很费力。我使用egen来计算所有需要的统计数据:通过测试得到的每个组的平均值,观察次数,标准偏差...。我然后collapse的数据和情节。

还有另一种方式,不是吗?

假设是塔塔将能够采取作为其输入scoregrouptest变量,然后计算和现在这个漂亮的标准曲线。在Google上花了很多时间后,我不得不问。

回答

0

虽然有用户编写的程序,但我倾向于statsby作为这里的基本方法。讨论可访问in this paper

本示例以您的数据示例(几乎可执行的代码)为例。一些选择取决于隐含的大置信区间。请注意,如果您的Stata版本不是最新的,则ci的语法将有所不同。 (只是省略means

clear 
input score  group str1 test 
2   0   A 
3   0   B 
6   0   B 
8   0   A 
2   0   A 
2   0   A 
10   1   B 
7   1   B 
8   1   A 
5   1   A 
10   1   A 
11   1   B 
end 
save cj12 , replace 

* test A 
statsby mean=r(mean) ub=r(ub) lb=r(lb) N=r(N), by(group) clear : /// 
ci means score if test == "A" 
gen test = "A" 
save cj12results, replace 

* test B 
use cj12 
statsby mean=r(mean) ub=r(ub) lb=r(lb) N=r(N), by(group) clear : /// 
ci means score if test == "B" 
gen test = "B" 
append using cj12results 

* graph; show sample sizes too, but where to show them is empirical 
set scheme s1color 
gen where = -20 
scatter mean group, ms(O) mcolor(blue) || /// 
rcap ub lb group, lcolor(blue) /// 
by(test, note("95% confidence intervals") legend(off)) /// 
subtitle(, fcolor(ltblue*0.2)) /// 
ytitle(score) xla(0 1) xsc(r(-0.25 1.25)) yla(-10(10)10, ang(h)) || /// 
scatter where group, ms(none) mla(N) mlabpos(12) mlabsize(*1.5) 

enter image description here

我们不能比较的完整代码或您的图形,因为你既没有显示。

+0

这确实保存了几行代码,但我希望这会比手动更少,创建新数据集并不理想。你可以列出你知道的用户书面程序吗?无需解释它们,我可以做这项研究。 – CJ12

+0

Stata是可编程的,这是专业和发烧友程序员的论坛,那么为什么不写你自己的程序来做你想做的事?其实质是,编写代码来绘制置信区间意味着指定(a)你想要什么样的置信区间(b)什么数据(c)被绘制成如何。 (a)(b)(c)共同是庞大而复杂的领土。一个通用的程序将会非常复杂,我认为它不存在。但是例如,'ciplot'(SSC)至少会执行一些你想要的功能,但它不是很一般,我不会维护或扩展它。 –