2

パッケージを使用semして分析を行います。パス図を描くには、pathDiagram関数insemを使用してコードを取得し、それを使用しGraphvizて図を取得します。2つの質問があります:

library(sem)

R.DHP <- readMoments(diag=FALSE, names=c('ROccAsp', 'REdAsp', 'FOccAsp', 
                'FEdAsp', 'RParAsp', 'RIQ', 'RSES', 'FSES', 'FIQ', 'FParAsp'))
    .6247                                                              
    .3269  .3669                                                        
    .4216  .3275  .6404                                      
    .2137  .2742  .1124  .0839                                
    .4105  .4043  .2903  .2598  .1839                          
    .3240  .4047  .3054  .2786  .0489  .2220                    
    .2930  .2407  .4105  .3607  .0186  .1861  .2707              
    .2995  .2863  .5191  .5007  .0782  .3355  .2302  .2950        
    .0760  .0702  .2784  .1988  .1147  .1021  .0931 -.0438  .2087  

model.dhp <- specifyModel()
    RParAsp  -> RGenAsp, gam11,  NA
    RIQ      -> RGenAsp, gam12,  NA
    RSES     -> RGenAsp, gam13,  NA
    FSES     -> RGenAsp, gam14,  NA
    RSES     -> FGenAsp, gam23,  NA
    FSES     -> FGenAsp, gam24,  NA
    FIQ      -> FGenAsp, gam25,  NA
    FParAsp  -> FGenAsp, gam26,  NA
    FGenAsp  -> RGenAsp, beta12, NA
    RGenAsp  -> FGenAsp, beta21, NA
    RGenAsp  -> ROccAsp,  NA,       1
    RGenAsp  -> REdAsp,  lam21,  NA
    FGenAsp  -> FOccAsp,  NA,       1
    FGenAsp  -> FEdAsp,  lam42,  NA
    RGenAsp <-> RGenAsp, ps11,   NA
    FGenAsp <-> FGenAsp, ps22,   NA
    RGenAsp <-> FGenAsp, ps12,   NA
    ROccAsp <-> ROccAsp, theta1, NA
    REdAsp  <-> REdAsp,  theta2, NA
    FOccAsp <-> FOccAsp, theta3, NA
    FEdAsp  <-> FEdAsp,  theta4, NA



sem.dhp <- sem(model.dhp, R.DHP, 329,
    fixed.x=c('RParAsp', 'RIQ', 'RSES', 'FSES', 'FIQ', 'FParAsp'))



pathDiagram(sem.dhp, min.rank='RIQ, RSES, RParAsp, FParAsp, FSES, FIQ', 
    max.rank='ROccAsp, REdAsp, FEdAsp, FOccAsp')
  1. 関数Rを使用してパス図を直接描画するにはどうすればよいですか?pathDiagram
  2. Rnwグラフをファイルに含めるにはどうすればよいSweaveですか?
4

1 に答える 1

3

ファイル名を指定するだけです (拡張子なしで!) file=。引数を参照してください。.dotドキュメントに記載されているように、PDF ファイルと両方のファイルが生成されます (ただしoutput.type="dot"、graphviz 出力のみが必要な場合は設定します)。

上記のコマンドを呼び出した後、Sweave ファイルで簡単な\includegraphicsコマンドを使用します。(マスター ファイルと同じディレクトリに SEM ダイアグラムを生成しない場合は、図を見つけるためにパスを調整する必要がある場合があり.Rnwます。)

アップデート

あなたのコメントを考えると、はい、関数呼び出し内から外部プログラムを実行する際に問題があるようです ( pathDiagram)。したがって、パス図を生成して Sweave->TeX ドキュメントに含めるには、あまり洗練されていないソリューションがあります。

Sweave ファイル ( sw.rnw)は次のとおりです。

\documentclass{article}
\usepackage{graphicx}
\begin{document}
<<echo=TRUE>>=
library(sem)
R.DHP <- readMoments("sem.cov", diag=FALSE, 
                     names=c('ROccAsp', 'REdAsp', 'FOccAsp', 
                       'FEdAsp', 'RParAsp', 'RIQ', 'RSES',  
                       'FSES', 'FIQ', 'FParAsp'))
model.dhp <- specifyModel(file="sem.mod")
sem.dhp <- sem(model.dhp, R.DHP, 329,
               fixed.x=c('RParAsp', 'RIQ', 'RSES', 'FSES', 'FIQ', 'FParAsp'))            
capture.output(pathDiagram(sem.dhp, min.rank='RIQ, RSES, RParAsp, FParAsp, FSES, FIQ', 
            max.rank='ROccAsp, REdAsp, FEdAsp, FOccAsp'), file="sem.dot")
@
<<echo=FALSE>>=
system("dot -Tpdf -o fig1.pdf  sem.dot")
@

And here is the path diagram.

\begin{center}
\includegraphics{fig1}
\end{center}

\end{document}

ファイルsem.covsem.modには、上記の例で手動で入力した共分散行列と構造モデルが含まれています (単純なコピー/プレーン テキスト ファイルへの貼り付け)。capture.output()チャンクからの呼び出しをマスクする方法が見つからないため、使用する必要があることにあまり満足していません。おそらく、それを行うためのより良い方法が見つかるでしょう (アイデアは を使用することであり、チャンク パラメータでsystem()簡単にマスクできます)。echo=FALSE

上記のドキュメントをたまたま次のようにコンパイルしました。

$ R CMD Sweave sw.rnw
$ R CMD texi2pdf sw.tex

ここに画像の説明を入力

于 2011-12-21T18:16:12.297 に答える