pandas dataframe python中的偏相关系数

2024-01-23

我在 pandas 数据框中有一个数据,例如:

df = 

    X1  X2  X3  Y
0   1   2   10  5.077
1   2   2   9   32.330
2   3   3   5   65.140
3   4   4   4   47.270
4   5   2   9   80.570

我想做多元回归分析。这里 Y 是因变量,x1、x2 和 x3 是自变量。 每个自变量与因变量之间的相关性为:

df.corr():

      X1          X2            X3         Y
X1  1.000000    0.353553    -0.409644   0.896626
X2  0.353553    1.000000    -0.951747   0.204882
X3  -0.409644   -0.951747   1.000000    -0.389641
Y   0.896626    0.204882    -0.389641   1.000000

正如我们在这里看到的,y 与 x1 具有最高的相关性,因此我选择 x1 作为第一个自变量。在这个过程中,我尝试选择与 y 具有最高部分相关性的第二个自变量。所以我的问题是在这种情况下如何找到部分相关性?

我们将非常感谢您的帮助。


两两之间的排名Y(最后一栏)和其他

如果您只是想找到之间的相关等级Y和其他人,只需做 -

corrs = df.corr().values
ranks = (df.columns[:-1][-corrs[:-1,-1].argsort()]).tolist()

样本运行 -

In [145]: df
Out[145]: 
         X1        X2        X3         Y
0  0.576562  0.481220  0.148405  0.929005
1  0.732278  0.934351  0.115578  0.379051
2  0.078430  0.575374  0.945908  0.999495
3  0.391323  0.429919  0.265165  0.837510
4  0.525265  0.331486  0.951865  0.998278

In [146]: df.corr()
Out[146]: 
          X1        X2        X3         Y
X1  1.000000  0.354387 -0.642953 -0.646551
X2  0.354387  1.000000 -0.461510 -0.885174
X3 -0.642953 -0.461510  1.000000  0.649758
Y  -0.646551 -0.885174  0.649758  1.000000

In [147]: corrs = df.corr().values

In [148]: (df.columns[:-1][-corrs[:-1,-1].argsort()]).tolist()
Out[148]: ['X3', 'X1', 'X2']

所有列之间的成对排名

如果您试图找到所有列之间的排名,我们将采用如下一种方法 -

def pairwise_corr_rank(df):
    corrs = df.corr().values
    cols = df.columns
    n = corrs.shape[0]
    r,c = np.triu_indices(n,1)
    idx = corrs[r,c].argsort()
    out = np.c_[cols[r[idx]], cols[c[idx]], corrs[r,c][idx]][::-1]
    return pd.DataFrame(out, columns=[['P1','P2','Value']])

样本运行 -

In [109]: df
Out[109]: 
   X1  X2  X3       Y
0   1   2  10   5.077
1   2   2   9  32.330
2   3   3   5  65.140
3   4   4   4  47.270
4   5   2   9  80.570

In [110]: df.corr()
Out[110]: 
          X1        X2        X3         Y
X1  1.000000  0.353553 -0.409644  0.896626
X2  0.353553  1.000000 -0.951747  0.204882
X3 -0.409644 -0.951747  1.000000 -0.389641
Y   0.896626  0.204882 -0.389641  1.000000

In [114]: pairwise_corr_rank(df)
Out[114]: 
   P1  P2     Value
0  X1   Y  0.896626
1  X1  X2  0.353553
2  X2   Y  0.204882
3  X3   Y -0.389641
4  X1  X3 -0.409644
5  X2  X3 -0.951747
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pandas dataframe python中的偏相关系数 的相关文章

随机推荐

  • gitolite hooks - 接收后似乎不起作用

    我在我的仓库中配置了 gitolite 我看到了 gitolite 文献中记录的 2 个钩子副本 我希望服务器端挂钩 post receive 在有人推送到存储库时发送电子邮件 我正在使用 git notifier 但是 当我推动时什么也没
  • 文本区域高度增加

    当我们打字时 如何将文本区域的高度从 18 像素增加到最大 50 像素 那么如果有人输入更多内容 滚动条应该接管 这可能吗 您可以使用以下任一插件 文本扩展器 演示 http blogs sitepointstatic com exampl
  • 使用git子树合并,同时也在所有合并子树的所有分支中进行合并

    我想使用一个流行的开源问题跟踪器 Redmine 它提供 git 集成 不幸的是 跟踪器中的每个项目只能与一个 git 存储库关联 在跟踪器中创建多个项目不是我的理想设置 考虑到这一点 我尝试使用 git 子树合并 解释为here http
  • 如何通过 Google 图表 API 使用 X 轴日期?

    有没有办法使用 Google 图表 API 绘制图表 以便 X 轴值是一个月中的天数 我的数据点没有以相同的频率提供 例如 Date Value 1 1 2009 100 1 5 2009 150 1 6 2009 165 1 13 200
  • 如何获得实时期权链?

    如何获取实时期权链 每分钟或如果可能的话 每秒 另外 我想每次刷新包含此数据 从Python导出 的excel 以便可以刷新图表 我编写了下面的代码来获取日终数据 spot market inputs s ticker ITC start
  • 边距和负边距

    我一直以为我理解边距和负边距 但显然我不明白 我刚刚开始新的设计 但已经遇到了问题 我有一个 div hill3Cont 和另一个 div hill3Hill 嵌套在里面 这是它们的 CSS hill3Cont width 100 back
  • 在android上添加OnLongClickListener支持TabLayout | TabLayout.Tab

    我正在使用服务库中找到的 TabLayout 我尝试在长按选项卡时添加 OnLongClickListener 这对我来说是不可能的 我什至尝试使用 childViews 来 破解 它 View tabLayoutChild tabLayo
  • 自定义 TF 对象检测边界框厚度和标签字体大小

    运行预测https github com tensorflow models blob master research object detection object detection tutorial ipynb https githu
  • 如何在VSCode中设置“终止正在运行的任务”的键盘快捷键?

    我让我的构建运行我的应用程序 直到我杀死它 这工作正常 但最好将 终止正在运行的任务 绑定到键盘快捷键 这可能吗 当您要更改键绑定时 会列出所有命令 因此您可以将如下内容添加到用户设置中 key shift cmd s command wo
  • 自动拉伸表格单元格 div css

    我知道有很多类似的问题 但没有一个能帮助我解决这个问题 我有非常简单的设置 wrapper width 100 display table dontBreakmyLine display table cell iCanUseWhatIsLe
  • HTTP基本认证,使用python

    我希望我的用户访问我的域上的受保护目录 htaccess 和 htpasswd 均已创建并驻留在受保护的库中 要求输入用户名 密码组合的 html 是
  • 如何在工作组安装上以编程方式清除 MSMQ 系统队列日志?

    我试试这个 MessageQueue mq new MessageQueue Journal mq Purge 它在 XP 上运行良好 但是 在Windows 2003服务器上 我总是遇到这个错误 工作组安装计算机不支持该操作 系统队列的正
  • 从字符串中提取主机名

    我想只匹配 URL 的根 而不是文本字符串中的整个 URL 鉴于 http www youtube com watch v ClkQA2Lb iE http youtu be ClkQA2Lb iE http www example com
  • 如何在 Spring 中使用自动装配 bean 创建简单工厂模式?

    我有一个具有 4 个非常相似的方法的控制器 调用远程服务器上的 API 对不同类型的用户执行不同的操作 这些 API 调用之间发生的变化只是端点和一些参数 因此 这 4 个方法都使用非常相似的代码调用服务 它们从服务器获取令牌 设置参数 返
  • 使用 Perlbrew 安装 perl-5.20.1。 perl5db.t 中的测试失败

    我正在尝试使用 Perlbrew 安装 Perl v5 20 1 但由于脚本中的测试失败而失败perl5db t 我使用的是 64 位架构 x86 64 的 Ubuntu 14 04 Running perlbrew install per
  • ShinyDashboard - 使用 CSS 缩放整个浏览器

    我正在尝试实施zoom on my ShinyDashboard因为当 Web 浏览器缩放 80 时 布局看起来更好 我找到了一篇关于 SO 的文章Shiny但是 它不适用于Shinydashboard 当我实现 CSS 时 我得到了很多死
  • 使用 Flutter/dart 进行 NTLM 身份验证

    Backstory 我正在尝试连接到使用 NTLM 身份验证的网站 我已经面临很多与此相关的问题 但我坚持不懈 我想成功 我正在使用 Flutter 我尝试在 dart 中搜索任何支持 NTLM NTLM 2 身份验证的 http 客户端
  • VueJs - 在查询字符串中传递查询作为道具

    我在从组件内获取 URL 查询字符串时遇到问题 我正在尝试实现这个https router vuejs org guide essentials passing props html function mode https router v
  • 如何在日期中添加一天? [复制]

    这个问题在这里已经有答案了 我想在特定日期中添加一天 我怎样才能做到这一点 Date dt new Date 现在我想在这个日期上添加一天 Given a Date dt你有几种可能性 解决方案一 您可以使用Calendar类 Date d
  • pandas dataframe python中的偏相关系数

    我在 pandas 数据框中有一个数据 例如 df X1 X2 X3 Y 0 1 2 10 5 077 1 2 2 9 32 330 2 3 3 5 65 140 3 4 4 4 47 270 4 5 2 9 80 570 我想做多元回归分