共分散の求め方

12 次查看(过去 30 天)
wataru suzuki
wataru suzuki 2021-1-4
ある値の共分散を求めたいので下記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 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!