【问题标题】:Pearson Correlation between two columns两列之间的 Pearson 相关性
【发布时间】:2016-07-19 13:10:22
【问题描述】:

早上好。这是我的问题: 我有几个文件,如下所示:

104 0.1697 12.3513214 15.9136214
112 -0.3146 12.0517303 14.8027303
122 0.2718 10.881109 13.259109
123 -0.4185 11.2880142 14.0237142
128 0.0205 13.0585763 15.4365763
132 0.1562 13.3956582 16.9579582
136 -0.4602 12.2567041 14.6347041
157 0.8142 13.6455927 17.2078927
158 -0.9244 8.0012967 11.5635967

大约 10000 个文件,每个文件有几行。 我需要在每个文件的第 2 列和第 4 列之间建立 Pearson 相关性。稍后,我需要对这些相关性进行平均。我想用 Linux 命令来做所有事情。任何人都可以帮助我吗? 谢谢

【问题讨论】:

标签: linux shell pearson-correlation


【解决方案1】:

如果您安装了 GNU datamash:

datamash -W ppearson 2:4 < file.txt # or specify delimiter using -t

例子:

datamash -W ppearson 1:2 << EOF
1 1
2 4
3 3
EOF
0.65465367070798

【讨论】:

  • 总的来说,我可以推荐 datamash,如果你只是想从命令行快速测量一些数据,它就不需要启动 R 或 Python。
【解决方案2】:

试试这个脚本。您将需要 bash 和 bc (对浮点数进行操作)。

  • 授予执行它的权限chmod +x /path/to/pearson.sh
  • 将 FILES 更改为存储所有文件的目录
  • 调用不带参数的脚本bash /path/to/pearson.sh

它应该生成根据这些文件中的数据计算的所有 Pearson 相关系数的平均值。

#! /bin/bash

FILES=/path/to/files/

function add {
  echo $1 + $2 | bc
}
function sub {
  echo $1 - $2 | bc
}
function mult {
  echo $1*$2 | bc
}
function div {
  echo $1 / $2 | bc -l
}
function sqrt {
  echo "sqrt ($1)" | bc -l
}

X=0
X2=0
Y=0
Y2=0
XY=0

r=0
R=0
N=0

for f in $FILES/*; do
  N=$((N+1))
  n=0
  while read l; do
    n=$((n+1))
    read -r -a rows <<< $l
    x=${rows[1]}
    y=${rows[3]}
    X=$(add $X $x)
    X2=$(add $X2 $(mult $x $x))
    Y=$(add $Y $y)
    Y2=$(add $Y2 $(mult $y $y))
    XY=$(add $XY $(mult $x $y))
  done < $f;
  r=$(add $r $XY)
  r=$(sub $r $(div $(mult $X $Y) $n))
  d1=$(sub $X2 $(div $(mult $X $X) $n))
  d2=$(sub $Y2 $(div $(mult $Y $Y) $n))
  r=$(div $r $(sqrt $(mult $d1 $d2)))
  R=$(add $R $r)
  X=0
  X2=0
  Y=0
  Y2=0
  XY=0
  r=0
  n=0
done

echo Mean=$(div $R $N)

Ps:我假设所有文件的格式都与您提供的格式相同。评估系数的公式取自您提供的link

【讨论】:

  • 谢谢,成功了.. =),感谢您的帮助和支持
猜你喜欢
  • 1970-01-01
  • 2021-08-26
  • 2014-08-16
  • 2019-04-23
  • 1970-01-01
  • 1970-01-01
  • 2020-02-06
  • 2021-11-09
  • 1970-01-01
相关资源
最近更新 更多