-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Jaroslav Hajek wrote: > On Fri, Mar 6, 2009 at 8:09 AM, Alois Schlögl <alois.schlo...@tugraz.at> > wrote: >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> Jaroslav Hajek wrote: >>> On Thu, Mar 5, 2009 at 4:04 PM, Alois Schlögl <alois.schlo...@tugraz.at> >>> wrote: >>>> -----BEGIN PGP SIGNED MESSAGE----- >>>> Hash: SHA1 >>>> >>>> Jaroslav Hajek wrote: >>>>> On Thu, Mar 5, 2009 at 12:02 PM, Alois Schlögl <alois.schlo...@tugraz.at> >>>>> wrote: >>>>>> -----BEGIN PGP SIGNED MESSAGE----- >>>>>> Hash: SHA1 >>>>>> >>>>>> Jaroslav Hajek wrote: >>>>>>>> sumskipnan counts also the number of non-NaNs. >>>>>>>> [s,c]=sumskipnan(...) >>>>>>>> >>>>>>>> computing both s and c in a single step is beneficial for estimating >>>>>>>> mean, variance and other statistics. >>>>>>>> >>>>>>> well, you can do >>>>>>> >>>>>>> nans = isnan (x); >>>>>>> x(nans) = 0; >>>>>>> s = sum (x, dim); >>>>>>> c = size (x, dim) - sum (nans); >>>>>>> >>>>>>> Not exactly as fast as doing it all in a single loop, but simplistic. >>>>>> I guess, you meant >>>>>> c = size (x, dim) - sum (nans,dim); >>>>>> >>>>>> In terms of simplicity, >>>>>> [s,c]=sumskipnan(x,dim); >>>>>> will win. >>>>>> >>>>> Depends on what you count in. I wrote the first from top of my head, >>>>> whereas for the second I'd need to look up the syntax. But I don't >>>>> have any fundamental objections against the existence of sumskipnan, >>>>> of course. >>>> Fine. >>>> >>>>>>>>> Besides, I think the fact that the NaN package shadows Octave's >>>>>>>>> built-in functions is very dangerous and confusing, even though I >>>>>>>>> understand the motivation. I think this package should not be >>>>>>>>> installed by default. >>>>>>>> Where do you see a danger ? Please explain. >>>>>>>> >>>>>>> It seems that sometimes users (especially windows users) get this >>>>>>> package unknowingly loaded. Not that this is your fault, just that it >>>>>>> probably shouldn't be on by default in distributions. >>>>>>> >>>>>>> The more painful issue is that it makes the package less attractive to >>>>>>> use - for instance, if I want to use the nanmean function to get >>>>>>> nan-free mean, but I *don't* want the built-in mean to be shadowed >>>>>>> (because the replacement is slower). >>>>>> Therefore, it would be nice to have a pre-compiled sumskipnan that >>>>>> limits the performance hit. And their is certainly room for further >>>>>> improvement. >>>>> I don't want to limit it. I just don't want it to be there. I would >>>>> like to be able to use *both* nanmean and the default mean at the same >>>>> time. >>>> And there are many others, like me for example, that do not want to >>>> think about, whether nanmean or mean is the proper function for a >>>> specific problem. >>>> >>>> In case there are no NaN's, both yield the same result. >>>> In the presence of NaN's, the default mean results in NaN, while a >>>> perfectly valid result could be obtained. >>>> >>>> Or can You think of any reasonable problem, when mean should propagate >>>> the NaN's ? I can not. Consequently, there is no need to have both >>>> nanmean and mean. >>>> >>> Just like Soren said, in most cases where NaN does not represent a >>> missing value. >> >> It statistics nobody is asking what the meaning of the NaN is. Ignoring >> NaN is just the right thing to do. >> >> Again, I'm just talking about statistical functions, and do not >> generalize this to other areas. >> > > That's OK. But I may want to use both "statistical" mean and > "non-statistical" in totally different areas of a single computation.
Do you really have a case where you want the mean estimation to behave differently than the statistical mean ? That is, were NaN's should be propagated ? I'm asking because in 15+ years of using Matlab and Octave, I've never found such a case. Maybe I can learn something new. Even in case, NaN propagation is desired, I guess I'd prefer to have an explicit check for NaN's in order to emphasize that special case and make the code more readable. Again, I've never come across a case were I needed the mean to propagate NaN's. > But the different NaN treatment is not actually that bad, I doubt > anyone would notice (the performance hit may be noticeable, but it is > also unlikely). I'm aware that the performance hit might be a disadvantage in using the NaN-toolbox (although the benchmark tests have not been widely applied). I guess its the major obstacle for a more widely application. On the other hand, you gain in terms of programming effort: (i) software is doing more often the right thing, (ii) its less likely to fail due to NaN-related issues. (iii) its more likely that users unaware of the NaN-issue get it right in the first place, (iv) no need to think about whether nanmean or mean is the right function; (v) of course using always nanmean() would also do, but its nicer to write only mean(); In my experience, these advantages outweigh the small performance penalty. These are also the reasons, why it was developed. Except for compatibility tests, I've never found a need to turn off the NaN-toolbox. > The main problem was that until your latest fix, the mean from NaN > package shadowed an Octave's function without actually providing all > of its functionality (complex numbers & single precision numbers), and > that's certainly something a package should avoid. I agree. > > regards > -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkmw3ecACgkQzSlbmAlvEIi7lQCeMzzR/1KWoX2mBTw0RxmhyIcL mOYAmwQY/vvsQyKFvKjzN9OKCRARZQjb =6era -----END PGP SIGNATURE----- ------------------------------------------------------------------------------ Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ Octave-dev mailing list Octave-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/octave-dev