我有以下数据集,我想运行如下混合效应线性模型:
Type Season Price Sales
A Fall 34 500
A Winter 20 300
B Fall 15 100
B Winter 10 150
fm = model = smf.mixedlm("Sales ~ Price", df, groups = df[["Type","Season"]],
re_formula = "~Price")
但是,我收到以下错误:
unhashable type: 'numpy.ndarray'
您能帮我解决这个问题吗?这个模型可以在 R 中轻松完成,但我无法在 python 中找到兼容的示例。
您可以使用下面的vc_formula方法来解决上述问题。
import pandas as pd
import numpy as np
import statsmodels.api as sm
import random
import statsmodels.api as sm
import statsmodels.formula.api as smf
data={'Type': ['A', 'A', 'B', 'B'],'Season': ['Fall', 'Winter', 'Fall', 'Winter'],'Price': [34, 20, 15, 10],'Sales': [500, 300, 100, 150]}
df = pd.DataFrame(data)
fixed_formula='Sales ~ Price'
vc_formula={'g1': "0 + C(Type):C(Season)"}
oo=np.ones(df.shape[0])
model=sm.MixedLM.from_formula(fixed_formula, data=df, groups=oo, vc_formula=vc_formula)
results=model.fit()
print(results.summary())
random_effects_by_channel = results.random_effects
print(random_effects_by_channel)