如何从seaborn distplot fit =?获得拟合参数?

时间:2015-07-14 17:57:44

标签: python seaborn

我正在使用seaborn distplot(data,fit = stats.gamma)

如何获取返回的拟合参数?

以下是一个例子:

import numpy as np
import pandas as pd
import seaborn as sns
from scipy import stats
df = pd.read_csv ('RequestSize.csv')
import matplotlib.pyplot as plt
reqs = df['12 web pages']
reqs = reqs.dropna()
reqs = reqs[np.logical_and (reqs > np.percentile (reqs, 0), reqs < np.percentile (reqs, 95))]
dist = sns.distplot (reqs, fit=stats.gamma)

2 个答案:

答案 0 :(得分:6)

使用您传递给{ "node": true, "browser": true, "esnext": true, "bitwise": true, "camelcase": true, "curly": true, "eqeqeq": true, "immed": true, "indent": 2, "latedef": true, "noarg": true, "quotmark": "single", "undef": true, "unused": true, "globals": { "wrap": true, "unwrap": true, "Polymer": true, "Platform": true, "page": true, "app": true } } 的对象:

distplot

答案 1 :(得分:2)

我确认以上情况属实 - sns.distplot fit方法等同于scipy.stats中的fit方法,因此您可以从那里获取参数,例如:

from scipy import stats

ax = sns.distplot(e_t_hat, bins=20, kde=False, fit=stats.norm);
plt.title('Distribution of Cointegrating Spread for Brent and Gasoil')

# Get the fitted parameters used by sns
(mu, sigma) = stats.norm.fit(e_t_hat)
print "mu={0}, sigma={1}".format(mu, sigma)

# Legend and labels 
plt.legend(["normal dist. fit ($\mu=${0:.2g}, $\sigma=${1:.2f})".format(mu, sigma)])
plt.ylabel('Frequency')

# Cross-check this is indeed the case - should be overlaid over black curve
x_dummy = np.linspace(stats.norm.ppf(0.01), stats.norm.ppf(0.99), 100)
ax.plot(x_dummy, stats.norm.pdf(x_dummy, mu, sigma))
plt.legend(["normal dist. fit ($\mu=${0:.2g}, $\sigma=${1:.2f})".format(mu, sigma),
           "cross-check"])

enter image description here