

Is there a particular reason that octave (and matlab) has var(1) = 0? I must have missed that during my math classes.
M.


> Is there a particular reason that octave (and matlab) has var(1) = 0?
It is correct, the variance of a single sample is zero and not only in
matlab and octave... :) you do not only get the same if you take var(2)
= var(5) = var(c) = 0, where is c a constant, etc, but also if you take
a time series with constant values, for instance, var(ones(1,10)) = 0...
Cheers, Ismael.
_______________________________________________
Helpoctave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/helpoctave


var(1) = 0 is at least in conflict with the standard definition of the unbiased estimate, where the sum of squared deviations is scaled by n1 (n sample size).
But common sense has it that a sample of size 1 simply has *no* variance, so the result is basically a convention; it just hurts my math feelings to see var(1) = 0.
M.


On 27 Jan 2012, at 22:40, Muhali wrote:
> var(1) = 0 is at least in conflict with the standard definition of the
> unbiased estimate, where the sum of squared deviations is scaled by n1 (n
> sample size).
but if all elements in the sample are equal, e.g.:
>> n = 100;
>> samp = ones (1, n);
then the mean value has that same value
>> mean (samp)
ans = 1
therefore all the squred deviations are 0:
>> mu = mean (samp);
>> any ((samp  mu).^2)
ans = 0
and the "standard definition of the unbiased estimate" still returns 0:
>> sum ((samp  mu).^2) / (n  1)
ans = 0
why would you expect a different result?
c.
_______________________________________________
Helpoctave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/helpoctave


> why would you expect a different result?
this is where it is getting philosophical, or Bayesian, if you want. If you pick one number out of an unknown population, we just don't know whether there is variance in the population or not. There is no best estimate for the variance; 0 is just as good as any other. So I would very much prefer a result of NaN, but it is mostly convention as I said.
At least the help text, which has (n1) in the denominator, should be adjusted accordingly.
M.


Hello.
Indeed, this is an interesting observation. I have checked this in several softwares.
Scilab and R reported an error or NA message with var(c) and FreeMat reported ans = 0. Python (scipy) also reported 0 as answer.
Cheers.
On Fri, Jan 27, 2012 at 19:35, Muhali <[hidden email]> wrote:
> why would you expect a different result?
this is where it is getting philosophical, or Bayesian, if you want. If you
pick one number out of an unknown population, we just don't know whether
there is variance in the population or not. There is no best estimate for
the variance; 0 is just as good as any other. So I would very much prefer a
result of NaN, but it is mostly convention as I said.
At least the help text, which has (n1) in the denominator, should be
adjusted accordingly.
M.

View this message in context: http://octave.1599824.n4.nabble.com/var10tp4334677p4335089.html
Sent from the Octave  General mailing list archive at Nabble.com.
 «But Gwindor answered: 'The doom lies in yourself, not in your name.'»
JRR Tolkien
_______________________________________________
Helpoctave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/helpoctave


According to the manual it is possible to choose whether the denominator in the calculation of the variance is N1 (for an unbiased estimate of some sample) or N (for the variance of some complete population) by setting a second parameter in the function to "0" or "1", respectively, with 0 as default (hence with N1 as the default denominator). The behaviour of the function is not as expected from the manual for vector arguments of size one.
The following is as expected from the manual:
>> a = [1 2 3]
a =
1 2 3
>> var(a)
ans = 1
>> var(a, 0)
ans = 1
>> var(a, 1)
ans = 0.66667
>>
Unless I have misunderstood the manual, the last line of the following is unexpected
>> b = [2]
b = 2
>> var(b)
ans = 0
>> var(b, 0)
ans = 0
>> var(b, 1)
ans = 0
I would have expected an error message rather than the last result. Presumably, the function has been coded to return the same value as that returned by Matlab. As noted above, it might be sensible if this were acknowledged in the manual.
However good you think Octave is, it's much, much better.


On 28 Jan 2012, at 01:05, Muhali wrote:
I think this behaviour is matlab compatible so it should not be changed,
> At least the help text, which has (n1) in the denominator, should be
> adjusted accordingly.
I just pushed this changeset, does it look OK to you?
c.
_______________________________________________
Helpoctave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/helpoctave


This post was updated on .
Apologies for asking here (I'm still relatively naive in the support rather than the use of open source). I would be grateful for a link to the changeset or a link to instructions for registering (if necessary) so that I could see it. Thanks in advance.
However good you think Octave is, it's much, much better.


On 28 Jan 2012, at 15:15, pathematica wrote:
> Apologies for asking here (I'm still relatively naive in the support rather
> than use of open source).
No need to apologize, that was just me who forgot to attach the link.
> I would be grateful for a link to the changeset
here it is:
http://hg.savannah.gnu.org/hgweb/octave/rev/bedccd0abe39> or
> a link to instructions for registering (if necessary) so that I could see
> it. Thanks in advance.
There is no need to register to browse the sources.
c.
_______________________________________________
Helpoctave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/helpoctave


Thanks for the link and the proposed change looks good to me
However good you think Octave is, it's much, much better.


This post was updated on .
After a little reflection, I note that the proposed inclusion reads well (alerting to behaviour based on the number of elements in the set passed to it) but, whilst the description of the change is true ("behaviour when input is a scalar"), it is not comprehensive. For example, the dialogue at the terminal shown above demonstrates "behaviour when input is a vector of order one" as well as behaviour when it is a scalar.
However good you think Octave is, it's much, much better.


On 28 Jan 2012, at 17:11, pathematica wrote:
> After a little reflection, I note that the proposed inclusion reads well
> (alerting to behaviour based on the number of elements in the set passed to
> it) but, whilst the description of the change is true ("behaviour when input
> is a scalar"), it is not comprehensive. For example, the dialogue at the
> terminal shown above demonstrates "behaviour when input is a vector of order
> one" as well behaviour when it is a scalar.
the correct description would have been "behaviour when the function is applied along a singleton dimension of an array".
but the description of the change is just a mnemonic message of use to developers only, users will probably never even see it,
so what's really important is the function docstring.
_______________________________________________
Helpoctave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/helpoctave


On 28 January 2012 11:11, pathematica < [hidden email]> wrote:
> After a little reflection, I note that the proposed inclusion reads well
> (alerting to behaviour based on the number of elements in the set passed to
> it) but, whilst the description of the change is true ("behaviour when input
> is a scalar"), it is not comprehensive. For example, the dialogue at the
> terminal shown above demonstrates "behaviour when input is a vector of order
> one" as well behaviour when it is a scalar.
As far as the Octave interpreter is concerned, there is no difference
between scalars and vectors. You can use typeinfo to get the
"internal" type that Octave is using to represent a variable, but this
is mostly a debugging tool.
 Jordi G. H.
_______________________________________________
Helpoctave mailing list
[hidden email]
https://mailman.cae.wisc.edu/listinfo/helpoctave

