Basic statistical functions on HP-32SII Ed Look Unregistered Posts: 801 Threads: 36 Joined: Nov 2005 10-05-2003, 10:51 PM The average HP RPN scientific can calculate summations, square them, do all sorts of stuff, like least squares fitting, give an average (mean), and standard deviations, and this includes, of course, the 32SII. But I'd love to use the 32SII to also calculate a median and modes (frequency, the statistical kind). Personally, I found that keystroke programming with the use of registers seems not to allow data sorting of any kind. Am I wrong, or would that require as many registers as you have data points? Is it at all possible to create a reasonable (lengthwise) program to calculate a statistical median or mode from a set of data with one of these calculators (any HP RPN handheld before the Charlemagnes)? Patrick Unregistered Posts: 266 Threads: 32 Joined: Jan 1970 10-06-2003, 02:09 AM In order to compute the median or mode, you need to know the frequencies of each distinct data point. This is essentially equivalent to having all of the data points. Patrick Unregistered Posts: 266 Threads: 32 Joined: Jan 1970 10-06-2003, 02:20 AM On the other hand, here is a little challenge which can be solved on the 32SII or any other HP programmable. (Its a little easier on machines which have a pseudo-random number generator, but, if your favourite calculator doesn't have one, you can always code one as part of your solution.) Imagine a user having a long list of numbers that they key into the calculator under the guidance of a program you have written. The goal is for your program to select one of the user's inputs "at random". By this I mean that when the user is finished keying data, the calculator displays one of the user's data inputs. It must be true that any of the inputs that the user supplied was equally likely to have been selected by your program. And, no, you don't know in advance how many items are in the user's data list. Tizedes Csaba Unregistered Posts: 93 Threads: 15 Joined: Jan 1970 10-06-2003, 03:38 AM Err... I think it's workable... HP32SII version: ```LBL F INPUT X SUMMA+ 1/X RANDOM XY' RCL X STO Y GTO F LBL R #the 'result' VIEW Y RTN ``` The variable X is the actual data, and Y is the 'favourite'. If the RANDOM<1/n (n: number of datas, what typed), then X->Y. If you want to see the actual Y, type XEQ R, on the 'X?' screen. Usage: CLSUMMA, (CLVARS), XEQ F, type datas [R/S], XEQ R Csaba Karl Schneider Unregistered Posts: 1,792 Threads: 62 Joined: Jan 2005 10-06-2003, 05:28 AM Ed -- The RPN/AOS HP-17Bii will store the entire set of input data for staistical analysis, and has built-in functions for median, max, min, and sorting. "Mode" could likely be programmed using its powerful language for equation-solving, documented not in its own manual, but in the HP-19 manual. I know where I can abtain a 1993(?) HP-17Bii for you. Larry Corrado Unregistered Posts: 99 Threads: 9 Joined: Apr 2013 10-06-2003, 07:15 AM A very interesting problem posted by Patrick. My immediate inclination was to say that all the data must be stored, and a point picked out from the complete stored list after each new entry. It just didn't seem "right" to have all but one point ruled out as the winner part way through the data entry. However, when I constructed the decision tree for n = 3 or 4 inputs, it worked out that each input would have a 1/n probability, where n = number of inputs. And it appears that this scales up to larger n. It's been along time since I've done any significant calculator programming, but it looks like Tizedes' solution will work. Interesting... LC Ed Look Unregistered Posts: 801 Threads: 36 Joined: Nov 2005 10-06-2003, 01:18 PM Karl, could you e-mail me? I cannot access yours. Thanks. Patrick Unregistered Posts: 266 Threads: 32 Joined: Jan 1970 10-06-2003, 05:55 PM Well done, Mr. Csaba. Your answer is right on. In words, the basic idea of the algorithm is that the program always keeps the "current" selection stored, together with the current number of items entered to date. When the n'th input is made, it replaces the previous current selection with probability 1/n. So, for example, the first item entered is selected as the current value with probability 1. The second one entered is selected with probability 1/2, and so on. After all the data is entered (or at any other time) the current selection is the value the program will return as the "random pick" of the user's data. Here is the proof that the program selects each item with equal probability. Suppose that the entire list consists of N items. Consider the k'th item in the list, with 1<=k<=N. What is the probability that it ends up as the final selection? In order for our program to be correct, this probability must be 1/N. Well, in order for this to happen, it must be selected when it is keyed in and then all further keyed data inputs must not be selected. These events are independent and so we multiply the probabilities for them each to happen: ``` (1/k)*(k/(k+1))*((k+1)/(k+2))* ... *((N-1)/N) = 1/N ``` Techniques like this used to abound in the literature in the days when memory and CPU costs were large. Typically, a large data set was read off of a tape and certain reports were generated from the data. Core memory was not so plentiful that it could maintain all of that data in memory all at the same time. Nevertheless, it was critically important to programs of the day that they not require multiple passes through the data -- reading a tape was expensive, in CPU time and in wall-clock time. "Single pass" type algorithms were key. The algorithm at the base of this challenge is a simple example of such a single-pass (stochastic) algorithm. Many such have been lost from general knowledge and practice because of how inexpensive memory (e.g., virtual memory) and CPU power has become. Larry Corrado Unregistered Posts: 99 Threads: 9 Joined: Apr 2013 10-07-2003, 05:35 PM Nice proof, elegant and simple! LC Tizedes Csaba Unregistered Posts: 93 Threads: 15 Joined: Jan 1970 10-08-2003, 02:57 AM :D I'm very happy to solve little (but interesting) problems. Do you think good idea is to start 'Challenge-Section'? I've got some problems, and I think some of that's interesting... Csaba Ps: English notation vs. Hungarian notation: My family name is 'Tizedes', and my first name is 'Csaba' ;) I know, it's not a classical name, and I maked a mistake when I typed it's in the wrong order... No problem! :) Cs. « Next Oldest | Next Newest »

 Possibly Related Threads… Thread Author Replies Views Last Post HP Prime - CAS functions in Spreadsheet App CR Haeger 6 2,356 11-11-2013, 12:37 AM Last Post: Michael de Estrada [41CL] New Extra Functions version Monte Dalrymple 0 1,069 11-08-2013, 04:32 PM Last Post: Monte Dalrymple Best statistical fit Richard Berler 8 2,417 10-30-2013, 11:25 PM Last Post: Walter B HP Prime: in need of help with defining functions Alberto Candel 14 4,119 10-27-2013, 10:48 AM Last Post: Alberto Candel HP PRIME - Need help for basic program svp. dg1969 4 1,660 10-08-2013, 04:06 PM Last Post: dg1969 HP Prime spreadsheet functions SanS 0 1,867 10-04-2013, 04:23 AM Last Post: SanS HP 32sii Fault Carlos Estinos 9 2,738 09-26-2013, 01:06 PM Last Post: Csaba Tizedes (Hungary) Stats functions on the HP34S Nicholas van Stigt 5 1,918 09-24-2013, 02:45 AM Last Post: Nick_S Trig Functions Howard Owen 11 3,361 09-16-2013, 02:53 PM Last Post: Fred Lusk 50g piecewise functions Kurt Fankhauser 6 2,264 09-15-2013, 08:01 PM Last Post: Kurt Fankhauser

Forum Jump: