nancov
(非推奨) NaN 値を無視した共分散
関数 nancov は推奨されません。代わりに、MATLAB® 関数 cov を使用してください。関数 cov では、計算に NaN 値を含めるか省略するかを指定できます。詳細は、バージョン履歴を参照してください。
構文
Y = nancov(X)
Y = nancov(X1,X2)
Y = nancov(...,1)
Y = nancov(...,'pairwise')
説明
Y = nancov(X) は、NaN 値をもつ観測値を削除して計算された、X の共分散 cov です。
ベクトル x の場合、NaN の値を削除した後は、nancov(x) が残りの要素の標本分散になります。行列 X の場合、NaN 値を含む観測値 (行) を削除した後は、nancov(X) が残りの観測の標本分散になります。
Y = nancov(X1,X2) は、X1 と X2 が要素数の同じ行列の場合、nancov(X) と等価です。ここでは X = [X1(:) X2(:)] です。
nancov は、Y を計算する前に、各変数 (行列 X の列) から平均値を削除します。NaN 値が含まれている観測値を削除した後で残った観測値の個数が n である場合、nancov は n > 1 の場合は n - 1 で、n = 1 の場合は n で Y を正規化します。n による正規化を指定するには、Y = nancov(...,1) を使用します。
Y = nancov(...,'pairwise') は、列 i または j に NaN 値を含まない行を使用して Y(i,j) を計算します。結果 Y は、正定値行列にはならない可能性があります。
例
乱数の欠損値を含む 2 つの変数 (列) の乱数データを生成します。
X = rand(10,2);
p = randperm(numel(X));
X(p(1:5)) = NaN
X =
0.8147 0.1576
NaN NaN
0.1270 0.9572
0.9134 NaN
0.6324 NaN
0.0975 0.1419
0.2785 0.4218
0.5469 0.9157
0.9575 0.7922
0.9649 NaN3 番目の変数と他の 2 つの変数間に相関を確立します。
X(:,3) = sum(X,2)
X =
0.8147 0.1576 0.9723
NaN NaN NaN
0.1270 0.9572 1.0842
0.9134 NaN NaN
0.6324 NaN NaN
0.0975 0.1419 0.2394
0.2785 0.4218 0.7003
0.5469 0.9157 1.4626
0.9575 0.7922 1.7497
0.9649 NaN NaNNaN 値のある観測 (行) を削除した後、3 つの変数の相関行列を計算します。
Y = nancov(X)
Y =
0.1311 0.0096 0.1407
0.0096 0.1388 0.1483
0.1407 0.1483 0.2890