def test_plspm_russa_mode_b(): satisfaction = pd.read_csv("file:tests/data/satisfaction.csv", index_col=0) config = c.Config(satisfaction_path_matrix(), scaled=False) config.add_lv_with_columns_named("QUAL", Mode.B, satisfaction, "qual") config.add_lv_with_columns_named("VAL", Mode.B, satisfaction, "val") config.add_lv_with_columns_named("SAT", Mode.B, satisfaction, "sat") config.add_lv_with_columns_named("LOY", Mode.B, satisfaction, "loy") config.add_lv_with_columns_named("IMAG", Mode.B, satisfaction, "imag") config.add_lv_with_columns_named("EXPE", Mode.B, satisfaction, "expe") plspm_calc = Plspm(satisfaction, config, Scheme.CENTROID) expected_inner_summary = pd.read_csv("file:tests/data/satisfaction.modeb.inner-summary.csv", index_col=0) npt.assert_allclose(util.sort_cols(expected_inner_summary.drop(["type"], axis=1)).sort_index(), util.sort_cols(plspm_calc.inner_summary().drop(["type", "r_squared_adj"], axis=1)).sort_index()) pt.assert_series_equal(expected_inner_summary.loc[:, "type"].sort_index(), plspm_calc.inner_summary().loc[:, "type"].sort_index())
def test_plspm_russa_mode_b(): russa = pd.read_csv("file:tests/data/russa.csv", index_col=0) config = c.Config(russa_path_matrix(), default_scale=Scale.NUM) config.add_lv("AGRI", Mode.B, c.MV("gini"), c.MV("farm"), c.MV("rent")) config.add_lv("POLINS", Mode.B, c.MV("ecks"), c.MV("demo"), c.MV("inst"), c.MV("death")) config.add_lv("IND", Mode.B, c.MV("gnpr"), c.MV("labo")) plspm_calc = Plspm(russa, config, Scheme.CENTROID, 100, 0.0000001) expected_inner_summary = pd.read_csv( "file:tests/data/russa.mode_b_inner_summary.csv", index_col=0) npt.assert_allclose( util.sort_cols(expected_inner_summary.drop(["type"], axis=1)).sort_index(), util.sort_cols(plspm_calc.inner_summary().drop( ["type", "r_squared_adj"], axis=1)).sort_index()) pt.assert_series_equal( expected_inner_summary.loc[:, "type"].sort_index(), plspm_calc.inner_summary().loc[:, "type"].sort_index())
def test_plspm_russa_missing_data(): russa = pd.read_csv("file:tests/data/russa.csv", index_col=0) russa.iloc[0, 0] = np.NaN russa.iloc[3, 3] = np.NaN russa.iloc[5, 5] = np.NaN config = c.Config(russa_path_matrix(), default_scale=Scale.NUM) config.add_lv("AGRI", Mode.A, c.MV("gini"), c.MV("farm"), c.MV("rent")) config.add_lv("IND", Mode.A, c.MV("gnpr"), c.MV("labo")) config.add_lv("POLINS", Mode.A, c.MV("ecks"), c.MV("death"), c.MV("demo"), c.MV("inst")) plspm_calc = Plspm(russa, config, Scheme.CENTROID, 100, 0.0000001) expected_inner_summary = pd.read_csv( "file:tests/data/russa.missing.inner_summary.csv", index_col=0) npt.assert_allclose( util.sort_cols(expected_inner_summary.drop(["type"], axis=1)).sort_index(), util.sort_cols(plspm_calc.inner_summary().drop( ["type", "r_squared_adj"], axis=1)).sort_index()) pt.assert_series_equal( expected_inner_summary.loc[:, "type"].sort_index(), plspm_calc.inner_summary().loc[:, "type"].sort_index()) assert plspm_calc.unidimensionality().drop(["mode", "mvs"], axis=1).isnull().values.all()
def test_plspm_russa(): russa = pd.read_csv("file:tests/data/russa.csv", index_col=0) config = c.Config(russa_path_matrix(), default_scale=Scale.NUM) config.add_lv("POLINS", Mode.A, c.MV("ecks"), c.MV("death"), c.MV("demo"), c.MV("inst")) config.add_lv("AGRI", Mode.A, c.MV("gini"), c.MV("rent"), c.MV("farm")) config.add_lv("IND", Mode.A, c.MV("gnpr"), c.MV("labo")) plspm_calc = Plspm(russa, config, Scheme.CENTROID, 100, 0.0000001) expected_scores = pd.read_csv("file:tests/data/russa.scores.csv", index_col=0) npt.assert_allclose(util.sort_cols(expected_scores), util.sort_cols(plspm_calc.scores())) expected_inner_model = pd.read_csv("file:tests/data/russa.inner_model.csv", index_col=0) actual_inner_model = plspm_calc.inner_model() actual_inner_model = actual_inner_model[actual_inner_model['to'].isin( ["POLINS"])].drop(["to"], axis=1) npt.assert_allclose( util.sort_cols(expected_inner_model).sort_index(), util.sort_cols(actual_inner_model.set_index(["from"], drop=True)).sort_index()) expected_outer_model = pd.read_csv("file:tests/data/russa.outer_model.csv", index_col=0) npt.assert_allclose( util.sort_cols( expected_outer_model.filter( ["weight", "loading", "communality", "redundancy"])).sort_index(), util.sort_cols(plspm_calc.outer_model()).sort_index()) expected_crossloadings = pd.read_csv( "file:tests/data/russa.crossloadings.csv", index_col=0) npt.assert_allclose( util.sort_cols(expected_crossloadings.filter(["AGRI", "IND", "POLINS"])).sort_index(), util.sort_cols(plspm_calc.crossloadings()).sort_index()) expected_inner_summary = pd.read_csv( "file:tests/data/russa.inner_summary.csv", index_col=0) npt.assert_allclose( util.sort_cols(expected_inner_summary.drop(["type"], axis=1)).sort_index(), util.sort_cols(plspm_calc.inner_summary().drop( ["type", "r_squared_adj"], axis=1)).sort_index()) pt.assert_series_equal( expected_inner_summary.loc[:, "type"].sort_index(), plspm_calc.inner_summary().loc[:, "type"].sort_index()) assert math.isclose(0.643594505232204, plspm_calc.goodness_of_fit()) plspm_calc_path = Plspm(russa, config, Scheme.PATH, 100, 0.0000001) expected_outer_model_path = util.sort_cols( pd.read_csv("file:tests/data/russa.outer_model_path.csv", index_col=0).filter( ["weight", "loading", "communality", "redundancy"])).sort_index() npt.assert_allclose( expected_outer_model_path, util.sort_cols(plspm_calc_path.outer_model()).sort_index()) plspm_calc_factorial = Plspm(russa, config, Scheme.FACTORIAL, 100, 0.0000001) expected_outer_model_factorial = util.sort_cols( pd.read_csv("file:tests/data/russa.outer_model_factorial.csv", index_col=0).filter( ["weight", "loading", "communality", "redundancy"])).sort_index() npt.assert_allclose( expected_outer_model_factorial, util.sort_cols(plspm_calc_factorial.outer_model()).sort_index())
def test_plspm_satisfaction(): satisfaction = pd.read_csv("file:tests/data/satisfaction.csv", index_col=0) config = c.Config(satisfaction_path_matrix(), scaled=False) config.add_lv_with_columns_named("IMAG", Mode.A, satisfaction, "imag") config.add_lv_with_columns_named("EXPE", Mode.A, satisfaction, "expe") config.add_lv_with_columns_named("VAL", Mode.A, satisfaction, "val") config.add_lv_with_columns_named("QUAL", Mode.A, satisfaction, "qual") config.add_lv_with_columns_named("SAT", Mode.A, satisfaction, "sat") config.add_lv_with_columns_named("LOY", Mode.A, satisfaction, "loy") plspm_calc = Plspm(satisfaction, config) expected_scores = pd.read_csv("file:tests/data/satisfaction.scores.csv") npt.assert_allclose(util.sort_cols(expected_scores), util.sort_cols(plspm_calc.scores())) expected_inner_model = pd.read_csv("file:tests/data/satisfaction.inner-model.csv", index_col=0) actual_inner_model = plspm_calc.inner_model() actual_inner_model = actual_inner_model[actual_inner_model['to'].isin(["SAT"])].drop(["to"], axis=1) npt.assert_allclose(util.sort_cols(expected_inner_model).sort_index(), util.sort_cols(actual_inner_model.set_index(["from"],drop=True)).sort_index()) expected_outer_model = pd.read_csv("file:tests/data/satisfaction.outer-model.csv", index_col=0).drop(["block"], axis=1) pt.assert_index_equal(expected_outer_model.columns, plspm_calc.outer_model().columns) npt.assert_allclose( util.sort_cols(expected_outer_model.sort_index()), util.sort_cols(plspm_calc.outer_model()).sort_index()) expected_crossloadings = pd.read_csv("file:tests/data/satisfaction.crossloadings.csv", index_col=0) npt.assert_allclose(util.sort_cols(expected_crossloadings.drop(["block"], axis=1)).sort_index(), util.sort_cols(plspm_calc.crossloadings()).sort_index()) expected_inner_summary = pd.read_csv("file:tests/data/satisfaction.inner-summary.csv", index_col=0) npt.assert_allclose(util.sort_cols(expected_inner_summary.drop(["type"], axis=1)).sort_index(), util.sort_cols(plspm_calc.inner_summary().drop(["type", "r_squared_adj"], axis=1)).sort_index()) pt.assert_series_equal(expected_inner_summary.loc[:, "type"].sort_index(), plspm_calc.inner_summary().loc[:, "type"].sort_index()) expected_effects = pd.read_csv("file:tests/data/satisfaction.effects.csv", index_col=0) pt.assert_frame_equal(expected_effects.loc[:, ["from", "to"]].sort_index(), plspm_calc.effects().loc[:, ["from", "to"]].sort_index()) npt.assert_allclose(expected_effects.drop(["from", "to"], axis=1).sort_index(), plspm_calc.effects().drop(["from", "to"], axis=1).sort_index()) expected_unidimensionality = pd.read_csv("file:tests/data/satisfaction_unidim.csv", index_col=0) npt.assert_allclose(util.sort_cols(expected_unidimensionality.drop(["mode"], axis=1)).sort_index(), util.sort_cols(plspm_calc.unidimensionality().drop(["mode"], axis=1)).sort_index()) assert math.isclose(0.609741624338411,plspm_calc.goodness_of_fit()) plspm_calc_path = Plspm(satisfaction, config, Scheme.PATH) expected_outer_model_path = util.sort_cols( pd.read_csv("file:tests/data/satisfaction.outer-model-path.csv", index_col=0).drop(["block"], axis=1)).sort_index() npt.assert_allclose(expected_outer_model_path, util.sort_cols(plspm_calc_path.outer_model()).sort_index()) plspm_calc_factorial = Plspm(satisfaction, config, Scheme.FACTORIAL) expected_outer_model_factorial = util.sort_cols( pd.read_csv("file:tests/data/satisfaction.outer-model-factorial.csv", index_col=0).drop(["block"], axis=1)).sort_index() npt.assert_allclose(expected_outer_model_factorial, util.sort_cols(plspm_calc_factorial.outer_model()).sort_index())