结构方程建模优化包。
semop的Python项目详细描述
semopy
semopy是一个伞形python包,它包含许多结构方程建模(sem)技术。
功能
- 用用户友好的语法写下模型描述
- 使用多种目标函数估计模型参数
- 计算大量统计数据和拟合指数
- 序数变量存在下的模型参数估计
- 大量设置以满足研究人员的需要
- 快速准确
安装
semopy在pypi上提供,可以通过在终端中键入以下行来安装:
pip install semopy
语法
要指定sem模型,semopy使用语法,这是r中描述回归模型的自然语法。语法支持三个运算符符号,用于描述变量之间的关系:
- ~要指定结构件,
- =~要指定测量部分,
- ~~指定变量之间的公共方差。
例如,让sem模型结构部分的线性方程的形式为:
y = β1 x1 + β2 x2 + ε
然后,在semopy语法中,它变成:
y ~ x1 + x2
参数β1,β2由semopy估计。在某些情况下,用户可能希望将某些参数修复为特定值。例如,假设我们希望β1保持等于2.0,我们只对估计β2感兴趣:
y ~ 2*x1 + x2
同样,如果潜在变量η由清单变量y1、y2、y3解释,那么在semopy语法中,可以这样写下来:
eta =~ y1 + y2 + y3
也可以指定变量的类型。如果变量x2是序数,我们可以使用一个特殊的运算符“is”:
x2 is ordinal
快速启动
对于具有真实数据的jupyter笔记本示例,请参见Examples目录。
在semopy中使用sem模型的管道由三个步骤组成:
- 指定模型
- 将数据集加载到模型
- 估计模型参数。
指定和估计sem模型所需的两个主要对象是model和optimizer。
model负责根据建议的sem语法建立模型:
# The first step
from semopy import Model
mod = """ x1 ~ x2 + x3
x3 ~ x2 + eta1
eta1 =~ y1 + y2 + y3
eta1 ~ x1
"""
model = Model(mod)
然后应提供一个数据集;在此步骤中,计算参数的初始值:
# The second step
from pandas import read_csv
data = read_csv("my_data_file.csv", index_col=0)
model.load_dataset(data)
要估计模型的参数,应该初始化优化器对象并执行估计:
# The third step
from semopy import Optimizer
opt = Optimizer(model)
objective_function_value = opt.optimize()
参数估计的默认目标函数是似然函数,优化方法是slsqp(序贯最小二乘二次规划)。然而,semopy支持在optimize方法中指定为参数的各种其他目标函数和优化方案。
最后,用户可以检查参数的估计值:
from semopy.inspector import inspect
inspect(opt)
文档
所有方法和类都提供了docstring,生成的文档也可以在ReadTheDocs找到。有关详细信息,请参阅文章。
要求
numpy,pandas,scipy,portmin(我们的portminport,也需要cython)。
作者
许可证
此项目是在麻省理工学院的许可下授权的-请参阅license.md文件以了解详细信息。