縦断データの分析 1 変化についてのマルチレベルモデリング

縦断データの分析〈1〉変化についてのマルチレベルモデリング

縦断データの分析〈1〉変化についてのマルチレベルモデリング

  • 作者: ジュディスシンガー,ジョンウィレット,Judith D. Singer,John B. Willett,菅原ますみ
  • 出版社/メーカー: 朝倉書店
  • 発売日: 2012/09/01
  • メディア: 単行本
  • クリック: 1回
  • この商品を含むブログを見る

typo:

p.44 ここではより実質的に使いでのある

p.67 表3.3 固定効果の変化率の位置がおかしい。これは2つめの切片の横に来るはず(たぶん)。

p.113 SUS PROC→SAS PROC

Principles and Practice of Structural Equation Modeling Ch.8

clear all
ssd init exercise hardy fitness stress illness
ssd set obs 373
ssd set cov 4422.25 \ -75.81 1444 \ 954.408 97.888 1354.24 \ -222.775 -585.58 -320.528 4489 \ -332.3936 -379.8784 -666.7866 1423.294 3903.7504
ssd list 
sem (illness<- fitness stress) (fitness<-exercise) (stress<-hardy), cov(exercise*hardy)
estat gof, stats(all)
estat mindices
Endogenous variables

Observed:  illness fitness stress

Exogenous variables

Observed:  exercise hardy

Fitting target model:

Iteration 0:   log likelihood = -9944.2736  
Iteration 1:   log likelihood = -9944.2736  

Structural equation model                       Number of obs     =        373
Estimation method  = ml
Log likelihood     = -9944.2736

------------------------------------------------------------------------------------
                   |                 OIM
                   |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------------+----------------------------------------------------------------
Structural         |
  illness <-       |
           fitness |  -.4244997   .0804313    -5.28   0.000    -.5821422   -.2668573
            stress |    .286752   .0441772     6.49   0.000     .2001664    .3733377
  -----------------+----------------------------------------------------------------
  fitness <-       |
          exercise |   .2158195   .0263842     8.18   0.000     .1641074    .2675316
  -----------------+----------------------------------------------------------------
  stress <-        |
             hardy |  -.4055263   .0888454    -4.56   0.000      -.57966   -.2313926
-------------------+----------------------------------------------------------------
     var(e.illness)|   3203.954   234.6102                        2775.6    3698.416
     var(e.fitness)|   1145.182   83.85616                      992.0761    1321.916
      var(e.stress)|   4240.134   310.4846                      3673.247    4894.507
      var(exercise)|   4410.394    322.952                      3820.744    5091.043
         var(hardy)|   1440.129   105.4537                       1247.59    1662.382
-------------------+----------------------------------------------------------------
cov(exercise,hardy)|  -75.60676    130.551    -0.58   0.562    -331.4821    180.2685
------------------------------------------------------------------------------------
LR test of model vs. saturated: chi2(5)   =     11.11, Prob > chi2 = 0.0493

. estat gof, stats(all)

----------------------------------------------------------------------------
Fit statistic        |      Value   Description
---------------------+------------------------------------------------------
Likelihood ratio     |
          chi2_ms(5) |     11.107   model vs. saturated
            p > chi2 |      0.049
          chi2_bs(9) |    165.608   baseline vs. saturated
            p > chi2 |      0.000
---------------------+------------------------------------------------------
Population error     |
               RMSEA |      0.057   Root mean squared error of approximation
 90% CI, lower bound |      0.003
         upper bound |      0.103
              pclose |      0.336   Probability RMSEA <= 0.05
---------------------+------------------------------------------------------
Information criteria |
                 AIC |  19908.547   Akaike's information criterion
                 BIC |  19947.763   Bayesian information criterion
---------------------+------------------------------------------------------
Baseline comparison  |
                 CFI |      0.961   Comparative fit index
                 TLI |      0.930   Tucker-Lewis index
---------------------+------------------------------------------------------
Size of residuals    |
                SRMR |      0.051   Standardized root mean squared residual
                  CD |      0.197   Coefficient of determination
----------------------------------------------------------------------------

. estat mindices

Modification indices

----------------------------------------------------------------------
                       |                                      Standard
                       |        MI     df   P>MI        EPC        EPC
-----------------------+----------------------------------------------
Structural             |
  fitness <-           |
               illness |     4.386      1   0.04   -.125466  -.2108351
                stress |     5.372      1   0.02  -.0606954  -.1105053
  ---------------------+----------------------------------------------
  stress <-            |
               fitness |     5.110      1   0.02  -.2074007  -.1139156
-----------------------+----------------------------------------------
cov(e.fitness,e.stress)|     3.907      1   0.05  -225.5115  -.1023391
----------------------------------------------------------------------
EPC = expected parameter change

Principles and practice of Structural Equation Modeling Ch.7

今年4版が出て、Stataのコードもついてくる模様。

今のところraw dataはないので、共分散行列を入力してそれを分析することになる。
共分散行列は、サポートページでしめされている標準偏差と相関行列から計算することができる。
Rの場合はcor2cov()で相関行列と標準偏差を共分散行列に書き換えてくれる。
基本的にxとyの相関=(xとyの共分散)/(xの標準偏差)(yの標準偏差)なので、
相関にxとyの標準誤差をかければ、共分散は求められるので、エクセルでも計算できる。

clear all
ssd init coercive burnout support tpi experien somatic
ssd set obs 109
ssd set cov 69.009572 \ 28.868204  95.447038 \ -22.427279 -49.071453 110.695649 \   -16.805466 1.011164 9.805758 25 \  -4.987848 3.406984 2.808509 12.160924 13.822037 \  -15.269773 -0.68495 8.707448 19.179989 9.728453 27.787658
ssd list
sem (burnout<-coercive support) (tpi<-coercive support burnout) (experien<-tpi) (somatic<-tpi), cov(coercive*support)
estat gof, stats(all)
Endogenous variables

Observed:  burnout tpi experien somatic

Exogenous variables

Observed:  coercive support

Fitting target model:

Iteration 0:   log likelihood = -2052.8451  
Iteration 1:   log likelihood = -2052.8451  

Structural equation model                       Number of obs     =        109
Estimation method  = ml
Log likelihood     = -2052.8451

--------------------------------------------------------------------------------
               |                 OIM
               |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
---------------+----------------------------------------------------------------
Structural     |
  burnout <-   |
      coercive |   .2935851   .0984724     2.98   0.003     .1005828    .4865873
       support |  -.3838194   .0777506    -4.94   0.000    -.5362078    -.231431
  -------------+----------------------------------------------------------------
  tpi <-       |
       burnout |   .1424866   .0510318     2.79   0.005     .0424661    .2425072
      coercive |  -.2717027   .0545622    -4.98   0.000    -.3786426   -.1647629
       support |   .0966997   .0458219     2.11   0.035     .0068904    .1865089
  -------------+----------------------------------------------------------------
  experien <-  |
           tpi |    .486437   .0538653     9.03   0.000     .3808629    .5920111
  -------------+----------------------------------------------------------------
  somatic <-   |
           tpi |   .7671996   .0692629    11.08   0.000     .6314468    .9029524
---------------+----------------------------------------------------------------
 var(e.burnout)|   67.51208    9.14499                      51.77024    88.04055
     var(e.tpi)|   19.16417   2.595923                      14.69565    24.99144
var(e.experien)|   7.833977   1.061168                      6.007324    10.21606
 var(e.somatic)|   12.95285   1.754555                      9.932622    16.89143
  var(coercive)|   68.37646   9.262076                      52.43307    89.16776
   var(support)|   109.6801   14.85695                      84.10591    143.0306
---------------+----------------------------------------------------------------
  cov(coercive,|
       support)|  -22.22152   8.563488    -2.59   0.009    -39.00565   -5.437396
--------------------------------------------------------------------------------
LR test of model vs. saturated: chi2(7)   =      3.93, Prob > chi2 = 0.7877

. estat gof, stats(all)

----------------------------------------------------------------------------
Fit statistic        |      Value   Description
---------------------+------------------------------------------------------
Likelihood ratio     |
          chi2_ms(7) |      3.931   model vs. saturated
            p > chi2 |      0.788
         chi2_bs(14) |    211.718   baseline vs. saturated
            p > chi2 |      0.000
---------------------+------------------------------------------------------
Population error     |
               RMSEA |      0.000   Root mean squared error of approximation
 90% CI, lower bound |      0.000
         upper bound |      0.078
              pclose |      0.882   Probability RMSEA <= 0.05
---------------------+------------------------------------------------------
Information criteria |
                 AIC |   4133.690   Akaike's information criterion
                 BIC |   4171.369   Bayesian information criterion
---------------------+------------------------------------------------------
Baseline comparison  |
                 CFI |      1.000   Comparative fit index
                 TLI |      1.031   Tucker-Lewis index
---------------------+------------------------------------------------------
Size of residuals    |
                SRMR |      0.034   Standardized root mean squared residual
                  CD |      0.447   Coefficient of determination
----------------------------------------------------------------------------

JGSSの職種をリコードする

Stataでリコードする場合,

JGSS2010コードブックの職業コードを参照して,リコードしてみる.
以下のコードで一応,管理(1)・事務(2)・熟練(3)・専門(4)・農林(5)・半熟練(6)・販売(7)・非熟練(8)のリコードができる.
分類不能は欠損とした.範囲指定をすれば,もっとエレガントにできるのだろう.

generate tjob=.
replace tjob = 1 if XXJOB = 545
replace tjob = 1 if XXJOB = 546
replace tjob = 1 if XXJOB = 547
replace tjob = 1 if XXJOB = 548
replace tjob = 1 if XXJOB = 549
replace tjob = 1 if XXJOB = 550
replace tjob = 1 if XXJOB = 551
replace tjob = 1 if XXJOB = 552
replace tjob = 1 if XXJOB = 553
replace tjob = 1 if XXJOB = 608
replace tjob = 2 if XXJOB = 554
replace tjob = 2 if XXJOB = 555
replace tjob = 2 if XXJOB = 556
replace tjob = 2 if XXJOB = 557
replace tjob = 2 if XXJOB = 558
replace tjob = 2 if XXJOB = 559
replace tjob = 2 if XXJOB = 560
replace tjob = 2 if XXJOB = 561
replace tjob = 2 if XXJOB = 562
replace tjob = 2 if XXJOB = 563
replace tjob = 2 if XXJOB = 564
replace tjob = 2 if XXJOB = 565
replace tjob = 2 if XXJOB = 586
replace tjob = 2 if XXJOB = 590
replace tjob = 2 if XXJOB = 593
replace tjob = 2 if XXJOB = 594
replace tjob = 2 if XXJOB = 595
replace tjob = 2 if XXJOB = 596
replace tjob = 2 if XXJOB = 597
replace tjob = 2 if XXJOB = 598
replace tjob = 2 if XXJOB = 616
replace tjob = 2 if XXJOB = 617
replace tjob = 2 if XXJOB = 618
replace tjob = 2 if XXJOB = 619
replace tjob = 2 if XXJOB = 701
replace tjob = 3 if XXJOB = 579
replace tjob = 3 if XXJOB = 581
replace tjob = 3 if XXJOB = 623
replace tjob = 3 if XXJOB = 624
replace tjob = 3 if XXJOB = 626
replace tjob = 3 if XXJOB = 628
replace tjob = 3 if XXJOB = 631
replace tjob = 3 if XXJOB = 633
replace tjob = 3 if XXJOB = 635
replace tjob = 3 if XXJOB = 636
replace tjob = 3 if XXJOB = 637
replace tjob = 3 if XXJOB = 638
replace tjob = 3 if XXJOB = 639
replace tjob = 3 if XXJOB = 640
replace tjob = 3 if XXJOB = 641
replace tjob = 3 if XXJOB = 642
replace tjob = 3 if XXJOB = 643
replace tjob = 3 if XXJOB = 644
replace tjob = 3 if XXJOB = 647
replace tjob = 3 if XXJOB = 651
replace tjob = 3 if XXJOB = 654
replace tjob = 3 if XXJOB = 655
replace tjob = 3 if XXJOB = 656
replace tjob = 3 if XXJOB = 658
replace tjob = 3 if XXJOB = 660
replace tjob = 3 if XXJOB = 661
replace tjob = 3 if XXJOB = 662
replace tjob = 3 if XXJOB = 663
replace tjob = 3 if XXJOB = 664
replace tjob = 3 if XXJOB = 665
replace tjob = 3 if XXJOB = 666
replace tjob = 3 if XXJOB = 668
replace tjob = 3 if XXJOB = 670
replace tjob = 3 if XXJOB = 671
replace tjob = 3 if XXJOB = 673
replace tjob = 3 if XXJOB = 674
replace tjob = 3 if XXJOB = 675
replace tjob = 3 if XXJOB = 677
replace tjob = 3 if XXJOB = 678
replace tjob = 3 if XXJOB = 679
replace tjob = 3 if XXJOB = 680
replace tjob = 3 if XXJOB = 681
replace tjob = 3 if XXJOB = 684
replace tjob = 4 if XXJOB = 501
replace tjob = 4 if XXJOB = 502
replace tjob = 4 if XXJOB = 503
replace tjob = 4 if XXJOB = 504
replace tjob = 4 if XXJOB = 505
replace tjob = 4 if XXJOB = 506
replace tjob = 4 if XXJOB = 507
replace tjob = 4 if XXJOB = 508
replace tjob = 4 if XXJOB = 509
replace tjob = 4 if XXJOB = 510
replace tjob = 4 if XXJOB = 511
replace tjob = 4 if XXJOB = 512
replace tjob = 4 if XXJOB = 513
replace tjob = 4 if XXJOB = 514
replace tjob = 4 if XXJOB = 515
replace tjob = 4 if XXJOB = 516
replace tjob = 4 if XXJOB = 517
replace tjob = 4 if XXJOB = 518
replace tjob = 4 if XXJOB = 519
replace tjob = 4 if XXJOB = 520
replace tjob = 4 if XXJOB = 521
replace tjob = 4 if XXJOB = 522
replace tjob = 4 if XXJOB = 523
replace tjob = 4 if XXJOB = 524
replace tjob = 4 if XXJOB = 525
replace tjob = 4 if XXJOB = 526
replace tjob = 4 if XXJOB = 527
replace tjob = 4 if XXJOB = 528
replace tjob = 4 if XXJOB = 529
replace tjob = 4 if XXJOB = 530
replace tjob = 4 if XXJOB = 531
replace tjob = 4 if XXJOB = 532
replace tjob = 4 if XXJOB = 533
replace tjob = 4 if XXJOB = 534
replace tjob = 4 if XXJOB = 535
replace tjob = 4 if XXJOB = 536
replace tjob = 4 if XXJOB = 537
replace tjob = 4 if XXJOB = 538
replace tjob = 4 if XXJOB = 539
replace tjob = 4 if XXJOB = 540
replace tjob = 4 if XXJOB = 541
replace tjob = 4 if XXJOB = 542
replace tjob = 4 if XXJOB = 543
replace tjob = 4 if XXJOB = 544
replace tjob = 4 if XXJOB = 609
replace tjob = 4 if XXJOB = 610
replace tjob = 4 if XXJOB = 615
replace tjob = 4 if XXJOB = 703
replace tjob = 5 if XXJOB = 599
replace tjob = 5 if XXJOB = 600
replace tjob = 5 if XXJOB = 601
replace tjob = 5 if XXJOB = 602
replace tjob = 5 if XXJOB = 603
replace tjob = 5 if XXJOB = 604
replace tjob = 5 if XXJOB = 605
replace tjob = 6 if XXJOB = 580
replace tjob = 6 if XXJOB = 606
replace tjob = 6 if XXJOB = 607
replace tjob = 6 if XXJOB = 611
replace tjob = 6 if XXJOB = 612
replace tjob = 6 if XXJOB = 613
replace tjob = 6 if XXJOB = 614
replace tjob = 6 if XXJOB = 625
replace tjob = 6 if XXJOB = 627
replace tjob = 6 if XXJOB = 629
replace tjob = 6 if XXJOB = 630
replace tjob = 6 if XXJOB = 632
replace tjob = 6 if XXJOB = 634
replace tjob = 6 if XXJOB = 645
replace tjob = 6 if XXJOB = 646
replace tjob = 6 if XXJOB = 648
replace tjob = 6 if XXJOB = 649
replace tjob = 6 if XXJOB = 650
replace tjob = 6 if XXJOB = 652
replace tjob = 6 if XXJOB = 653
replace tjob = 6 if XXJOB = 657
replace tjob = 6 if XXJOB = 659
replace tjob = 6 if XXJOB = 667
replace tjob = 6 if XXJOB = 669
replace tjob = 6 if XXJOB = 672
replace tjob = 6 if XXJOB = 676
replace tjob = 7 if XXJOB = 566
replace tjob = 7 if XXJOB = 567
replace tjob = 7 if XXJOB = 568
replace tjob = 7 if XXJOB = 569
replace tjob = 7 if XXJOB = 570
replace tjob = 7 if XXJOB = 571
replace tjob = 7 if XXJOB = 572
replace tjob = 7 if XXJOB = 573
replace tjob = 7 if XXJOB = 574
replace tjob = 7 if XXJOB = 575
replace tjob = 7 if XXJOB = 576
replace tjob = 7 if XXJOB = 577
replace tjob = 7 if XXJOB = 582
replace tjob = 7 if XXJOB = 583
replace tjob = 7 if XXJOB = 584
replace tjob = 7 if XXJOB = 585
replace tjob = 7 if XXJOB = 587
replace tjob = 7 if XXJOB = 588
replace tjob = 7 if XXJOB = 589
replace tjob = 8 if XXJOB = 578
replace tjob = 8 if XXJOB = 591
replace tjob = 8 if XXJOB = 592
replace tjob = 8 if XXJOB = 620
replace tjob = 8 if XXJOB = 621
replace tjob = 8 if XXJOB = 622
replace tjob = 8 if XXJOB = 682
replace tjob = 8 if XXJOB = 683
replace tjob = 8 if XXJOB = 685
replace tjob = 8 if XXJOB = 686
replace tjob = 8 if XXJOB = 687
replace tjob = 8 if XXJOB = 688

重回帰分析の係数の標準化

通常のソフトウェアでは重回帰分析の係数の非標準解と標準解を同時に出力する.しかし,それらが出力されない場合,
もしくは手計算の場合は,非標準解にローデータの独立変数の標準偏差をかけて,従属変数の標準偏差で割ると,
標準解が得られるとされている.

まず,標準化されていない回帰式は以下のように書ける.
Y=\beta_0+\beta_1X
簡便のため,単回帰を想定する.

標準化されている回帰式は以下のように書ける.
\frac{Y-\overline{Y}}{S_y}=\beta_0^*+\beta_1^*\frac{X-\overline{X}}{S_x}

ただし,S_yは{tex:Y}のローデータにおける標準偏差を表すとする.

標準化された係数は\beta_0^*のように*をつけてあらわす.
これを変形すると,

Y=S_y \cdot \beta_0^*-\beta_1^* \cdot \frac{S_y}{S_x} \cdot (X-\overline{X})-\overline{Y}

となる.これを定数部分と係数の部分に整理をすると.

Y=S_y \cdot \beta_0^*-\overline{Y}-\beta_1^* \cdot \frac{S_y}{S_x} \cdot \overline{X}+\beta_1^* \cdot \frac{S_y}{S_x} \cdot X

よって係数の部分は,

\beta_1=\beta_1^* \cdot \frac{S_x}{S_y}

となる.
したがって,

\beta_1^*=\beta_1 \cdot \frac{Sx}{Sy}

となる.