September 6, 2013

ロジスティクス回帰 with R


敷居が高い感じがして避けてたRだけど、教科書(http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06783-9)通りやれば基礎的な部分は簡単にできることがわかった。


The R Tips 第2版 データ解析環境Rの基本技・グラフィックス活用集
舟尾 暢男 著
定価 3990円


ひとまず、(重)回帰分析とロジスティクス回帰分析ができれば御の字なので、後者をやってみる。
昔いじったときはデータの読み込みで詰まってしまったけれど、パッケージ導入しなくてもいい方法はcsvファイルでの読み込みだと分かった(というか、STATAやってからcsvファイルがsavから変換するときはベターと知った)。
csvファイルはエクセルファイルから変換できる。見かけは全く同じ。

> hsm <- read.csv("/Users/fumiyau/Desktop/hsm_rev.csv", head=T) #データの読み込み

<- は左の変数に右の関数なりコマンドを代入する演算子(?)
csvファイルを読み込むときは、関数read.csv( )を使う。" "の中には読み込みたいファイルの位置(macだと読み込みたいファイルに右クリック→「情報を見る」より場所:から分かる。)
また、一行目に変数名がある場合はhead = T  #Trueという意味 とする。(変数名ではなく、いきなり値から始まる場合は head = F #Falseという意味にする)

これで分析したいデータが読み込めたので、今度は記述統計や相関係数を確認してもいいし、読み込めたかを確認して安心したいときは head( ) #( )内には変数を入力する。(この場合は、hsm) head (hsm, 4)などのように指定しなければ、6行分の変数ごとのデータが出る。


        id gender cedu medu chi_num mgakureki fgakureki incomelog edupay senmon white inde sib_dc1 sb_dc2 sen_cho whi_cho ind_cho
1 10136304      1    1    1       2         1         1       8.9    3.3      0     1    0       0      1       0       0       0
2 10159014      0    1    0       3         0        NA       8.9    2.7      0     1    0       0      1       0       0       0
3 10193524      0    1    0       2         0         1       8.9    3.4      0     1    0       0      1       0       0       0
4 10194335      1    0    0       3         0         0       8.3     NA      0     0    0       0      1       0       0       0


みたいな感じ。今回はロジスティクス回帰分析に集中する。

> result <- summary( glm (medu ~ chonan + senmon + white + inde + chi_num, data = hsm, family=binomial)) # resultという変数にsummary関数を代入。そのsummary関数はmeduを従属変数とする二項ロジスティクス回帰分析(以後LR)を実行する関数をもとにする。

まず、LRを実行するのはglm関数。( xxx  ~ yyy )としたときに、xが従属変数(この場合は母親の子どもへの大学進学期待を1とする二値変数)、yが独立変数。独立変数を複数用意したければ yyy + zzzのように + の演算子を使う。変数が終わった後に、使用するデータを data = で指定する。最後に、従属変数の分布を指定する引数 familyで、この場合は二項分布 binomialを指定する。
(重)回帰分析の場合、hsm$chi_num <= 3 and…のように、関数の中で使用するデータの範囲を指定できるのですがLRの時はできないので困っています。しょうがないのでcsvファイルにフィルタをかけて分析に不要な値は削除したデータを用いました。

> result #分析結果(この場合、結果の概要が分かるsummary関数)をみる。



Call:
glm(formula = medu ~ chonan + senmon + white + inde + chi_num, 
    family = binomial, data = hsm)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.2596  -1.1271   0.6267   0.8340   1.2286  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   1.3771     0.3439   4.005 6.21e-05 ***
chonan        0.4688     0.1876   2.498 0.012475 *  
senmon        1.5937     0.2425   6.572 4.95e-11 ***
white         0.6496     0.2098   3.097 0.001958 ** 
inde          0.4979     0.2639   1.886 0.059228 .  
chi_num      -0.4989     0.1409  -3.541 0.000398 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 913.29  on 780  degrees of freedom
Residual deviance: 840.35  on 775  degrees of freedom
AIC: 852.35

Number of Fisher Scoring iterations: 4


サンプルが5増やすかどうかで結果が結構違ってきます。客観性とは何でしょうか。。。


No comments:

Post a Comment