★ RでSEMを実行する際のサマリーの格納方法 ★

9025. RでSEMを実行する際のサマリーの格納方法 たじま 2006/01/13 (金) 15:39
└9027. Re: RでSEMを実行する際のサマリーの格納方法 青木繁伸 2006/01/13 (金) 15:49
 └9031. Re^2: RでSEMを実行する際のサマリーの格納方法 たじま 2006/01/13 (金) 16:21
  └9033. Re^3: RでSEMを実行する際のサマリーの格納方法 青木繁伸 2006/01/13 (金) 17:43
   └9034. Re^4: RでSEMを実行する際のサマリーの格納方法 たじま 2006/01/13 (金) 19:59
    └9036. Re^5: RでSEMを実行する際のサマリーの格納方法 青木繁伸 2006/01/13 (金) 22:03
     └9056. Re^6: RでSEMを実行する際のサマリーの格納方法 たじま 2006/01/14 (土) 23:03


9025. RでSEMを実行する際のサマリーの格納方法 たじま  2006/01/13 (金) 15:39
現在,Rを使ってSEMを行っています。SEMの方法は,「R言語による医学統計」
http://akimichi.homeunix.net/hiki/biostat/?R%B8%C0%B8%EC%A4%CB%A4%E8%A4%EB%B0%E5%B3%D8%C5%FD%B7%D7#l23
の「下部消化器癌の例1 」をトレースし,上手く動いたので自分でプログラムを作成しているのですが,SEMの適合度等,サマリーをデータに格納する方法はあるでしょうか?

summary(sem(ram.cancer, cor.cancer, N=47, obs.variables=rownames(cor.cancer), debug=TRUE))
によりGFI等は画面上に表示されますが,それをデータに格納し,最終的にはテキストファイルに書き出すのが目的です。

感じとしては,単回帰の時の結果を変数に格納する
w <- ls.print(lsfit(y,x))
の機能と同じかと思われます。(t値やR^2等を使った経験があります)
ご教授いただけると幸いです。よろしくお願いしますm(__)m

     [このページのトップへ]


9027. Re: RでSEMを実行する際のサマリーの格納方法 青木繁伸  2006/01/13 (金) 15:49
> SEMの適合度等,サマリーをデータに格納する方法はあるでしょうか?

データに格納ということですが,最終的にテキストファイルに書き出すのが目的なら,sink("foo.txt") 〜 操作 〜 sink() でよろしいのではないでしょうか。

sem の summary といっても,sem が返してくるものの一部を表示しているだけなので bar <- sem(...) とすれば bar に全ての結果が付値され,その中にどのようなものがあるかはマニュアルあるいは str(bar) でわかります。その中の bar$baz を書き出したければ write(bar$baz) で良いのではないかと思います。

追試してからと思いましたが,
> data(Cancer)
Warning message:
data set 'Cancer' not found in: data(Cancer)
ということで,できませんでしたので,的を外しているかもしれませんが。

     [このページのトップへ]


9031. Re^2: RでSEMを実行する際のサマリーの格納方法 たじま  2006/01/13 (金) 16:21
青木先生,早速のお返事ありがとうございます。データ cancer.txt は医学統計の重回帰のページにあります。
http://akimichi.homeunix.net/hiki/biostat/?c=plugin;plugin=attach_download;p=R%B8%C0%B8%EC%A4%CB%A4%E8%A4%EB%B0%E5%B3%D8%C5%FD%B7%D7;file_name=Cancer.txt

いま,実際に作業中なのと,勉強不足のため sink()について調べている状況です。

さ て,なぜサマリーの一部だけ取り出そうと思ったかというと,私の作っているSEMでは潜在変数は決まっているのですが,観測変数がたくさんある状況の中か ら(この観測変数についてはある程度理論的背景を持って選んでいます),少数の変数に絞込みを行いたいと思っているからです。この時,Rを使って変数の組 み換えのプログラムを作り,適合度(GFI,AGFI,RMSEA)の良いいくつかの候補を選び,その中から理論的に最もふさわしいモデルを採用しようと 考えているためです。

この「総当り」の方法は変数選択を機械に任せるという点で,モデル構築の知見が足りないのかもしれませんが,発想としては重回帰分析の変数選択法における「総当り法」をイメージしています。

     [このページのトップへ]


9033. Re^3: RでSEMを実行する際のサマリーの格納方法 青木繁伸  2006/01/13 (金) 17:43
? sem で,sem 関数がどのようなものを返すかわかりますよ。

     [このページのトップへ]


9034. Re^4: RでSEMを実行する際のサマリーの格納方法 たじま  2006/01/13 (金) 19:59
>青木先生,何度もありがとうございます。教えていただいたとおり,str(bar <- sem(...) )を実行してみたところ,以下の結果が得られました。ただ,ここには GFI, AGFI , RMSEA は無いようでした。以下,その結果のリストを書かせていただきます。文字制限を越えているので,数値やラベル名は省略してあります。

---------- 結果 --------
List of 19
$ var.names : chr
$ ram : num [1:15, 1:5] 1 1 1 1 1 1 1 2 2 2 ...
$ coeff : Named num [1:13] 1.46 1.43 1.16 1.33
$ criterion : num 1.01
$ S : num [1:6, 1:6] 1.000 0.773 0.715 0.634 ..- $ J : num [1:6, 1:8] 1 0 0 0 0 0 0 1 0 0 ...
$ C : num [1:6, 1:6] 1.000 0.803 0.650
$ A : num [1:8, 1:8] 0 0 0 0 0 0 0 0 0 0 ...
$ P : num [1:8, 1:8] 0.183 0.000 0.000 0.000
$ n.fix : int 0
$ n : int 6
$ N : num 47
$ m : num 8
$ t : num 13
$ par.posn : int [1:13] 1 2 3 5 7 8 9 10 11 12 ...
$ convergence: int 1
$ iterations : int 41
$ raw : logi FALSE
$ cov : num [1:13, 1:13] 9.15e-02 8.00e-02 6.71e-02

     [このページのトップへ]


9036. Re^5: RでSEMを実行する際のサマリーの格納方法 青木繁伸  2006/01/13 (金) 22:03
> ただ,ここには GFI, AGFI , RMSEA は無いようでした。

sem に対する summary メソッドは
sem:::summary.sem
で示される動作をします。

オープンソースということは,動作の細かいところの確認はユーザに任すと言うことでもありますね。面倒ではあります。

このsummary.sem を加工して,本当に必要な情報だけを書き出す関数を作ることもできるわけです。
sink で書き出す場合には,数値の精度も制限があるので,sink よりは自分で適切な関数を定義して,有効桁いっぱいのデータを描き出すことが必要でしょうね。

     [このページのトップへ]


9056. Re^6: RでSEMを実行する際のサマリーの格納方法 たじま  2006/01/14 (土) 23:03
青木先生,何度もお返事ありがとうございました。勉強して自分で作ってみたいと思います。

     [このページのトップへ]


● 「統計学関連なんでもあり」の過去ログ--- 036 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る