Stata学習奮闘記(1日目)
はじめに
ひょんなことからStata16を入手。せっかくなので勉強してみることに…
1時間後…
Rに帰してくれ。。
新しい言語はじめたてあるある。以前の言語の使いやすさに感動するアレです。 (pandas挫折の記憶がよぎる)
これではいけない! モチベーションを保つためにも何かしようと思い学習の過程を残すことにしました。
データインポート
- csvファイルのインポート
import delimited "ファイルパス", encoding(UTF-8) clear
試してみたところ,tsv(タブ区切り)も同じコードでいけた。
Rだとこう
library(tidyverse) # csv read_csv('ファイルパス', locale = locale(encoding = 'UTF-8')) # tsv read_tsv('ファイルパス', locale = locale(encoding = 'UTF-8'))
localeのところ普段書かないから気づかないけど結構長いな
- stataファイルのインポート
use "ファイルパス", clear
楽ちん…末尾のclearはよくわからんが…
記述統計
- カテゴリカルデータ
tab 変数
- 連続値
summarize 変数
(とりあえずこれで出ることは分かったけれど他にもいろいろやり様はありそうです)
実際にデータをさわってみる
サンプルデータを使って,実際に分析をしてみた
データの準備
今回はRのforcatsパッケージに入っているgss_catを使ってみる。
アメリカのGeneral Social Surveyのデータの一部で,調査年・年齢・テレビ視聴時間・婚姻状況・人種・収入・党派・宗教・会派(宗教うちプロテスタント内部の分布)が変数として含まれている。
まずはRの方でstataファイルを準備する
library(tidyverse) library(haven) # 値ラベルの準備 val_label <- gss_cat %>% select(where(is.factor)) %>% map(., ~{fct_unique(.) %>% as.character() %>% enframe(name = 'value', value = 'label') }) %>% map(., ~{`names<-`(.$value, .$label)}) gss_cat %>% # factorを整数値に変換 mutate(across(.cols = where(is.factor), .fns = as.numeric, .names = '{col}_num')) %>% select(!where(is.factor)) %>% rename_with(.fn = ~{str_remove(., '_num')}) %>% # 値ラベルの貼り付け mutate( marital = labelled(marital, labels = val_label[['marital']]), race = labelled(race, labels = val_label[['race']]), rincome = labelled(rincome, labels = val_label[['rincome']]), partyid = labelled(partyid, labels = val_label[['partyid']]), relig = labelled(relig, labels = val_label[['relig']]), denom = labelled(denom, labels = val_label[['denom']]), ) %>% # dtaで書き出し write_dta(path = 'gss_cat.dta')
分析
- データ読み込み
use "hogehoge\gss_cat.dta"
- 度数分布
tab marital marital | Freq. Percent Cum. --------------+----------------------------------- No answer | 17 0.08 0.08 Never married | 5,416 25.21 25.29 Separated | 743 3.46 28.75 Divorced | 3,383 15.75 44.50 Widowed | 1,807 8.41 52.91 Married | 10,117 47.09 100.00 --------------+----------------------------------- Total | 21,483 100.00 tab race race | Freq. Percent Cum. ---------------+----------------------------------- Other | 1,959 9.12 9.12 Black | 3,129 14.57 23.68 White | 16,395 76.32 100.00 ---------------+----------------------------------- Total | 21,483 100.00
- 記述統計
summarize year age tvhours Variable | Obs Mean Std. Dev. Min Max -------------+--------------------------------------------------------- year | 21,483 2006.502 4.451994 2000 2014 age | 21,407 47.18008 17.2875 18 89 tvhours | 11,337 2.980771 2.587151 0 24