Happy New Year,
I spent the last few days of my holiday looking extracting the element-wise math functions out of CLS, with mixed success. I did manage to remove the compound data object code. It seems that xlisp stat never really implemented compound data as xlisp objects, so it was easy to remove them.
The four basic arithmetic operators are all working, as well as a few other functions, but all the rest are broken. For some reason, trying to use make-rv-function on something like sqrt produces a recursive error. I’ve been banging my head on this for 4 days now, but no success, though I think it must be close. My guess is that it is somewhere in the map-element* functions.
Question for those of you with a working common lisp stat: do functions other than the basic ones work for you? Can you do (sqrt ‘(1 2 3)) successfully?
This stuff takes a lot of time to understand. Can any of you common lisp stat gurus tell me what I’ve done wrong? I’ve put what I’ve got up on github at https://github.com/senor-hadoop/clsm, which isolates the code to just the element-wise math functions, as well as cleans up and organises some of the files.
All the best in the new year,
Regards,
- SteveN
.
5 January 2015 12:25 pm
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
LS-USER> (sqrt '(1 2 3)) (1.0 1.4142135623730951 1.7320508075688772) likewise (+ 1 '(4 5 6)) (5 6 7) and LS-USER> (^ 2 '(2 4 6)) (4 16 64) so prima facie these things work. I would however expect its very sensitive to correct interning of symbols and other such mysteries. What exactly is the error you are getting?
5 January 2015 12:25 pm
Happy New Year,
--
Yes, quicklisp should work and then you can step through the files in the examples or the top level xlispstat old example which should work.
Start of (school) year has kept me busy but I have a few commits for rho , CLS. Good news in that someone is fixing cl-random to have a platform independent reproducible RNG, though that part is not quite done and the while package brings in a huge load of others....
And I will take a look at your stuff Steve tomorrow.
<compose-unknown-contact.jpg>
7 January 2015 8:21 pm
7 January 2015 6:40 pm
7 January 2015 6:34 pm
Hi Tony,
Thanks. Any luck? I’m going be using the math stuff at the end of Jan and, if it can run on CCL/MacOS, would prefer to do it on lisp stat than R.
David, what platform were your test run?
Regards,- Steve
From: "A.J. Rossini" <blind...@gmail.com>
Reply-To: "lisp...@googlegroups.com" <lisp...@googlegroups.com>
Date: Sunday, 4 January 2015 22:21
To: lisp-stat <lisp...@googlegroups.com>
Subject: Re: [lisp-stat] Element-wise Math in CL, part 2
And I will take a look at your stuff Steve tomorrow.
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
5 January 2015 7:21 pm
And I will take a look at your stuff Steve tomorrow.
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
5 January 2015 7:21 pm
Yes, quicklisp should work and then you can step through the files in the examples or the top level xlispstat old example which should work.
Start of (school) year has kept me busy but I have a few commits for rho , CLS. Good news in that someone is fixing cl-random to have a platform independent reproducible RNG, though that part is not quite done and the while package brings in a huge load of others....
--
7 January 2015 8:21 pm
7 January 2015 6:40 pm
7 January 2015 6:34 pm
Hi Tony,
Thanks. Any luck? I’m going be using the math stuff at the end of Jan and, if it can run on CCL/MacOS, would prefer to do it on lisp stat than R.
David, what platform were your test run?
Regards,- Steve
From: "A.J. Rossini" <blind...@gmail.com>
Reply-To: "lisp...@googlegroups.com" <lisp...@googlegroups.com>
Date: Sunday, 4 January 2015 22:21
To: lisp-stat <lisp...@googlegroups.com>
Subject: Re: [lisp-stat] Element-wise Math in CL, part 2
And I will take a look at your stuff Steve tomorrow.
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
5 January 2015 7:21 pm
And I will take a look at your stuff Steve tomorrow.
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
5 January 2015 7:21 pm
Yes, quicklisp should work and then you can step through the files in the examples or the top level xlispstat old example which should work.
Start of (school) year has kept me busy but I have a few commits for rho , CLS. Good news in that someone is fixing cl-random to have a platform independent reproducible RNG, though that part is not quite done and the while package brings in a huge load of others....
--
8 January 2015 5:54 pm
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
8 January 2015 5:12 pm
8 January 2015 8:02 pm
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
8 January 2015 6:21 pm
9 January 2015 3:14 am
8 January 2015 10:27 pm
There is another package that supports generic vectorization of math functions, David, I think I found it from some comments you made? Cl-ana had it maybe?But GSLL might be what you are looking for Steve?
On Thursday, January 8, 2015, David Hodge <david...@gmail.com> wrote:
--
Sent from }*~£%¥>%=,?
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
8 January 2015 10:24 pm
Steven Núñez wrote:Any reason that you can see for the inefficiencies in the vector math? It would be interesting to compare the performance on some medium sized arrays with that of xlispstat, which had an underlying implementation in C.The excessive checking for compund data types. Granted, the intention of the syntax is to aid repl based exploring, but for larger data sets you are paying a lot in IMHO unneccessary overhead. I'll do some timings later and see if my assertion is backed up or not. This leads nicely into your next para
I suppose though, in the context of CL-stat going forward, how are we going to handle vector wise mathematics on large arrays and lists? Forcing everything to use one of the matrix libraries seems a bit inconvenient, not to mention introducing an unnatural syntax.
its all down to use cases in a way. I am most interested in climatology timeseries data.For me, there is a development phase where i am inspecting the data for interesting features, outliers, breakpoints, quality control flags, non climactic changes (eg instrument failure or changes to the measurement methodology) and so on and then validating model choice, parameters etc. so its descriptive statistics and summaries mainly. Infrequently, I might want to do something more detailed (eg some sort of spectral analysis) , but I tend to write a function for that, especially if its over a large dataset as I am often not sure of the exact question and such exercises typically go through several iterations.
Now, I have been thinking about dataframes to handle this. I have come across quite a nice query language , so its easy to do subsetting and then apply whatever processing across the rows. I need row based access generally as attributes in the row drive certain data transformations (eg the station was moved on this date, so I have to adjust for that specific record, stuff like that). I use group-by for sub totals/averages etc when i need them. for the large datasets, vectorised operations don't make much sense - for the subsets they can do. The other thing I need to figure out is cases of missing data and quality controlled data - missing might be because the station has not reported, or it might be that the instrument failed - usually I stop the calculation if i don't see a report, but I might choose to infill due to instrument failure. It would be nice to classify these things easily upon ingestion and have the various operations deal with them. Writing an efficient vectorised operation
Picking up some subset of a dataframe and handing it off to BLAS or FFTW is pretty straightforward - LISP-MATRIX shows us how (and in fact gives us a pretty nice api as well).
Its a good thing that you asked the original question Steve, its caused me to read Tony's latest files re ModelFrames etc and its got me thinking. I must say
Cheers
10 January 2015 8:59 am
Hi Dave,
Interesting. I’m going to have to try the quick lisp version when I get back.
Any reason that you can see for the inefficiencies in the vector math? It would be interesting to compare the performance on some medium sized arrays with that of xlispstat, which had an underlying implementation in C.
I suppose though, in the context of CL-stat going forward, how are we going to handle vector wise mathematics on large arrays and lists? Forcing everything to use one of the matrix libraries seems a bit inconvenient, not to mention introducing an unnatural syntax.
- Steve
From: David Hodge <david...@gmail.com>
Reply-To: "lisp...@googlegroups.com" <lisp...@googlegroups.com>
Date: Thursday, 8 January 2015 19:41
To: "lisp...@googlegroups.com" <lisp...@googlegroups.com>
Subject: Re: [lisp-stat] Element-wise Math in CL, part 2
Hi Steve,
All of the operators work in CLS. (eg sin, cos, tan, floor etc)
If you just install cls from quicklisp (assuming you have gsll installed first) you should be able to verify this pretty easily.
At the moment its pointing to something missing from the clsm repo, but I have not grokked the code enough to know what.
I would say that using this vectorised math syntax for anything other than small datasets is likely to be disappointing - there is a lot of overhead in the code, for not much value.
I am poking around a bit and its fun, I have to say. I will let you know if I find anything useful.
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
9 January 2015 4:41 pm
Interesting. Given that most all data analysis is going to use vectors, what’s the CLS strategy here? Develop something that does work, or use a third partly library?
16 January 2015 1:06 pm
12 January 2015 10:10 pm
16 January 2015 3:23 pm
Compound data is just a list or an array. I don’t know that I’d call it just a REPL convenience. There’s lot’s of reasons I’d want to do vector wise math in production scripts that are run regularly.
I was hoping Tony would chime in here with an update on RHO. I’ve seen signs of recent activity on the github repository. In my mind though the data frame is independent of the vector-wise math, since I’m still very likely to do vector operations on the rows and columns of a data frame, and it wouldn’t make sense to have two mechanisms for that (one for REPL and one for data frames). We need an underlying efficient implementation of vector math no matter which way we go; the more natural the syntax the better.
As far as where it fits in, I see it as a replacement for R and the python suite, addressing the large-memory weaknesses in R pointed about in the ‘back to the future’ paper. The fact that LISP could be used in production gives it a great advantage, though realistically unless some community evolves around CL-stat and advanced (distributed, IMO) analytics we won’t have a chance at catching up.
Perhaps the best bet would be to implement a common lisp DSL on Spark and admit defeat as an execution engine but at least be able to work in a more efficient syntax. Thinking about it, we might slowly be able to extend down the stack from there at some point, but the sad fact is there there is no way to do analytics with LISP at all. I’d be happy with any solution that provides that.
- Steve
From: David Hodge <david...@gmail.com>
Reply-To: "lisp...@googlegroups.com" <lisp...@googlegroups.com>
Date: Thursday, 15 January 2015 16:58
To: "lisp...@googlegroups.com" <lisp...@googlegroups.com>
Subject: Re: [lisp-stat] Element-wise Math in CL, part 2
Well, the stuff we have been talking about is, to my mind, a repl convenience - not really something one would use in heavy weight applications.
I have no doubt it could be improved performance wise if one really wished - just get rid of the excessive compound data checking for starters. As I am not really sure what compound data actually is, or what one would use it for , i can only note the performance hits that it makes. I should note that my tests are done with default optimisation settings, I could compile things with higher speed to see if it makes a difference.
The longer term strategy, as Tony notes elsewhere would be dataframes/Modelframes using a column store and providing a suite of functions on that.
I suppose a good question would be where does CLS fit in the analytic workflow - is it a swiss army knife that does data reduction as well as analysis or does it focus on the analysis domain only
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Common Lisp Statistics" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisp-stat+...@googlegroups.com.
To post to this group, send email to lisp...@googlegroups.com.
Visit this group at http://groups.google.com/group/lisp-stat.
For more options, visit https://groups.google.com/d/optout.
16 January 2015 1:58 pm