Gần đây tôi rất kinh ngạc khi thấy Matlab trả về cho phương sai mẫu của đầu vào vô hướng:
>> 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
Bằng cách nào đó, phương sai mẫu không được chia cho trong trường hợp này. R trả về NaN cho vô hướng:
> var(rnorm(1,1))
[1] NA
Bạn nghĩ gì là một cách hợp lý để xác định phương sai mẫu dân số cho một vô hướng? Những hậu quả nào có thể xảy ra khi trả về số 0 thay vì NaN?
chỉnh sửa : từ trợ giúp cho Matlab's 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).
một nhận xét khó hiểu trong mã m cho các trạng thái `var:
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
tức là họ rõ ràng chọn không trả về NaN
ngay cả khi người dùng yêu cầu phương sai mẫu trên vô hướng. Câu hỏi của tôi là tại sao họ nên chọn làm điều này, không phải làm thế nào.
chỉnh sửa : Tôi thấy rằng tôi đã hỏi sai về cách người ta nên xác định phương sai dân số của một vô hướng (xem đình công qua dòng trên). Điều này có lẽ gây ra nhiều nhầm lẫn.
var()
.
var(randn(1),0)
trọng số của phương sai bằng 0 và do đó đầu ra là 0. Phần tử thứ hai được sử dụng để làm trung bình có trọng số nếu nó khác với 1. Xem: Mathworks trợ giúp chovar