使用
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
我想用score
为每个group
(相同图表)以置信区间({真实数据有数千个观察值)散布平均值test
。结果图将有两组两个点。 test==a
(group==0
vs group==1
)的一组点和test==b
的一组点(group==0
vs group==1
)。
我目前的方法有效,但很费力。我使用egen
计算所有需要的统计数据:通过测试得到的每组的平均值,观察数,标准差。然后我collapse
数据和情节。
必须有另一种方式,不是吗?
我假设 Stata能够将score
group
和test
变量作为输入,然后计算并呈现这个非常标准的图表。
在Google上花了很多时间后,我不得不问。
答案 0 :(得分: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)
我们无法比较您的完整代码或图表,因为您没有显示。