import pandas as pd
from semopy import Model, calc_stats

dane = pd.read_csv("dane_konstrukt_wyzszego_rzedu.csv")

model_opis = """
komunikacja =~ x1 + x2 + x3
koordynacja =~ x4 + x5 + x6
zaufanie =~ x7 + x8 + x9
wsparcie =~ x10 + x11 + x12

jakosc =~ komunikacja + koordynacja + zaufanie + wsparcie
wynik ~ jakosc
"""

model = Model(model_opis)
rezultat = model.fit(dane)
if not rezultat.success:
    raise RuntimeError(rezultat.message)

parametry = model.inspect(std_est=True)
print(
    parametry.loc[
        ((parametry["op"] == "~") & (parametry["rval"] == "jakosc"))
        | ((parametry["op"] == "~") & (parametry["lval"] == "wynik")),
        ["lval", "op", "rval", "Estimate", "Est. Std", "Std. Err", "p-value"],
    ]
)

dopasowanie = calc_stats(model)
print(dopasowanie[["chi2", "DoF", "CFI", "TLI", "RMSEA"]])
