2013-08-08 10 views
7

Mam wektor aJak obliczyć wariancje próbki i populacji w programie Matlab?

a = [86 100 41 93 75 61 76 92 88 97] 

I chcę, aby obliczyć std i mean przez sobie:

>> mean(a) 

ans = 

    80.9000 

>> std(a)^2 

ans = 

    335.2111 

Ale kiedy robię to tak, że mam złą wariancji:

>> avg = mean(a) 

avg = 

    80.9000 

>> var = sum(a.^2)/length(a) - avg^2 

var = 

    301.6900 

Czego tu brakuje?

dlaczego sum(a.^2)/length(a) - avg^2 != std(a)^2?

Odpowiedz

8

Spróbuj tego:

var = sum(a.^2)/(length(a)-1) - (length(a))*mean(a)^2/(length(a)-1) 


var = 

    335.2111 

var jest obliczana jako (bezstronnych) próby, nie wariancji populacji.

Aby uzyskać pełne wyjaśnienie, można przeczytać here.

Z dokumentacji MATLAB

VAR normalizuje Y N-1, gdzie N jest wielkość próbki. Jest to nieobciążony estymator wariancji populacji, z którego X jest wyciągana , o ile X składa się z niezależnych, identycznie rozmieszczonych próbek o numerach .

ale

Y = var (X 1) normalizuje przez N i wytwarza się drugi moment próbki o jej średniej. VAR (X, 0) jest taki sam jak VAR (X).

tak że

>> var(a,1) 

ans = 

    301.6900 
2

Obiektywna wariancji próbki jest dana przez:

>> 1/(length(a)-1) * sum((a-mean(a)).^2) 

ans = 

    335.2111 

enter image description here

Powiązane problemy