2017-06-29 24 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)至少會執行一些你想要的功能,但它不是很一般,我不會維護或擴展它。 –