用指定的均值或sigma拟合拉普拉斯分布

问题描述

我想使Laplace分布适合特定数据。但我希望平均值等于0。 我相信在scipy.stats中使用fit函数,然后将mean(loc)参数设置为零不是逻辑解决方案。 有更好的解决方案吗?预先感谢。

from scipy.stats import laplace
import numpy as np
import matplotlib.pyplot as plt
def fit_laplace(arr,axes):
    params = laplace.fit(arr)
    x = np.linspace(min(arr),max(arr),100)
    print("ParaMS: ",params)
    pdf_fitted = laplace.pdf(x,params[1])
    axes.plot(x,pdf_fitted,color='red')

解决方法

正确的方法是先使用z-transform转换数据,然后拟合分布。

,

要将平均值限制为零,请在floc=0方法的调用中使用fit

params = laplace.fit(arr,floc=0)