// MathJax
import pymc3 as pm
import semopy
import stan

structural model

import numpy as np
import pandas as pd
import semopy

# https://semopy.com/tutorial.html
X = np.random.normal(size=(300, 3))
data = pd.DataFrame(X, columns=map(lambda i: 'X' + str(i), range(X.shape[1])))
data['y'] = 3*data['X0'] + 2*data['X1'] + 1*data['X2'] + np.random.normal(0, 5, size=300) # structural error model

# https://semopy.com/syntax.html
model = semopy.Model("""y ~ X0 + X1 + X2""") # structural equation
model.fit(data, obj=['MLW', 'ULS', 'GLS', 'FIML'][1])
print(model.inspect())

semopy.semplot(model, "pd.png")

 

measurement model

import numpy as np
import pandas as pd
import statsmodels.api as sm
import semopy

# https://semopy.com/tutorial.html
X = np.random.normal(size=(300, 3))
data = pd.DataFrame(X, columns=map(lambda i: 'X' + str(i), range(X.shape[1])))

# https://semopy.com/syntax.html
model = semopy.Model(
    mimic_lavaan=False, baseline=False, cov_diag=False,
    description="""
    L0, L1 =~ X0 + X1 + X2
""") # measurement equation
model.fit(data, obj=['MLW', 'ULS', 'GLS', 'FIML'][1], clean_slate=True)
print(model.inspect())

display(semopy.semplot(model, "pd.png"))

result = sm.Factor(endog=data, n_factor=3, corr=None, method=['pa', 'ml'][0], smc=True, endog_names=None, nobs=None, missing='drop').fit()
result.rotate(method=['varimax', 'quartimax', 'biquartimax', 'equamax', 'oblimin', 'parsimax', 'parsimony', 'biquartimin', 'promax'][-1])
result.loadings

 

 

Confirmative Factor Analysis

import semopy
semopy.efa.explore_cfa_model
semopy.efa.explore_pine_model

 

 

 

 

 

 


Path Analysis

 

 

 

 

 

 

 


Hierarchical Structural Equation Modeling (H-SEM / ML-SEM)

 

 

 

 

 

 

 

 


Bayesian Hierarchical Structural Equation Modeling

 

 

 

 

 

 


Reference

 

 

 

'quantitative analysis > statistics' 카테고리의 다른 글

Elasticity, Equilibrium and Stability  (0) 2023.09.08
Causal Discovery  (0) 2023.08.11
Survival Analysis  (0) 2023.07.06
Bayesian Estimation  (0) 2023.05.31
Panel Analysis  (4) 2023.05.20

+ Recent posts