def test_anova(): np.random.seed(1) data = pd.read_csv(os.path.join(get_resource_path(), "sample_data.csv")) data["DV_l2"] = np.random.randint(0, 4, data.shape[0]) model = Lmer("DV ~ IV3*DV_l2 + (IV3|Group)", data=data) model.fit(summarize=False) out = model.anova() assert out.shape == (3, 7) out = model.anova(force_orthogonal=True) assert out.shape == (3, 7)
def test_anova(): np.random.seed(1) data = pd.read_csv(os.path.join(get_resource_path(), 'sample_data.csv')) data['DV_l2'] = np.random.randint(0, 4, data.shape[0]) model = Lmer('DV ~ IV3*DV_l2 + (IV3|Group)', data=data) model.fit(summarize=False) out = model.anova() assert out.shape == (3, 7)
import pandas as pd from pymer4.utils import get_resource_path from pymer4.models import Lmer # IV3 is a categorical predictors with 3 levels in the sample data df = pd.read_csv(os.path.join(get_resource_path(), "sample_data.csv")) # # We're going to fit a multi-level regression using the # categorical predictor (IV3) which has 3 levels model = Lmer("DV ~ IV3 + (1|Group)", data=df) # Using dummy-coding; suppress summary output model.fit(factors={"IV3": ["1.0", "0.5", "1.5"]}, summarize=False) # Get ANOVA table print(model.anova()) ################################################################################ # Type III SS inferences will only be valid if data are fully balanced across levels or if contrasts between levels are orthogonally coded and sum to 0. Below we tell :code:`pymer4` to respecify our contrasts to ensure this before estimating the ANOVA. :code:`pymer4` also saves the last set of contrasts used priory to forcing orthogonality. # # Because the sample data is balanced across factor levels and there are not interaction terms, in this case orthogonal contrast coding doesn't change the results. # Get ANOVA table, but this time force orthogonality # for valid SS III inferences # In this case the data are balanced so nothing changes print(model.anova(force_orthogonal=True)) ################################################################################ # Checkout current contrast scheme (for first contrast) # Notice how it's simply a linear contrast across levels