[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Different result between Octave and GSL (Gnu Scientific Library) C f
From: |
Markus Mützel |
Subject: |
Re: Different result between Octave and GSL (Gnu Scientific Library) C function call |
Date: |
Fri, 1 Jan 2021 11:23:02 +0100 |
Am 01. Januar 2021 um 07:24 Uhr schrieb "Tallis Huther da Costa":
> >> gsl_stats_wvariance_test_c
> Hello World has 0 input arguments and 0 output arguments.
> n: 11
> ans = 1.7643
>
> As you can see, the answer is 1.7643.
>
> Now, from the function's documentation:
>
> So, I wrote this little Octave script to confirm that the call was correct:
> data = [0 2 2 3 1 5 2.5 7 3 3.9 1.1];
> _mean = mean (data);
> stride = 1;
> w = [2 20 1.8 3 4 5.4 4.5 1.2 30 1.9 10.1];
> wstride = 1;
> n = numel (data);
> expected = (sum (w) / ((sum (w))^2 - sum (w .^ 2))) * sum (w .* ((data -
> _mean) .^ 2));
>
> The result was:
> expected = 1.8427
Looking at the definition of the weighted variance as used by gsl, the
*weighted* mean has to be used in its calculation.
Correcting for that gives the same result in Octave as the one you observed
when using the gsl function:
data = [0 2 2 3 1 5 2.5 7 3 3.9 1.1];
w = [2 20 1.8 3 4 5.4 4.5 1.2 30 1.9 10.1];
weighted_mean = sum (w .* data) / sum (w);
expected = ((sum (w) / ((sum (w))^2 - sum (w .^ 2))) * sum (w .* ((data -
weighted_mean) .^ 2));
>> expected
expected = 1.7643
HTH,
Markus