结构方程建模优化包。

semop的Python项目详细描述


semopy

Documentation Status

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模型的管道由三个步骤组成:

  1. 指定模型
  2. 将数据集加载到模型
  3. 估计模型参数。

指定和估计sem模型所需的两个主要对象是modeloptimizer

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找到。有关详细信息,请参阅文章。

要求

numpypandasscipyportmin(我们的portminport,也需要cython)。

作者

  • mescheryakov a.georgy-developer-Herrberg-未毕业学生,spbstu
  • igolkina a.anna-supervisor-iganna-phd,spbstu

许可证

此项目是在麻省理工学院的许可下授权的-请参阅license.md文件以了解详细信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓如何在java字符串中获取RATE的值   java ANT在哪里输出编译器错误?   在java中,while循环在何处启动对象   javacom。谷歌。格森。内部的LinkedTreeMap无法强制转换到我的类   java单选按钮。isSelected()方法未返回正确的响应   嵌入式系统中applet中的java相对码基字段   如何在eclipse中将Java应用程序附加到jvm探查器?   java为什么Android应用程序崩溃?   在java中拖放上传后保持文件夹结构   爪哇多领导人选举问题   java Springs RestTemplate如何处理postForEntity()中的错误响应   Java如何用前导零递增整数字符串?   java Android将文本作为图像共享给其他应用程序   Java搜索替换   java isDirectory()不适用于UNIX目录   java我们可以得到显示测试类是否通过或失败的TestNG报告吗   Java类对象排序和分组   简单Java幂递归   java在处理MethodArgumentNotValidException时如何访问请求对象?