显示seaborn regplot中的回归方程

Vik*_*ula 27 python regression seaborn

有谁知道如何使用sns.regplot或sns.jointplot在seaborn中显示回归方程?regplot似乎没有任何参数可以传递给显示回归诊断,而jointplot只显示皮尔逊R ^ 2和p值.我正在寻找一种方法来查看斜率系数,标准误差和截距.

谢谢

mil*_*kan 24

2015年,seaborn的首席开发人员回复了一项功能请求,要求访问用于生成图表的统计值,并说"它不可用,并且不会提供."

所以,不幸的是,这个特征在海底不存在,并且似乎不太可能存在.

更新:2018年3月,seaborn的首席开发人员重申他反对这一功能.他似乎......对进一步讨论不感兴趣.

  • 我看到维护者的观点。如果回归仅用于可视化,他可以使用各种快捷方式,例如使绘图更快。但如果用户开始依赖他的代码为已发表的论文生成数字,他肩上的责任突然增加了。不想承担这样的责任是可以的(尽管他在最新的回复中本可以更好)。此外,我怀疑他不想鼓励粗略的统计测试“绘制图形,读出 R^2,如果它高于 X,则声称结果”。 (10认同)
  • 哇,根据我的专业观点,开发人员在这一点上是完全错误的(对此也很不礼貌)。无法访问基本的统计模型使seaborn不适合进行严肃的科学可视化。关于使用seaborn作为出版物质量数据的任何问题的答案现在都是“只是不要使用它”。遗憾的是,因为否则会很好。 (7认同)
  • “它超出了范围,因为 seaborn 是一个用于可视化的库,而不是用于统计 (statsmodels) 或数据处理 (pandas)”......我们正在可视化的是 _data_,对吗?以及由统计数据创建的线条……尤其是当 **Seaborn** 调用 _statsmodels_ 进行自己的估计时? (2认同)
  • 不提供此类信息是完全有道理的,因为它可以通过更合适的 statsmodels 包来计算,其生活的唯一目的就是做这样的事情并把它们做好。正如其他人正确指出的那样,seaborn 是一个可视化库,因此在尝试获取统计模型时不应依赖它。人们可以同时使用seaborn和statsmodels,并使它们协同工作以发挥各自的优势。这对我来说很有意义。 (2认同)

Khr*_*ris 11

迟到和部分回答.我有一个问题,只是想获得回归线的数据,我发现了这个:

当你有这个情节时:

f = mp.figure()
ax = f.add_subplot(1,1,1)
p = sns.regplot(x=dat.x,y=ydat,data=dat,ax=ax)
Run Code Online (Sandbox Code Playgroud)

然后p有一个方法get_lines(),它返回一个line2D对象列表.并且line2D对象具有获取所需数据的方法:

因此,要获取此示例中的线性回归数据,您只需执行以下操作:

p.get_lines()[0].get_xdata()
p.get_lines()[0].get_ydata()
Run Code Online (Sandbox Code Playgroud)

这些调用返回每个numpy回归线数据点的数组,您可以自由使用它们.

使用p.get_children()您可以获得绘图的各个元素的列表.

置信区间图的路径信息可以通过以下方式找到:

p.get_children()[1].get_paths()
Run Code Online (Sandbox Code Playgroud)

它是以数据点元组的形式出现的.

通常可以通过dir()在任何Python对象上使用该命令找到很多,它只显示那里的所有内容.

  • @Khris确定但是有一个奇怪的是,有一个计算回归的软件,给出了结果模型的相关系数和p值,并没有提供模型本身?如果seaborn作者可以添加此功能,那将是很棒的, (16认同)
  • 这不会直接产生所需的等式; 期望的是回归线的斜率和截距.即,a和b代表y = ax + b.然而,要得到这个,可以使用`scipy`s`stats.linregress`:`slope,intercept,r_value,p_value,std_err = scipy.stats.linregress(x = p.get_lines()[0] .get_xdata(), Y = p.get_lines()[0] .get_ydata())` (7认同)
  • 该方程可以使用其中两个点的 (x,y) 坐标轻松计算。用两点你可以计算出a和b。 (2认同)