Pythonは豊富な科学技術計算ライブラリが含まれています。その中の一つに相関係数を計算するものがあったので使ってみました。驚いたのは、処理が早いこと早いこと。10000組2変数の相関係数を一瞬で出してくれました。
numpyモジュールの中のcorrcoefという関数を使います。
最初の数行はコマンドライン引数を取得するためのもの。
#!/usr/bin/python # coding: utf-8 from numpy import corrcoef import sys import os if len(sys.argv) >= 2: # arguments setup i = 1 infile="" # input file bout=1 # boolean type flag to normal output while i <= (len(sys.argv)-1): if sys.argv[i] == '-in': infile=sys.argv[i+1] i += 1 elif sys.argv[i] == '-noprint': bout=0 i += 1 if infile != "": if not(os.path.exists(infile)): print "NOT FOUND: " + infile exit() else: # file exists if bout: print "Start: "+infile # file handler f = open(infile, 'r') # array initialize v1 = [] v2 = [] line = f.readline() while line: # read line one by one col = line.split() # split blank if len(col) != 2: print "line: " + line + "was error" exit() v1.append(col[0]) v2.append(col[1]) line = f.readline() # next while corr = corrcoef(v1, v2) # correlation module print corr[0][1] exit() # if arguments was failed print "-in: input file"
こんな風に2列になっているのを想定。
121.697 19.660 120.964 27.325 109.400 38.971 113.572 16.536 113.968 29.440 128.167 31.111 117.185 37.318 115.050 13.589 110.175 24.190
こんな風に使います。
python corr.py -in [filename] -noprint
無駄にこだわって書きすぎて、冗長な部分もありますが。もう少し統計の勉強をしなくては。