微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Seabron lmplot 使用 scipy

如何解决Seabron lmplot 使用 scipy

当我使用 scipy 偶然发现 pearson r 相关性的解决方案时,我想添加 Rsquarred 值的注释

import pandas as pd
import numpy as np
import seaborn as sns
import scipy as sp
import matplotlib.pyplot as plt
from scipy.stats import linregress

g = sns.lmplot(x="X",y="Y",col="Param",data=df,sharex=False,sharey=False)

def annotate(data,**kws):
    r,p = sp.stats.pearsonr(data['X'],data['Y'])
    ax = plt.gca()
    ax.text(.05,.8,'r={:.2f}'.format(r,p),transform=ax.transAxes)
    
g.map_dataframe(annotate)
plt.show()

Plot

我想使用 scipy linregress 将 pearson r 相关性更改为 Rsquare 值,但我真的不明白它是如何处理错误“解包的值太多(预期为 4)”

g = sns.lmplot(x="X",**kws):
    slope,intercept,r,p= stats.linregress(data['X'],'r={:.2f}'.format(slope,transform=ax.transAxes)
    
g.map_dataframe(annotate)
plt.show()

有谁知道如何正确使用它?谢谢

解决方法

显然你不需要使用线性回归来找到R平方的注释值

只需将格式 r 更改为 r*r 并将小数点设置为 4 即可

import pandas as pd
import numpy as np
import seaborn as sns
import scipy as sp
import matplotlib.pyplot as plt
from scipy.stats import linregress

g = sns.lmplot(x="X",y="Y",col="Param",data=df,sharex=False,sharey=False)

def annotate(data,**kws):
    r,p = sp.stats.pearsonr(data['X'],data['Y'])
    ax = plt.gca()
    ax.text(.05,.8,'r={:.4f}'.format(r*r,p),transform=ax.transAxes) #Change this line
    
g.map_dataframe(annotate)
plt.show()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。