CITY COUNTRY CITY

tsfmysd's note

Category: Stata

LOG ENTRY: MITA 4xx

てをいれるたびにミスがみつかる。が、二次分析がまだマシなのは少なくとも原票に戻るという作業がないので、間違っているのはいつも自分という点だけは信頼できる(謎

ねむい。

///////////////////////////////////////////////////////////////////////
//////////* insheet *//////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
* 使うのは、jgss2000-2003, 2005, 2006, 2008, 2009lcs, 2010, 2012, ssm2005, jlps2007
* それぞれでやるとあとでめんどくさそうなので、いったん全部合体させてから整える
* 手順1 それぞれのデータをcsvに変換してファイル名をリネーム(ここまで手動)
* 手順2 insheet して、1)データid、2)調査の種類を識別する変数、3)調査年変数を付与して、dtaファイルで保存
insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2000_2003.csv, clear
gen survey = 0
gen rid = 0
recode survey 0 = 1
recode rid 0 = 1 if ryear==2000
recode rid 0 = 2 if ryear==2001
recode rid 0 = 3 if ryear==2002
recode rid 0 = 4 if ryear==2003
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2000_2003.dta, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2005.csv, clear
gen survey = 1
gen rid = 5
gen ryear = 2005
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2005.dta, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2006.csv, clear
gen survey = 1
gen rid = 6
gen ryear = 2006
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2006.dta, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2008.csv, clear
gen survey = 1
gen rid = 7
gen ryear = 2008
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2008.dta, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2009lcs.csv, clear
gen survey = 1
gen rid = 8
gen ryear = 2009
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2009lcs.dta, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2010.csv, clear
gen survey = 1
gen rid = 9
gen ryear = 2010
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2010, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2012.csv, clear
gen survey = 1
gen rid = 10
gen ryear = 2012
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2012, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/ssm2005.csv, clear
gen survey = 2
gen rid = 11
gen ryear = 2005
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/ssm2005, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2007y.csv, clear
gen survey = 3
gen rid = 12
gen ryear = 2007
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2007y, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2007m.csv, clear
gen survey = 3
gen rid = 13
gen ryear = 2007
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2007m, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2011ya.csv, clear
gen survey = 3
gen rid = 14
gen ryear = 2011
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2011ya, replace

insheet using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2011ma.csv, clear
gen survey = 3
gen rid = 15
gen ryear = 2011
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2011ma, replace

/////////////////////////////////////////////////////////////////////
//////////* merge *//////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
/* jgss2000-2003がマスター */
clear
set maxvar 10000
use /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2000_2003.dta, clear
* エラーでるので destring
destring szffttl, replace
destring szffonly, replace
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2005.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2006.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2008.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2009lcs.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2010.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jgss2012.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/ssm2005.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2007y.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2007m.dta, force
destring dq43, replace
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2011ya.dta, force
append using /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/jlps2011ma.dta, force

/* label */
label define survey 1 jgss 2 ssm 3 jlps
label values survey survey
tab survey

label define rid 1 jgss2000 2 jgss2001 3 jgss2002 4 jgss2003 5 jgss2005 6 jgss2006 ///
7 jgss2008 8 jgss2009lcs 9 jgss2010 10 jgss2012 11 ssm2005 12 jlps2007y 13 jlps2007m 14 jlps2011ya 15 jlps2011ma
label values rid rid
tab rid

//////////* drop *//////////
* jgss2003にはきょうだい数がないのでドロップ\(^o^)/
drop if ryear==2003
* jgss2012には出身都道府県がないのでドロップ\(^o^)/
drop if ryear==2012

/* 合体させただけのrawデータでまずは保存しとく */
save /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/merge_raw.dta, replace

/////////////////////////////////////////////////////////////////////////////
//////////* run *////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
use /Users/tsfmysd/Dropbox/Reserch/HELMES/dataset/merge_raw.dta, clear
* sample size 38368

//////////////////////////////////////////////////////////////////////////
//////////* sample set *//////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
* この分析の対象: 20-39歳 & 未婚者 & 学生ではない & 両親のどちらかが健在

//////////* age *///////////////////////////////////////////////////////////
* jgss: ageb, ssm: q01_2a, jlps: 2007-ybirth
gen age = 0
replace age = ageb if survey==1
replace age = q01_2a if survey==2

* jlpsには、年齢変数がない。wave1(1966-1986 20-40歳)、追加サンプル(1966-1986 24-44歳)
* wave1 サンプリング2007年12月 実査2007年1-3月、追加サンプル サンプリング2010年12月 実査2011年1-3月
* 可能な限り40歳以下が多めになるように計算 floorで小数点以下切り捨て
gen jlps2007age = ((2007*12+3)-(ybirth*12+mbirth))/12 if ryear==2007
gen jlps2007agefloor = floor(jlps2007age)
gen jlps2011age = ((2011*12+3)-(ybirth*12+mbirth))/12 if ryear==2011
gen jlps2011agefloor = floor(jlps2011age)
tab jlps2007agefloor
tab jlps2011agefloor
replace age = jlps2007agefloor if ryear==2007
replace age = jlps2011agefloor if ryear==2011
tab age

keep if age < 40
tab age
tab age rid
* 15432 ズサーc⌒っ゚Д゚)っ

gen agegroup=0
recode agegroup 0=1 if age>=20 & age<=24
recode agegroup 0=2 if age>=25 & age<=29
recode agegroup 0=3 if age>=30 & age<=34
recode agegroup 0=4 if age>=35 & age<=39
tab agegroup

label define agegroup 1 age20_24 2 age25_29 3 age30_34 4 age35_39
label values agegroup agegroup

//////////* marital status *///////////////////////////////////////////////////
/* jgss */
* 2000-2003, 2005, 2006以降(5,6追加)で値ラベルが違う
* jgss の婚姻上の地位の欠損がまったくない、んー? 全年齢データのdomarryは2人無回答ダケド
* jgss2000-2003
gen marital_status=0
recode marital_status 0=1 if marc==1 & (ryear==2000 | ryear==2001 | ryear==2002 | ryear==2003)
recode marital_status 0=2 if marc==2 & (ryear==2000 | ryear==2001 | ryear==2002 | ryear==2003)
recode marital_status 0=3 if marc==3 & (ryear==2000 | ryear==2001 | ryear==2002 | ryear==2003)

* jgss20005-2012
* 5「離婚を前提に別居中」=1、6「同棲」=3(日本の同棲はこの分析では有配偶とはみなさない)
recode marital_status 0=1 if marc==1 & (ryear==2005 | ryear==2006 | ryear==2008 | ryear==2009 | ryear==2010 | ryear==2012)
recode marital_status 0=2 if marc==2 & (ryear==2005 | ryear==2006 | ryear==2008 | ryear==2009 | ryear==2010 | ryear==2012)
recode marital_status 0=2 if marc==3 & (ryear==2005 | ryear==2006 | ryear==2008 | ryear==2009 | ryear==2010 | ryear==2012)
recode marital_status 0=3 if marc==4 & (ryear==2005 | ryear==2006 | ryear==2008 | ryear==2009 | ryear==2010 | ryear==2012)
recode marital_status 0=1 if marc==5 & (ryear==2005 | ryear==2006 | ryear==2008 | ryear==2009 | ryear==2010 | ryear==2012)
recode marital_status 0=3 if marc==6 & (ryear==2005 | ryear==2006 | ryear==2008 | ryear==2009 | ryear==2010 | ryear==2012)

/* ssm2005 */
* q24_1 1 未婚 2 結婚 3 離別 4 死別 9 dkna
recode marital_status 0=1 if q24_1==2
recode marital_status 0=2 if q24_1==3
recode marital_status 0=2 if q24_1==4
recode marital_status 0=3 if q24_1==1

/* jlps */
* 2007 zq50 1 未婚 2 既婚有配偶 3 死別 4 離別
recode marital_status 0=1 if zq50==2
recode marital_status 0=2 if zq50==3
recode marital_status 0=2 if zq50==4
recode marital_status 0=3 if zq50==1

* 2011 dq43 1 既婚 2 未婚 3 死別 4 離別 *途中でかえんなや!!!!!!!!!!
destring dq43, replace
recode marital_status 0=1 if dq43==1 & ryear==2011
recode marital_status 0=2 if dq43==3 & ryear==2011
recode marital_status 0=2 if dq43==4 & ryear==2011
recode marital_status 0=3 if dq43==2 & ryear==2011

/* label */
label define marital_status 1 married 2 divorced_or_widowed 3 never_married
label values marital_status marital_status
tab marital_status

tab survey marital_status, row m
* 欠損drop
drop if marital_status==0
* 6822人

* drop if marital_status!=3

//////////////////////////////
/////////* outcome *//////////
//////////////////////////////
///////////* jgss *//////////
* 2000-2001,2002-2003,2005以降で大きくレイアウトが異なる
/* 2000−2001 */
* szffhereは2000-2001にしか存在しない変数
*「あなたがご一緒に住んでいるご家族の方は、あなたを含めて何人ですか」
* なんか知らんけどtypemismach error
destring szffhere, replace
tab szffhere rid, m
* 同居人数無回答をドロップ 2000年に3人いる
drop if szffhere==999
* 2000-20001: 同居人数が1人だと単身者(親と別居と操作)、それ以外は親と同居(しゃーない
generate outcome = .
* 1=同居 0=別居
recode outcome .=1 if szffhere>1 & (ryear==2000 | ryear==2001)
recode outcome .=0 if szffhere==1 & (ryear==2000 | ryear==2001)

/* 2002 */
* ffresideは2002-2003にしか存在しない変数
* 「あなたはご家族と一緒にお住まいですか」
* 1家族と一緒に生活 2家族から一時的に離れて生活 3本人のみ(一人暮らし) 4その他(友人などと同居)
* この変数には無回答はいない(なんでかしら) →9が無回答 すでに落ちている
tab ffreside rid, m
* なんか知らんけど文字データになってるので変換する必要
destring ffreside, replace
* 1=親と同居 2-4=親と別居(しゃーない
recode outcome .=1 if ffreside==1 & ryear==2002
recode outcome .=0 if ffreside>=2 & ryear==2002

/* 2005- */
* 2005以降は両親と暮らしているかを直接きいている
* 父pplvtg 母mmlvtgあなたは、あなた自身のお父様、お母様と一緒に暮らしていますかそれぞれについてお答えください。
* 1同居 2別居 3死亡
* どっちも死亡と9無回答をドロップ
tab pplvtg mmlvtg
drop if pplvtg==9 | mmlvtg==9 | (pplvtg==3 & mmlvtg==3)
tab pplvtg mmlvtg, cell m
recode outcome .=1 if pplvtg==1 | mmlvtg==1
recode outcome .=0 if (pplvtg==2 & mmlvtg==2) | (pplvtg==2 & mmlvtg==3) | (pplvtg==3 & mmlvtg==2)
tab rid outcome, m

/* ssm2005 */
* 同居家族人数と同居している場合はその続柄を聞いている
* 手順 1死亡・無回答をドロップ→2同居続柄からoutcomeつくる
* 父母死亡をdrop 1健在 2死亡 9dkna
* 父 q20_1 母 q20_2
tab q20_1 q20_2
drop if q20_1==9 | q20_2==9 | (q20_1==2 & q20_2==2)
tab q20_1 q20_2
* 留置A票
* a20_2_09 父同居情報 1一緒にすんでる 2いない 9無回答
* a20_2_10 母同居情報 1一緒にすんでる 2いない 9無回答
tab a20_2_09 a20_2_10
destring a20_2_09, replace
destring a20_2_10, replace
drop if a20_2_09==9 | a20_2_10==9
* 留置B票
* b07_2_09 父同居情報 1一緒にすんでる 2いない 9無回答
* b07_2_10 母同居情報 1一緒にすんでる 2いない 9無回答
tab b07_2_09 b07_2_10
destring b07_2_09, replace
destring b07_2_10, replace
drop if b07_2_09==9 | b07_2_10==9
recode outcome .=1 if a20_2_09==1 | a20_2_10==1
recode outcome .=1 if b07_2_09==1 | b07_2_10==1
recode outcome .=0 if (a20_2_09==2 & a20_2_10==2) | (a20_2_09==2 & q20_2==2) | (q20_1==2 & a20_2_10==2)
recode outcome .=0 if (b07_2_09==2 & b07_2_10==2) | (b07_2_09==2 & q20_2==2) | (q20_1==2 & b07_2_10==2)
tab rid outcome, m

/* jlps2007 */
* 追加調査は別変数なので注意すること
* 2007 同居家族人数と同居している場合はその続柄を聞いている
* 手順 1死亡・無回答をドロップ→2同居続柄からoutcomeつくる
* 父母死亡をdrop 父母状況変数 1健在の年齢を回答 2亡くなっている 3わからない 9dkna
* 父 zq14fa 母 zq14ma
tab zq14fa zq14ma
drop if zq14fa==2 & zq14ma==2
tab zq14fa zq13_2h
* 追加調査も処理しようとしたけど、追加調査には父母の生死の情報がない\(^o^)/(しゃーない
* 同居続柄変数 父 zq13_2h 母 zq13_2i、1選択 2非選択
tab zq13_2h zq13_2i
* 同居変数に無回答傾向の人をドロップ
drop if zq13_2h==9 | zq13_2i==9
tab zq13_2h zq13_2i
recode outcome .=1 if zq13_2h==1 | zq13_2i==1
* 同居続柄変数 2011 追加調査からは世帯票形式になっている、くっそめんどい\(^o^)/
* 凡例 世帯員2人目が父親かどうか dq10_22z==7 母親 dq10_22z==8、3人目 dq10_23z==7
tab dq10_22z if ryear==2011, m
tab dq10_23z if ryear==2011, m
tab dq10_24z if ryear==2011, m
tab dq10_25z if ryear==2011, m
tab dq10_26z if ryear==2011, m
tab dq10_27z if ryear==2011, m
tab dq10_28z if ryear==2011, m
tab dq10_29z if ryear==2011, m
tab dq10_210z if ryear==2011, m
* 7人目まで処理すればよい
* これうまいこと短く書きたかったけどコマンドがわからない、たぶんアンダーバー以下をワイルドカード
recode outcome .=1 if (dq10_22z==7 & ryear==2011) | (dq10_23z==7 & ryear==2011) | (dq10_24z==7 & ryear==2011) | (dq10_25z==7 & ryear==2011) | (dq10_26z==7 & ryear==2011) | (dq10_27z==7 & ryear==2011) ///
| (dq10_22z==8 & ryear==2011) | (dq10_23z==8 & ryear==2011) | (dq10_24z==8 & ryear==2011) | (dq10_25z==8 & ryear==2011) | (dq10_26z==8 & ryear==2011) | (dq10_27z==8 & ryear==2011)
tab outcome, m
recode outcome .=0 if (zq13_2h==2 & zq13_2i==2) | (zq13_2h==2 & zq14ma==2) | (zq14fa==2 & zq13_2i==2)
recode

/* marital & living arrangement status */
gen status = marital_status
recode status 3 = .
recode status . = 3 if marital_status==3 & outcome==1
recode status . = 4 if marital_status==3 & outcome==0

/* label */
label define outcome 1 corresidence 0 leaving_home
label values outcome outcome
label define status 1 married 2 divorcedandwidowed 3 corresidence 4 leaving_home
label values status status
tab status, m

LOG ENTRY: PLST 237

LaTeX やら Scrivener やら使ってみたけど,結局,Evernote が攻守最強ということになった.


karabinar いったいいつになったら Sierra に対応してくれるんだアアアア嗚呼! karabinar なしだと英字キーボードはほんと使い物にならない(日本語入力はデフォだと Control + Space).


フルモデルの記述統計量の出力のしかた.

 estimate dep val

predict dataset

drop if dataset==.

//////////////////////////////////////////////
///////////*descriptive statistics*///////////
//////////////////////////////////////////////
sort sexa
tabstat leaving, by(sexa) stat(mean sd min max)
tabstat ageb, by(sexa) stat(mean sd min max)
tabstat sibling_1, by(sexa) stat(mean sd min max)
tabstat sibling_2, by(sexa) stat(mean sd min max)
tabstat sibling_3, by(sexa) stat(mean sd min max)
tabstat sibling_4andmore, by(sexa) stat(mean sd min max)
tabstat urban15, by(sexa) stat(mean sd min max)
tabstat income_0, by(sexa) stat(mean sd min max)
tabstat income_less_than_150, by(sexa) stat(mean sd min max)
tabstat income_150_250, by(sexa) stat(mean sd min max)
tabstat income_250_350, by(sexa) stat(mean sd min max)
tabstat income_350_450, by(sexa) stat(mean sd min max)
tabstat income_more_than_450, by(sexa) stat(mean sd min max)
tabstat income_na, by(sexa) stat(mean sd min max)
tabstat univ, by(sexa) stat(mean sd min max)
tabstat univ_father, by(sexa) stat(mean sd min max)
tabstat univ_father_na, by(sexa) stat(mean sd min max)
tabstat wealth15, by(sexa) stat(mean sd min max)
tabstat year, by(sexa) stat(mean sd min max)


俺は困っている.悩み続けるのはよくない.

パラサイトシングル論はそのロジックはともかくとして,ほとんど経験的検証がなされていないか,かなり知見が混乱している.

パラサイトシングル論から導出されるリサーチクエスチョンはいくつかあるが,核となる問いのひとつが,「親元が富裕だと離家への動機づけが弱まるため,親と別居しなくなる」というものである.山田先生の初出からもう20年もたつので,決着がついていてもよさそうだが,ほぼまともな検証がないといってよい状況である.

その理由はさまざま考えられるが,ひとつの問題として,若年未婚者のサンプルを十分に確保できなかったというデータ上の制約があったと考えられる.

そこで,JGSS2000-2010をマージさせて,若年未婚者(20-39歳 *学生除く)を男女それぞれ1500ほど確保し,ロジットでやってみた.

結論から申し上げると,むしろ親元がゆたかなほうが親と別居しているという結果になりました(男子のみ).これは,直感的には説明がつかない.

メインは出身地との交互作用だったんだけど,出身地(三大都市圏)との交互作用をいれると,都市出身者*親世帯年収は離家に負の関連,地方出身*親世帯年収は離家に正の関連になりました.ここは狙い通りに結果がでた.御の字である.社会学なので実験できないけれど,モデルスペキュレーションというやつだ.ただ,繰り返しになるが,交互作用をいれないで,親世帯年収だけいれると離家には正の関連.

*ここでいう親世帯年収は,「あなたが 15 歳の頃のあなたの世帯収入は、当時の平均的な世帯と比べて、どうでしたか」の5件法.本人主観の回顧だけど,分析には一応たえると思っている.

LOG ENTRY: PLST 236

estimate store name
で分析結果をメモリーに保存できる.

論文のtableみたいに表示させたいときは,
estimate store name1 name2 namex
で呼び出せる.

表示させる数値はデフォだとcoef.
b(%7.4f) p stats(N df_m r2_p)
たとえば,これだと,bは7桁まで出力して(みにくいから4桁まで表示),p値,統計量(サンプルサイズ,df,疑似決定係数).詳しくは, help-logistic-Stored resultsを参照するとよい.

AICはよくわからんかった.
estat ic
でそれぞれのモデルについては出力してくれる.たまにはこれぐらい自分で計算したほうがいいかもしれない(数理的な意味は何度読んでもさっぱりわからんが)

Stored results

logistic stores the following in e():

Scalars
e(N) number of observations
e(N_cds) number of completely determined successes
e(N_cdf) number of completely determined failures
e(k) number of parameters
e(k_eq) number of equations in e(b)
e(k_eq_model) number of equations in overall model test
e(k_dv) number of dependent variables
e(df_m) model degrees of freedom
e(r2_p) pseudo-R-squared
e(ll) log likelihood
e(ll_0) log likelihood, constant-only model
e(N_clust) number of clusters
e(chi2) chi-squared
e(p) significance of model test
e(rank) rank of e(V)
e(ic) number of iterations
e(rc) return code
e(converged) 1 if converged, 0 otherwise

他人のがみたい.

/*model 1*/
logit leaving ///
male_dummy ageb sibling_1 sibling_3 sibling_4andmore urban15 ///
income_0 income_less_than_150 income_150_250 income_350_450 income_more_than_450 income_na univ ///
univ_father univ_father_na wealth15 ///
year
estimate store model1

/*model 2 male*/
sort male_dummy
logit leaving ///
ageb sibling_1 sibling_3 sibling_4andmore urban15 ///
income_0 income_less_than_150 income_150_250 income_350_450 income_more_than_450 income_na univ ///
univ_father univ_father_na wealth15 ///
year if male_dummy==1
estimate store model2ma

/*model 2 male*/
sort male_dummy
logit leaving ///
ageb sibling_1 sibling_3 sibling_4andmore urban15 ///
income_0 income_less_than_150 income_150_250 income_350_450 income_more_than_450 income_na univ ///
univ_father univ_father_na wealth15 ///
year if male_dummy==0
estimate store model2fe

/*model 3 male*/
sort male_dummy
logit leaving ///
ageb sibling_1 sibling_3 sibling_4andmore urban15 ///
income_0 income_less_than_150 income_150_250 income_350_450 income_more_than_450 income_na univ ///
univ_father univ_father_na wealth15 ///
year int_urban_wealth if male_dummy==1
estimate store model3ma

/*model 3 female*/
sort male_dummy
logit leaving ///
ageb sibling_1 sibling_3 sibling_4andmore urban15 ///
income_0 income_less_than_150 income_150_250 income_350_450 income_more_than_450 income_na univ ///
univ_father univ_father_na wealth15 ///
year int_urban_wealth if male_dummy==0
estimate store model3fe

estimate table model1 model2ma model2fe model3ma model3fe, b(%7.4f) p stats(N df_m r2_p)


Stata が出力してくれる疑似決定係数(Pseudo R2)の値,いったいなんなのかよくわかってないんだけど,どうも McFadden’s R2 ぽい.確証はない.http://www.ats.ucla.edu/stat/mult_pkg/faq/general/Psuedo_RSquareds.htm

 

LOG ENTRY: PLST 234

アプリからは管理画面に入れるのだけど,ブラウザからはワードプレスの管理画面に入れない.

Forbidden

The server refuse to browse the page.
The URL or value may not be correct. Please confirm the value.
TIME: 1479554796.085639 (2016-11-19 20:26:36 (+0900))
METHOD: POST
PATH_QUERY: /wp-login.php

SAKURA Internet Inc.

サイト自体は生きているので,問題はサーバーじゃない.お金も払ってるし.いろいろ調べたらファイヤウォール周りらしい.Webアプリケーションファイアウォール検知ログをみると,やたら攻撃されてた.ワードプレス脆弱だなあ.おもいきって,ドメイン自体のファイヤウォールを切った.もともとワードプレスはやべえという話はきいておいたので,さくらとワードプレスのPasswordは適当につくった謎の文字列にしているので,まあなにかあったところでとくに困らない.さいきんのJetpack周りの誤作動もここ由来なのかな.さくら側からワードプレスのアップデートしたけど,Forbiddenは解決しない.

mail はこことは関係ないとこで管理しているのでたぶん影響ない.ふつうに届いているし.


Stataで多重クロス表はたぶんデフォではできない.

sort val1
by val1: tab val2 dep

で三重クロスはできる.もうちょっと便利そうなパッケージをみつけた.

findit tab3way

で三重クロスのコマンドがインスコできる.ただし,ふつうの tabとはオプションのコマンドが違うので注意が必要.

—————————————————————————–
help for tab3way v2.03 2002-06-01
—————————————————————————–

Cross-tabulation of 3 variables with display of percentages

tab3way rowvar colvar supercolvar [weight] [if exp] [in range] [, cellpct
rowpct colpct allpct rowtot coltot scoltot
alltot format(%fmt) {freq|nofreq} usemiss]

by varlist: may be used with tab3way to stratify tables. See help by.

fweights are allowed. See help weights.
Description

tab3way cross-tabulates 3 variables and displays any combination of cell
frequencies, cell percents, row percents and column percents.
“Missing” categories may be specified.
tab3way optionally provides row, column and supercolumn totals by
temporarily augmenting observations in the existing data set and
making a new category (labelled “TOTAL”) for each variable to
accommodate these totals.
tab3way is a front end for tabdisp, although not all of the
latter’s options are implemented here.
Options

freq|nofreq displays|does not display cell frequencies. freq is the
default.

cellpct displays cell percentages. The denominator of the cell
percentage is the total N over the entire table.

rowpct displays row percentages. The denominator for the row
percentage is the total N over all categories of the
supercolvar within a specific rowvar/colvar combination.

colpct displays column percentages. The denominator for the column
percentage is the total N over all categories of the rowvar
within a specific supercolvar/colvar combination.

allpct displays cell frequencies and cell, row and column
percentages. Specifying none of cellpct, rowpct, colpct or
allpct provides just frequencies (default).

rowtot displays row totals.

coltot displays column totals.

scoltot displays supercolumn totals.

alltot displays row, column and supercolumn totals.

usemiss shows missing values as a separate category, similar to
tabulate.., missing. (missing is an option for tab3way insofar
as it is passed to tabdisp, where it has a different role.)

format(%fmt) specifies the display format for presenting percentages in
the table’s cells (the frequencies, if specified, are always
displayed as integers). The default is %8.2f, which gives 2
decimal places.

In addition, any of the following options allowed by tabdisp may be
specified: center, missing, cellwidth(#), csepwidth(#), scsepwidth(#),
stubwidth(#).
Examples

. use auto
. egen price_cat = cut(price), group(4)
. tab3way price_cat rep78 foreign, rowpct colp format(%5.3f)
. egen weight_cat = cut(weight), group(2)
. bysort weight_cat: tab3way price_cat rep78 foreign, allp allt usemiss
Author

Philip Ryan
Department of Public Health
University of Adelaide
South Australia
email: philip.ryan@adelaide.edu.au
Also see

On-line: help for tabdisp, table, tabulate

これとbyとifを組み合わせれば5重クロスぐらいだったらなんとかなりそうだけど,それ以上はどうすればいいんだろ? わからんちん.

こんなかんじになる.screen-shot-2016-11-20-at-23-45-21

表頭変数は1つだけが好みなんだけどなあ.そういう設定はどうやったらできるのかしら.まあExcelで直せばいいんだけど.識者教えてください.記述的な分析はRのほうが楽かなあ.

LOG ENTRY: PLST 223

便利なStataショートカット

Do ファイルの実行
⌘+Shift+D(特定の行だけ実行したい場合はそこだけカーソルで選択)

変数の自動入力
変数の最初の2,3文字を入力して Tab

LOG ENTRY: PLST 222

なんかおかしいおかしいと思っていたら,公開されているJGSS2012には15才時居住都道府県(pref15)の情報が削除されていた.調査時点の都道府県情報が08以降なくなっているのは知っていたが,これもかー.ええ,つらい.500人ぐらいみんな0になってた.コードブックには書いてあるので今後も多分公開されないであろう.

PREF15 15歳の頃の居住地(本人):都道府県名(この変数は公開しているデータセットに含まれていない)

Codebook-JGSS2012_Japanese p80

/*15歳時三大都市圏居住*/
/*埼玉千葉東京神奈川愛知三重京都大阪兵庫*/
tab pref15
/*48は外国 88はよくわからん 99は無回答*/
drop if pref15==48 | pref15==88 | pref15==99
gen urban15=0
recode urban15 0=1 if pref15==11 | pref15==12 | pref15==13 | pref15==14 | pref15==23 | pref15==24 | pref15==26 | pref15==27 | pref15==28

#備えよう


えいきょうっていいがちです、すいません。関連がみられただったらまだ許されるかな。

ただ,「親の同居のプラス効果の統計的有意性は弱かった。」とあるが,統計的有意性と効果の大きさは無関係なのではないのか。また,他の章でも同様であるが,分析結果を基本的に「影響」と表現するには慎重であった方がいいだろう。さまざまなモデルを比較しても,わかるのは「影響」ではなく,「相関」でしかないからである(これはパネル調査でも実は同じことが言えるだろう)。

http://ci.nii.ac.jp/els/110009827984.pdf?id=ART0010336711&type=pdf&lang=en&host=cinii&order_no=&ppv_type=0&lang_sw=&no=1478576713&cp=


再録っぽいから読んでないんだけど,SAGEにうpされている目次みると,ただたんにこれまでの既発表論文の再録ではないようだ.にしても洋書はペーパーバックになっても高い.国内だと6校にしか所蔵されていないc.

Goldscheider, Frances and Calvin Goldscheider, 1999, The Changing Transition to Adulthood: Leaving and Returning Home, Thousand Oaks: Sage Publications.

LOG ENTRY: PLST 218

分析うまくいかねー。

こんだけマージしても2700ぐらい。欠損ケースドロップすると2200ほど。最終的に、by sex で、それぞれ1000ずつ。思ったより親変数が有意にならない。子どもの情報はほぼ理論通り。だったらもうこのモデルでいんじゃね?


記述統計量をだすために最終的な多変量解析でつかったサンプルだけになんらかの数値がはいっている変数をつくりたいんだけど,地味にずっとわからない.なんかやりかたあるんだろうけど,直前の予測値や残差を保存するコマンドあるのでそれを使えば一応出来る.分析に使われてないケースには欠損がはいっているのでドロップすればよい.

予測値,残差の保存

新しい変数を作成して従属変数の予測値を保存するコマンド:
predict 予測値を保存する新しい変数名

新しい変数を作成して残差を保存するコマンド:
predict 残差を保存する新しい変数名, residual

predict コマンドは,reg コマンドを実行した直後に実行する(直前に推定したモデルに 関する予測値,残差が保存される)。

http://www.agu.ac.jp/~nomura/lecture/archive/stata.pdf

こんなかんじ

logit dep val1 val2

predict dataset

drop if dataset==.

 

LOG ENTRY: PLST 162

Stataでイベントヒストリー.例によって俺用.

ロングデータを作るには,reshape long でフィルターかける方法と,リスク観測期間分だけ expand する方法があるんだけど,どっちがいいんだろうね.結局,どっちにしても細かいところは brow しながら試行錯誤しないとだめですね.リスクの基底時間が単純な初婚とか初交だったらいいんだけど,離職や離婚はカウントするのがめんどいですね.

// JGSS-2009LCSの.csvを用意する
// ワイドデータを作る

set more off

// 従属変数をつくる

// 問57 2「同居期間なし」と9無回答をドロップ
tab ptlvtgl
drop if ptlvtgl > 1
tab ptlvtgl
// ここで2674人

// 1回目の同居期間終了年月に2「現在まで」と9無回答をドロップ
tab plv01ong
drop if plv01ong > 1
tab plv01ong
// ここで2106人

//離家年齢を特定する
generate leaving_home_age = 0
replace leaving_home_age = plv01eny – dobyear
tab leaving_home_age
// 13歳で離家しているidをドロップする
drop if leaving_home_age == 13
tab leaving_home_age
// これたぶんちゃんとクリーニングされてないよな…….

// センサリングの処理
// 左センサー欠損
// 親との同居期間の終了年(俺的離家)に
// 具体的に答えてない9999をドロップ(4人)
tab plv01eny
drop if plv01eny == 9999
tab plv01eny
// ここで2102人

// 右センサー欠損
// 親との2回目の同居期間の開始年(俺的帰家)に
// 具体的に答えてない9999をドロップ(13人)
tab plv02sty
drop if plv02sty == 9999
tab plv02sty
// ここで2089人

// 帰家イベント生起ダミーを作る
gen returning_home = plv02
recode returning_home 2 = 0
tab returning_home
// ここで464人が帰家経験者

// 生存時間を作る
// リスク終了年 – リスク開始年
tab plv02sty
gen lisk_end = plv02sty
// 2回目の同居開始8888非該当のひとたちは
// 調査時点においても「実家に帰ってきてない」人たちなので,
// この人たちを右センサーする
recode lisk_end 8888 = 2009
tab lisk_end
gen survival_time = lisk_end – plv01eny
tab survival_time
// 0になってる人たちを1年以内にする
recode survival_time 0 = 1
tab survival_time

// 独立変数
tab sexa
gen male_dummy = 0
recode male_dummy 0 = 1 if sexa == 1
tab male_dummy

tab dobyear
gen cohort = 0
recode cohort 0 = 1 if dobyear > 1972
tab cohort

tab tp5loc15
generate urban_scale = tp5loc15
recode urban_scale 9 = .
tab urban_scale

tab opffix15
generate household_income = opffix15
recode household_income 9 = .
tab household_income
recode household_income (1 = 1) (2 = 1) (3 = 2) (4 = 3) (5 = 3)
tab household_income

// ダミー変数つくっとく
drop household_income_rich
gen household_income_rich = 0
gen household_income_avarage = 0
gen household_income_poor = 0
replace household_income_rich = 1 if household_income==3
replace household_income_avarage = 1 if household_income==2
replace household_income_poor = 1 if household_income==1
tab household_income_rich household_income
tab household_income_avarage household_income
tab household_income_poor household_income

gen siblings = xnumbroe + xnumsise + xnumbroy + xnumsisy + 1
recode siblings 397 = .
tab siblings
recode siblings (1=1) (2=2) (3=3) (4=4) (5=4) (6=4) (7=4) (8=4) (9=4)
tab siblings

// 離家理由をつくる
// 進学離家 高等教育在学開始年と離家年が一致していれば1
tab plv01eny
tab sch01sty
gen leaving_home_reason_school = 0
recode leaving_home_reason_school 0 = 1 if plv01eny == sch01sty
tab leaving_home_reason_school

// 就職離家 働きはじめた時期と離家年が一致していれば1
// tab plv01eny
// tab jb01sty
// gen leaving_home_reason_job = 0
// recode leaving_home_reason_job 0 = 1 if plv01eny == jb01sty | plv01eny == jb02sty | plv01eny == jb03sty
// tab leaving_home_reason_job
// tab leaving_home_reason_job plv01eny
// 闇を感じる

// 結婚離家
tab plv01eny
tab mrg01sty
gen leaving_home_reason_marriage = 0
recode leaving_home_reason_marriage 0 = 1 if plv01eny == mrg01sty
tab leaving_home_reason_marriage

gen lhr = 0
recode lhr 0 = 1 if leaving_home_reason_school == 1
recode lhr 0 = 2 if leaving_home_reason_marriage == 1

// ラベル
label define male_dummy 1 “male” 0 “female”
label values male_dummy male_dummy

label define cohort 1 “1973-1980” 0 “1966-1972”
label values cohort cohort

label define urban_scale 1 “metropolis” 2 “city” 3 “town” 4 “village”
label values urban_scale urban_scale

label define household_income 1 “less than the average” 2 “average” 3 “more than the average”
label values household_income household_income

label define siblings 4 “4 or more”
label values siblings siblings

label define lhr 1 “school” 2 “marriage” 0 “others”
label values lhr lhr
// 記述的分析
stset survival_time, failure(returning_home == 1) id(id)
stsum

sts list
sts graph, failure

sts graph, failure by(male_dummy)
sts graph, failure by(cohort)
sts graph, failure by(edu)
sts graph, failure by(household_income)
sts graph, failure by(urban_scale)
sts graph, failure by(siblings)
sts graph, failure by(lhr)
// ここからロングにする作業
expand survival_time
sort id
by id: generate t = _n
generate event = 0
by id: replace event = returning_home if _n==_N
tab t

// 年齢をぶち込む必要
tab leaving_home_age
generate age = 0
replace age = leaving_home_age if t==1
replace age = leaving_home_age+t-1 if t~=1
tab age

// リスク観測期間ダミーをつくる
gen t1 = 0
replace t1 = 1 if t==1
gen t2 = 0
replace t2 = 1 if t==2
gen t3 = 0
replace t3 = 1 if t==3
gen t4 = 0
replace t4 = 1 if t==4
gen t5 = 0
replace t5 = 1 if t==5
gen t6 = 0
replace t6 = 1 if t==6
gen t7 = 0
replace t7 = 1 if t==7
gen t8 = 0
replace t8 = 1 if t==8
gen t9 = 0
replace t9 = 1 if t==9
gen t10_14 = 0
replace t10_14 = 1 if t>=10 & t<=14
gen t15_19 = 0
replace t15_19 = 1 if t>=15 & t<=19
gen t20_26 = 0
replace t20_26 = 1 if t>=20 & t<=26

/*
forvalues i = 1/26 {
gen t`i’=t
replace t`i’=1 if t`i’==t
replace t`i’=0 if t`i’~=t
}

forvalues i = 1/26 {
drop t`i’
}
*/

logit event t2 t3 t4 t5 t6 t7 t8 t9 t10_14 t15_19 t20_26 ///
male_dummy age dobyear siblings household_income_rich household_income_poor urban_scale

// 離散時間ロジットモデル
logit event t2 t3 t4 t5 t6 t7 t8 t9 t10_14 t15_19 t20_26 ///
leaving_home_reason_school leaving_home_reason_marriage male_dummy age dobyear siblings household_income_rich household_income_poor urban_scale

LOG ENTRY: PLST 159

Stataで値ラベルをはりまちがえたときは modify オプションを使う.

label define cohort 1 “1973-1980” 2 “1966-1972”
label values dum_birth_cohort cohort

label define cohort 1 “1973-1980” 0 “1966-1972” , modify
label values dum_birth_cohort cohort

とりあえず困ったらwikiをみたらだいだい書いてある.
http://www.lightstone.co.jp/stata/manual_en.html
http://www.stata.com/bookstore/data-management-reference-manual/
http://www.stata.com/manuals14/dlabel.pdf

ただ,2が1966-1972という定義がはりついたままなので,replaceオプションのほうがいいかも.

わけわからんくなるので,最初からやり直しが吉.

LOG ENTRY: PLST 154

ん,家族社会学会まであと9日しかないの?

Stata でイベントヒストリー分析.イベントヒストリー用のコマンドとかあるんだろうけど,よくわからないのでわりとアナログにやってます.

* JGSS-2009LCSの.csvを用意する

set more off

* 従属変数をつくる

* 問57で2「同居期間」と9無回答をドロップ
tab ptlvtgl
drop if ptlvtgl > 1
tab ptlvtgl

* 1回目の同居期間終了年月に2「現在まで」と9無回答をドロップ
tab plv01ong
drop if plv01ong > 1
tab plv01ong
* ここで2106人

* センサリングの処理
* 左センサー欠損
* 親との同居期間の終了年(俺的離家)に
* 具体的に答えてない9999をドロップ(4人)
tab plv01eny
drop if plv01eny == 9999
tab plv01eny
* ここで2102人

*右センサー欠損
* 親との2回目の同居期間の開始年(俺的帰家)に
* 具体的に答えてない9999をドロップ(13人)
tab plv02sty
drop if plv02sty == 9999
tab plv02sty
* ここで2089人

* 帰家イベント生起ダミーを作る
gen returning_home = plv02
recode returning_home 2 = 0
tab returning_home
* ここで464人が帰家経験者

* 生存時間を作る
* リスク終了年 – リスク開始年
tab plv02sty
gen lisk_end = plv02sty
* 2回目の同居開始8888非該当のひとたちは
* 調査時点においても「実家に帰ってきてない」人たちなので,
* この人たちを右センサーする
recode lisk_end 8888 = 2009
tab lisk_end
gen survival_time = lisk_end – plv01eny
tab survival_time
* 1ずつ足す
replace survival_time = survival_time + 1
tab survival_time

* 記述的分析
stset survival_time, failure(returning_home == 1) id(id)
stsum
recode opffix15 9 = .
recode tp5loc15 9 = .
label define sex 1 “male” 2 “female”
label values sexa sex

sts graph, by(sex)
sts graph, by(edu)
sts graph, by(opffix15)
sts graph, by(tp5loc15)

* 離家理由をつくる
* 進学離家 高等教育在学開始年と離家年が一致していれば1
tab plv01eny
tab sch01sty
gen leaving_home_reason_school = 0
recode leaving_home_reason_school 0 = 1 if plv01eny == sch01sty
tab leaving_home_reason_school

* 就職離家 働きはじめた時期と離家年が一致していれば1
tab plv01eny
tab jb01sty
gen leaving_home_reason_job = 0
recode leaving_home_reason_job 0 = 1 if plv01eny == jb01sty | plv01eny == jb02sty | plv01eny == jb03sty
tab leaving_home_reason_job

tab leaving_home_reason_job plv01eny
* 闇を感じる

* 結婚離家
tab plv01eny
tab mrg01sty
gen leaving_home_reason_marriage = 0
recode leaving_home_reason_marriage 0 = 1 if plv01eny == mrg01sty
tab leaving_home_reason_marriage

gen lhr = 0
recode lhr 0 = 1 if leaving_home_reason_school == 1
recode lhr 0 = 2 if leaving_home_reason_job == 1
recode lhr 0 = 3 if leaving_home_reason_marriage == 1
sts graph, by(lhr)

Powered by WordPress & Theme by Anders Norén