STATA:利用命令splitsample將集合數(shù)據(jù)集展開(kāi)成個(gè)體數(shù)據(jù)集

一、緣起

1,問(wèn)題

經(jīng)常碰到一些經(jīng)典的案例講解變量的邏輯關(guān)系,沒(méi)有原數(shù)據(jù)只有匯總后的集合數(shù)據(jù),或者原數(shù)據(jù)就是集合數(shù)據(jù),例如R自帶的Titanic數(shù)據(jù)集。這對(duì)于習(xí)慣于處理個(gè)體數(shù)據(jù)集的人來(lái)說(shuō),模擬訓(xùn)練有點(diǎn)麻煩。

例如,辛普森悖論中的經(jīng)典例子。

學(xué)院 女生 女生 女生 男生 男生 男生 合計(jì) 合計(jì) 合計(jì)
申請(qǐng) 錄取 錄取率 申請(qǐng) 錄取 錄取率 申請(qǐng) 錄取 錄取率
商學(xué)院 100 49 49% 20 15 75% 120 64 53.30%
法學(xué)院 20 1 5% 100 10 10% 120 11 9.20%
總計(jì) 120 50 42% 120 25 21% 240 75 31.30%

雖然可以手工進(jìn)行表格的重組,但是我希望能把它轉(zhuǎn)成個(gè)體數(shù)據(jù)集,從而可以進(jìn)行多種統(tǒng)計(jì)方法的模擬訓(xùn)練。

2,嘗試

  1. 函數(shù)runiform()系列,能生成隨機(jī)數(shù)。我不知道如何利用它按比例隨機(jī)抽取樣本。
  2. 命令sample,能隨機(jī)抽取樣本,但是它會(huì)把其他樣本刪除。
  3. 命令reshape,長(zhǎng)寬表轉(zhuǎn)換,卻沒(méi)法把集合數(shù)據(jù)展開(kāi)成個(gè)體數(shù)據(jù)。

二、splitsample命令

在從網(wǎng)上搜索不到解決辦法之后,我開(kāi)始重回檢索STATA的操作手冊(cè)。

  1. 首先我相信STATA應(yīng)該有相關(guān)的命令。
  2. 我判斷我要找的命令應(yīng)該和命令sample、reshape同屬一類(lèi),在同一本操作分冊(cè)中。
  3. 瀏覽【D】?jī)?cè)(Data Management)的命令目錄,查看可能的命令。

哈哈,還真讓我找到了解決我的問(wèn)題的命令splitsample。

語(yǔ)法

splitsample — Split data into random samples

splitsample [varlist] [if] [in], generate(newvar [, replace]) [options]

常見(jiàn)用法

  1. 基礎(chǔ)命令。數(shù)據(jù)隨機(jī)分成兩半,生成新的樣本ID變量,其值默認(rèn)賦為1和2。
splitsample, gen(svar)
  1. 如上,但用選項(xiàng)values()改變賦值。
splitsample, gen(svar) values(0 1)
  1. 數(shù)據(jù)隨機(jī)3等分,其值默認(rèn)為1,2和3。選項(xiàng)nsplit(#)設(shè)置幾等分。
splitsample, gen(svar) nsplit(3)
  1. 按比例(proportions)隨機(jī)切分?jǐn)?shù)據(jù)。選項(xiàng)split()設(shè)置各組比例。
# 第1組樣本占25%,第二組占25%,第三組占50%
splitsample, gen(svar) split(0.25 0.25 0.5)
  1. 按比(ratios)隨機(jī)切分?jǐn)?shù)據(jù)。同樣使用選項(xiàng)split()。
#按1:1:2的比值切分?jǐn)?shù)據(jù)
splitsample, gen(svar) split(1 1 2)
  1. 在指定變量各組中保持切分的比例或比值一致,使用選項(xiàng)balance()。
#各年齡組和性別組的切分比值一致。
splitsample, gen(svar) split(1 1 2) balance(agegrp gender)

三、實(shí)例

# 設(shè)定樣本量
set obs 240 
set seed 1234

# 第一步,從性別開(kāi)始賦值。這一步最好做。男女各120人。
gen sex=1
replace sex=0 in 1/120
label def sex 0 "女" 1 "男"  # 定義性別標(biāo)簽
label values sex sex          #給性別變量sex賦標(biāo)簽

#也可以直接使用splitsample命令
splitsample, gen(gender) values(0,1)

# 男生報(bào)考法學(xué)院和商學(xué)院的比值為5:1
splitsample if sex==1, gen(school) split (5 1) values (0, 1)
# 女生報(bào)考法學(xué)院和商學(xué)院的比值為1:5
splitsample if sex==0, gen(school1) split (1 5) values (0, 1)
# 將分別生成的學(xué)院變量合并
replace school=school1 if school==.
label def school 0 "法學(xué)院" 1 "商學(xué)院"  #定義學(xué)院標(biāo)簽
label values school school  # 給學(xué)院變量school賦標(biāo)簽
tab  school sex

# 由于兩性報(bào)考學(xué)院的比值正好顛倒,所以也可以用另一種處理辦法
splitsample, gen(college) split (1 5) values (0, 1) balance(sex)
recode college (0=1) (1=0) if sex==1

# 根據(jù)錄取率生成錄取變量。
# 錄取率由于有四種情況,所以根據(jù)四種情況分別生成對(duì)應(yīng)的錄取變量
splitsample if sex==0 & school==0, gen(pass) split(0.95 0.5) values(0, 1)
splitsample if sex==0 & school==1, gen(pass1) split(0.51 0.49) values(0,1)
splitsample if sex==1 & school==0, gen(pass2) split(0.25 0.75) values(0,1)
splitsample if sex==1 & school==1, gen(pass3) split(0.9 0.1) values(0,1)
# 然后再合并成一個(gè)錄取變量pass
replace pass=pass1 if sex==0 & school==1
replace pass=pass2 if sex==1 & school==1
replace pass=pass3 if sex==1 & school==0

# 根據(jù)個(gè)體數(shù)據(jù)集,重構(gòu)列聯(lián)表
table (pass) (school sex)
table () (school  sex), stat(fvpercent  pass)

#logit回歸
logit pass sex
logit pass school
logit school sex
logit pass school sex


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容