Seaborn对图中的鲁棒统计线性回归

时间:2016-04-29 18:16:35

标签: statistics linear-regression seaborn

尝试实现健壮的统计数据而不是普通的最小二乘法(OLS)拟合,以便异常值不适合我的问题。 我希望在seaborn的pairplot函数中实现这一点,并且无法从AP文档中看到并简单地添加它,因为它似乎不是拟合的关键字参数。

来自:scipy lectures他们建议使用以下内容,但我想这是regplot,您可以使用

定义合适度
`fit = statsmodels.formula.api.rlm()`

以下是一些示例代码

import seaborn as sns; sns.set(style="ticks", color_codes=True)
import matplotlib.pyplot as plt
%matplotlib inline
iris = sns.load_dataset("iris")
sns.pairplot(iris, kind="reg")#, robust = True)
plt.show()

提前致谢!

编辑:我找到了一种解决方法,但松散了“色调”。显然可以在配对图上完成。为pairplot添加健壮的选项将是一个很好的功能。 代码:

def corrfunc(x, y, **kws): 
    r, _ = stats.pearsonr(x, y) 
    ax = plt.gca() 
    ax.annotate("r = {:.2f}".format(r), xy=(.1, .9), xycoords=ax.transAxes) 

g = sns.PairGrid(df1, palette=["red"]) 
g.map_upper(sns.regplot, robust = True) 
g.map_diag(sns.distplot, kde=True) 
g.map_lower(sns.kdeplot, cmap="Blues_d") 
g.map_lower(corrfunc) 

1 个答案:

答案 0 :(得分:0)

可以通过plot_kws参数将额外的关键字(例如“robust = True”)传递给regplot:

sns.pairplot(df1,kind='reg',hue='species',plot_kws=dict(robust=True,n_boot=50))

注意:在这个例子中,我还减少了n_boot以减少运行时间(请参见regplot文档中的“robust”),因此置信区间可能不正确)。