共分散の求め方

조회 수: 24 (최근 30일)
wataru suzuki
wataru suzuki 2021년 1월 4일
댓글: Hiroyuki Hishida 2021년 1월 5일
ある値の共分散を求めたいので下記URLのサイトを参考に添付した画像のような
式を行いたいです。
参考URL:https://mathtrain.jp/covariance
そのためプログラムを書いたのですが参考サイトのようにいきません。サイトのように行うにはどうすればいいのか教えてください。
%プログラム
A=[50 50 80 70 90];
B=[50 70 60 90 100];
DDD=cov(A,B);
%出力結果
DDD =
320 235
235 430
  댓글 수: 1
Hiroyuki Hishida
Hiroyuki Hishida 2021년 1월 5일
Suzukiさん、
covは共分散を計算するとありますが、正しくは共分散行列を計算します。共分散行列とは共分散の概念を拡張したものでして、参照されていらっしゃるサイトにもその記載はございます。大学の統計学では分散共分散行列という行列が活躍します。→分散共分散行列の定義と性質
さて、MATALBで実現する方法は2通りございます。1つは、参照されているサイトの通りに記述する方法です。サンプルを書いてみましたので、確認してみてください。
%別解で記述する方法
ua = mean(A)
ub = mean(B)
exy = sum(A.*B)/numel(A)
Covxy2 = exy-ua*ub
%そのまま記述する方法
Covxy=sum((ua-A).*(ub-B))/numel(A)
もう1つは、共分散行列から意中のものを導出する方法です。共分散行列の各成分の定義については、共分散についての詳細を確認ください。(X,Y)成分が以下で定義されていますをみると以下のようにあり、ほぼ、参照されているサイトの通りです。
違いといえば、Nで割り算しないで、N-1で割り算していることですので、cov(A,B)で得た行列の(1, 2)成分もしくは(2, 1)成分について、N-1を乗じてNで除算すれば良いことになります。
%関数を利用する方法
DDD=cov(A,B)
DDD(1,2)*(numel(A)-1)/numel(A)
いかがでしょうか?
菱田

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 数値と精度에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!