如何用Python(Statsmodels)编写线性混合效果模型的公式?
请容忍我,因为我对这一级别的统计数据和Python还不熟悉。我已经阅读了statsmodels和patsy的所有文件,但仍然有疑问 我试图使用statsmodels MixedLM分析纵向数据。简化一点,我有5个变量,自变量之间没有共线:如何用Python(Statsmodels)编写线性混合效果模型的公式?,python,statsmodels,mixed-models,longitudinal,patsy,Python,Statsmodels,Mixed Models,Longitudinal,Patsy,请容忍我,因为我对这一级别的统计数据和Python还不熟悉。我已经阅读了statsmodels和patsy的所有文件,但仍然有疑问 我试图使用statsmodels MixedLM分析纵向数据。简化一点,我有5个变量,自变量之间没有共线: 结果:因变量 患者:随机效应,因为每个患者都有多个结果测量值 时间:固定效应 目标:固定效应,0=否,1=是,无论患者是否有针对性地进行干预以解决结果 性别:固定效应,0=男性,1=女性 我想知道两件事: 患者是否成为目标与随时间变化的结果趋势之间是否存在
- 结果:因变量李>
- 患者:随机效应,因为每个患者都有多个结果测量值
- 时间:固定效应
- 目标:固定效应,0=否,1=是,无论患者是否有针对性地进行干预以解决结果
- 性别:固定效应,0=男性,1=女性
md = smf.mixedlm('outcome ~ time * targeted', df, groups = df['patient'])
这个符号正确吗?或者我应该使用:
md = smf.mixedlm('outcome ~ time : targeted', df, groups = df['patient'])
为了更好地比较结果趋势的差异?还是别的什么
为了回答第二个问题,我试着:
md = smf.mixedlm('outcome ~ time * targeted * sex', df, groups = df['patient'])
但我不认为这是正确的,因为系数没有意义。有针对性的患者需要有>6的起始结果,但针对性的系数:性别<6。一种解决方案是制作一个单独的数据帧,只包括目标患者,但我很好奇,这里是否有我可以使用不同的操作符来获得我想要的
谢谢大家! 您是否手动将截取术语添加到您的模型中?我认为这是必要的statsmodel@Peter我肯定是错的,但我认为MixedLM默认包含一个截取,我一直将其解释为非目标群体(第二个问题中的男性)在时间0时的结果。不过,如果你是这个意思的话,我没有添加随机截距。嗨@EMG,如果你对贝叶斯统计持开放态度,你可以试试Bambi。它允许您使用公式接口完全指定混合模型,而不必使用其他参数。您是否已手动将截取项添加到模型中?我认为这是必要的statsmodel@Peter我肯定是错的,但我认为MixedLM默认包含一个截取,我一直将其解释为非目标群体(第二个问题中的男性)在时间0时的结果。不过,如果你是这个意思的话,我没有添加随机截距。嗨@EMG,如果你对贝叶斯统计持开放态度,你可以试试Bambi。它允许您使用公式接口完全指定混合模型,而不必使用其他参数。