Matlabがスカラー入力の標本分散に対してを返すことを最近知り、私は恐怖に思いました。
>> var(randn(1),0) %the '0' here tells var to give sample variance
ans =
0
>> var(randn(1),1) %the '1' here tells var to give population variance
ans =
0
どういうわけか、この場合、サンプル分散はで除算されていません。RはスカラーのNaNを返します。
> var(rnorm(1,1))
[1] NA
スカラーの母集団標本分散を定義する賢明な方法は何だと思いますか?NaNの代わりにゼロを返すと、どのような影響がありますか?
編集:Matlabのヘルプからvar
:
VAR normalizes Y by N-1 if N>1, where N is the sample size. This is
an unbiased estimator of the variance of the population from which X is
drawn, as long as X consists of independent, identically distributed
samples. For N=1, Y is normalized by N.
Y = VAR(X,1) normalizes by N and produces the second moment of the
sample about its mean. VAR(X,0) is the same as VAR(X).
`var状態のためのmコードの不可解なコメント:
if w == 0 && n > 1
% The unbiased estimator: divide by (n-1). Can't do this
% when n == 0 or 1.
denom = n - 1;
else
% The biased estimator: divide by n.
denom = n; % n==0 => return NaNs, n==1 => return zeros
end
つまりNaN
、ユーザーがスカラーの標本分散を要求した場合でも、イベントを返さないよう明示的に選択します。私の質問は、なぜ彼らがこれを行うのを選ぶべきなのかではなく、なぜそうすべきなのかです。
編集:私は、スカラーの母分散をどのように定義すべきかについて誤って尋ねたようです(上記の取り消し線を参照)。これはおそらく多くの混乱を引き起こしました。
var()
。
var(randn(1),0)
重み0によって分散ひいては出力が2番目の要素は、それが1を見ると異なる場合、加重平均を行うために使用される0である。Mathworks社の助けをvar