我正在使用
statsmodels mixedlm
如下所示:
model = smf.mixedlm("value ~ categorical_variable", data, groups=data[year_identifier])
当我绘制残差时,我有一个轻微的左偏分布:
我试图转换我的响应变量,使其成为带有自定义偏斜参数的偏斜法线:
# Define the custom skew-normal distribution with a custom skew parameter
skew_parameter = -4
# Transform response variable using the inverse CDF
data["transformed_value"] = stats.skewnorm.ppf(
stats.norm.cdf(
x=np.array(data["value"].values),
),
skew_parameter,
)
结果
np.inf
价值观
然后我尝试通过调整
loc
和
scale
值:
# Transform response variable using the inverse CDF
data["transformed_value"] = stats.skewnorm.ppf(
stats.norm.cdf(
x=np.array(data["value"].values),
loc=np.mean(data["value"]),
scale=np.std(data["value"]),
),
skew_parameter,
)
这提供了一个变换后的数组,但当我绘制残差时,分布实际上是
更糟的
当我使用下面的公式将它们转换回来时,这些值看起来根本不正确:
result.params['Intercept'] = stats.skewnorm.cdf(result.params['Intercept'], skew_parameter)
result.params['categorical_variable[T.value]'] = stats.skewnorm.cdf(result.params['categorical_variable[T.value]'], skew_parameter)
有人能建议在这种情况下该怎么办吗?
也许我没有正确地转换,或者,也许有更好的方法来处理左偏正态分布?