備忘録

ただの覚え書き

dummiesパッケージ

"dummies"
ダミー変数を作るためのパッケージ.
endogenous の sampselect が factor に対応していないので導入.
サンプルコード参照
 
> letters <- c( "a", "a", "b", "c", "d", "e", "f", "g", "h", "b", "b" )
> dummy( as.character(letters) ) 
      as.character(letters)a as.character(letters)b as.character(letters)c
 [1,]                      1                      0                      0
 [2,]                      1                      0                      0
 [3,]                      0                      1                      0
 [4,]                      0                      0                      1
 [5,]                      0                      0                      0
 [6,]                      0                      0                      0
 [7,]                      0                      0                      0
 [8,]                      0                      0                      0
 [9,]                      0                      0                      0
[10,]                      0                      1                      0
[11,]                      0                      1                      0
      as.character(letters)d as.character(letters)e as.character(letters)f
 [1,]                      0                      0                      0
 [2,]                      0                      0                      0
 [3,]                      0                      0                      0
 [4,]                      0                      0                      0
 [5,]                      1                      0                      0
 [6,]                      0                      1                      0
 [7,]                      0                      0                      1
 [8,]                      0                      0                      0
 [9,]                      0                      0                      0
[10,]                      0                      0                      0
[11,]                      0                      0                      0
      as.character(letters)g as.character(letters)h
 [1,]                      0                      0
 [2,]                      0                      0
 [3,]                      0                      0
 [4,]                      0                      0
 [5,]                      0                      0
 [6,]                      0                      0
 [7,]                      0                      0
 [8,]                      1                      0
 [9,]                      0                      1
[10,]                      0                      0
[11,]                      0                      0
 
ベクトルもしくはデータフレームに対して0,1のダミー変数を作ってくれる.
 
以下,オプションについて.
 
> l <- as.factor(letters)[ c(1:3,1:6,4:6) ] 
> l
 [1] a a b a a b c d e c d e
Levels: a b c d e f g h
 
普通に作るとa~eのみでダミーが作られる↓
> dummy(l) 
      la lb lc ld le
 [1,]  1  0  0  0  0
 [2,]  1  0  0  0  0
 [3,]  0  1  0  0  0 ...
 
drop = FALSE を入れると,未使用のダミーも残したまま作ってくれる.
(基本的には入れとくべきな気がする)
l の要素は a~e であるが作られたダミーは↓
> dummy(l, drop=FALSE) 
      la lb lc ld le lf lg lh
 [1,]  1  0  0  0  0  0  0  0
 [2,]  1  0  0  0  0  0  0  0
 [3,]  0  1  0  0  0  0  0  0
 [4,]  1  0  0  0  0  0  0  0
 [5,]  1  0  0  0  0  0  0  0 ...
 
sep : ダミーの名前付け.
> dummy(l, sep=":") 
      l:a l:b l:c l:d l:e
 [1,]   1   0   0   0   0
 [2,]   1   0   0   0   0 ...
 
fun:ダミーの型の決定.デフォルトは as.integer
> dummy(l, sep="::", fun=as.logical)
       l::a  l::b  l::c  l::d  l::e
 [1,]  TRUE FALSE FALSE FALSE FALSE
 [2,]  TRUE FALSE FALSE FALSE FALSE ...

endogenousパッケージ

endogenousパッケージの
 
sampselect(outcome, probit, init = NULL, id = NULL, se = "R")
 
についてのメモ.
 
・init:初期値はNULLのままでOK.
 
・probitの被説明変数は,無い時を1,ある時を0にしないと回らない.
 サンプルコード参照)
 
・factorに対応していない(めんどくせえ).
 
・id:ランダム効果見るためのグループ

data.frameへのアクセス

2通りある.
 
⓵attach()
data$要素のグループといちいち打つのが面倒な時に使える.
 
> data = read.csv("Tigers_2018_batting.csv")
> attach(data)
> 選手名
 [1] 糸原 健斗   糸井 嘉男   福留 孝介   梅野 隆太郎 大山 悠輔   ロサリオ    
 [7] 陽川 尚将   北條 史也   鳥谷 敬     中谷 将大   植田 海     ナバーロ    
[13] 俊介         伊藤 隼太   髙山 俊     原口 文仁   上本 博紀   西岡 剛    
[19] 江越 大賀   板山 祐太郎 森越 祐人   島田 海吏   山崎 憲晴   熊谷 敬宥  
[25] 坂本 誠志郎 岡﨑 太一   長坂 拳弥   今成 亮太   小豆畑 眞也 荒木 郁也  
[31] 小宮山 慎二 緒方 凌介   西田 直斗  
33 Levels: ナバーロ ロサリオ 伊藤 隼太 岡﨑 太一 熊谷 敬宥 原口 文仁 ... 
 
 
②with()
専用の環境を作ってその中で作業ができる.
with内の作業が終わればその環境もなくなるので変数名がのちのち被ることもない.
分析するときはこっちのほうが使いやすいかな.
 
> res = with(data, sampselect( ))
 
みたいな感じ.

計算結果の出力

outreg2 コマンドを使う.

まず,直前の計算結果を res (なんでもいい)という名前で保存.

est store res

outreg2 コマンドで出力したい形式を指定して保存できる.

 

テキスト形式

outreg2 res using result.txt, replace

 

エクセルシート

outreg2 res using result.xls, excel replace

 

Tex文書

outreg2 res using result.tex, replace

などなど.

 

Word や dta 形式、その他もろもろでも可能.

replaceコマンドは上書き.

.xlsで保存した場合,開く際に警告が出るが

Excelから再度.xlsxで保存すると警告が出なくなる(謎).

factor を numeric に型変換するとき

型がfactorのものをnumericに型変換するときは
 
as.numeric(as.character(data))
 
と必ずas.characterを挟む必要あり.
 
しなかった場合↓
 
 > data
[1]2015
Levels:2015
> class(data)
[1]"factor"
> as.numeric(data)
[1]1
 
と,よくわからないことに.
lengthがとられることもあるし,
各数字が足されて(2+0+1+5 = 8)となることもあるみたい.
 
した場合↓
 
 > data2 = as.numeric(as.character(data))
 > data2
[1] 2015
 > class(data2)
[1] "numeric"