以下のようにランダムにXとYを設定し、2つの相関を取ります。ここで相関係数が0になるようにして値を取り出すことはできるのでしょうか??
最終的にランダムに取り出して相関係数が0になるようにしたいです。
python3
1# -*- coding: utf-8 -*- 2 3import matplotlib.pyplot as plt 4from numpy import * 5import pandas as pd 6from scipy import signal 7 8X=random.randint(0,255,900) 9Y=random.randint(0,255,900) 10 11corr=corrcoef(X,Y) 12a=corr[0,1] 13print(a) 14 15#print(intensity1) 16 17plt.plot(X,Y,"x") 18plt.title("Correlation coefficient:%s"%a) 19plt.show()
ぴったり「0」でなければだめ ということでしょうか?
そうです。ぴったり0になるように調整したいです
確率変数 X, Y が独立な分布に従うならば、X, Y の相関係数は理論上0です。
サンプル数 N を ∞ に大きくすることで標本相関係数は0になります。
なので、今900となっているサンプル数を10万とかもっと大きくしていくことで相関係数は0に近づいていくはずです。(コンピューターで N → ∞ はできないので、厳密に0になることはありません。)
tiitoi さんの仰る通り、理論上0ということで良いのではと思います。
「計算結果を0.0000にする」ということを目的をして場合、奇跡的に出力値が 0.000000…000 となったとしても、それに数値精度や計算誤差が含まれており、実際は 0.000000…000…00143 みたいな数値になっている可能性もでてきます。
PCAで無相関化する手はあるけど実数になっちゃいますね。相関係数だけ0になればいいっていうなら適当に値をいじって実現できるのかもしれませんが、厳密なことを言うと分布が変わるでしょう。
すでに議論がありますが「出来るのでしょうか?」については現実的に不可能
大量に乱数の組を発生させて偶然ピッタリ相関係数が0になることはありえなくはないですが件数に
よっては無理でしょう。
もし、乱数ならば相関係数は0でなければならない、と考えてらっしゃるのでしたら誤解されているのだと思います。
あなたの回答
tips
プレビュー