OpenMxは、拡張構造方程式モデリングのためのオープンソースプログラムです。Rのパッケージとして動作します。クロスプラットフォームで、Linux、Mac OS、Windowsで動作します。[ 2 ]
OpenMxは、 SEMモデルの迅速かつ柔軟な実装と推定をサポートする関数とオプティマイザのRライブラリで構成されています。モデルは、生データ( FIMLモデリングを使用)または相関行列もしくは共分散行列に基づいて推定できます。モデルは、連続データと順序データの混合を扱うことができます。現在のバージョンはOpenMx 2 [ 3 ]で、 CRANで入手可能です。
パス解析、確認的因子分析、潜在成長モデル、媒介分析はすべて実装されています。複数グループモデルも容易に実装できます。モデルを実行するとモデルが返され、モデルは更新可能です(パスの追加と削除、制約と等式の追加、パラメータに同じラベルを付けることでそれらを等しくするなど)。革新的な機能として、ラベルに他のパラメータのアドレスを含めることができ、アドレスによるパラメータへの制約を簡単に実装できます。
RAMモデルは、標準化された推定値と生の推定値、およびさまざまな適合度指標(AIC、RMSEA、TLI、CFIなど)を返します。信頼区間はロバストに推定されます。
このプログラムは、Rの並列環境へのリンクを介して並列処理機能を組み込んでおり、一般的にRプログラミング環境の利点を活用しています。
ユーザーはパッケージに関数を追加して拡張できます。これらの関数は、例えば変更インデックスの実装などに使用されています。
モデルは「パス」形式または「行列」形式のいずれかで記述できます。パスモデルで考える場合、パスはmxPath()関数を使用して記述します。行列代数による記述に適したモデルの場合は、R環境のmxMatrixやmxAlgebraなどの同様の関数拡張機能を使用します。
以下のコードは、パス形式またはマトリックス形式のいずれかを使用して、OpenMxで単純な確認的因子分析を実装する方法を示しています。モデルの図は以下のとおりです。

以下は、5つの指標を用いた1因子パスモデルを推定するための実装、実行、および要約出力を行うコードです。
require ( OpenMx ) data ( demoOneFactor ) manifests <- names ( demoOneFactor ) latents <- c ( "G" )m1 <- mxModel ( "One Factor" , type = "RAM" , manifestVars = manifests , latentVars = latents , mxPath ( from = latents , to = manifests ), mxPath ( from = manifests , arrows = 2 ), mxPath ( from = latents , arrows = 2 , free = FALSE , values = 1.0 ), mxData ( cov ( demoOneFactor ), type = "cov" , numObs = 500 ) ) summary ( mxRun ( m1 ))以下は、5つの指標を用いた1因子パスモデルを推定するための実装、実行、および要約出力を行うコードです。
library ( OpenMx ) data ( demoOneFactor ) df = cov ( demoOneFactor )m1 <- mxModel ( "One Factor" , mxMatrix ( "Full" , nrow = 5 , ncol = 1 , values = 0.2 , free = TRUE , name = "A" ), mxMatrix ( "Symm" , nrow = 1 , ncol = 1 , values = 1.0 , free = FALSE , name = "L" ), mxMatrix ( "Diag" , nrow = 5 , ncol = 5 , values = 1.0 , free = TRUE , name = "U" ), mxAlgebra ( A %*% L %*% t ( A ) + U , name = "R" ), mxExpectationNormal ( covariance = "R" , dimnames = names ( demoOneFactor )), mxFitFunctionML (), mxData ( df , type = "cov" , numObs = 500 ) ) summary ( mxRun ( m1 ))