Saya terkejut menemukan bahwa Matlab mengembalikan untuk varian sampel input skalar:
>> 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
Entah bagaimana, varians sampel tidak membaginya dengan dalam kasus ini. R mengembalikan NaN untuk skalar:
> var(rnorm(1,1))
[1] NA
Menurut Anda apa cara yang masuk akal untuk mendefinisikan varians sampel populasi untuk skalar? Apa konsekuensi yang mungkin terjadi untuk mengembalikan nol daripada NaN?
edit : dari bantuan untuk 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).
komentar samar dalam kode m untuk `var state:
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
yaitu mereka secara eksplisit memilih untuk tidak mengembalikan NaN
bahkan ketika pengguna meminta varians sampel pada skalar. Pertanyaan saya adalah mengapa mereka harus memilih untuk melakukan ini, bukan bagaimana.
sunting : Saya melihat bahwa saya telah secara keliru bertanya tentang bagaimana seseorang harus mendefinisikan varians populasi skalar (lihat garis pemogokan di atas). Ini mungkin menyebabkan banyak kebingungan.
var()
.
var(randn(1),0)
varians dengan 0 dan karenanya outputnya adalah 0. Elemen kedua digunakan untuk melakukan rata-rata tertimbang jika berbeda dari 1. Lihat: Mathworks help forvar