On Thu, Oct 14, 2010 at 10:11 PM, Colleen Glaeser <songbird42...@gmail.com>wrote:
> BTW, the error message my program gives me for the B and M functions is: > > Traceback (most recent call last): > File "I:\Lab 7 wierd stat data.py", line 49, in <module> > B() > File "I:\Lab 7 wierd stat data.py", line 44, in B > > ((Y() * Q()) - (P() * X())) / ((6 * Q()) - (X()**2)) > TypeError: unsupported operand type(s) for *: 'NoneType' and 'NoneType' > > On Thu, Oct 14, 2010 at 11:09 PM, Colleen Glaeser <songbird42...@gmail.com > > wrote: > >> Dear tutors, >> >> I am in a beginning-level computer science class in college and am running >> into problems with an assignment. >> >> The assignment is as follows: >> >> Statisticians are fond of drawing regression lines. In statistics and >> other fields where people analyze lots of data, one of the most commonly >> used regression lines is called the “least squares line.” This is the line >> that is supposed to best fit the set of data points, in the sense that it >> minimizes the squared vertical distances between the points and the line. >> Why this should be a good fit is beyond the scope of this assignment. >> >> Presume that you have a collection of n two-dimensional data points. I’ll >> give it as a list of lists, where each of the lists inside represents one >> data point. >> >> Data :[ [x1, y1], [x2, y2], [x3, y3], …, [xn, yn]] >> >> Compute the following >> >> The regression line is then given by >> >> where m and b may be obtained by >> >> and >> >> Your task is to compute the m and b (slope and intercept, respectively) >> for a set of data. You have to analyze the data as given, not count or >> add anything yourself. Your program should do everything, even figure >> out how many data points there are. >> >> Here’s your data: >> >> First set: [ [3, 1], [4, 3], [6, 4], [7, 6], [8, 8], [9, 8] ] >> >> Second set: [ [63, 11], [22, 7.5], [63, 11], [28, 10], [151, 12], [108, >> 10], [18, 8], [115, 10], [31,7], [44, 9] ] >> >> Find m and b, then calculate an estimate for x = 5 using the first data >> set. That is, plug in 5 for x and see what y you get. For the second >> set, try x = 95. >> >> Turn in: code, m, b, and the estimates for both data sets. >> >> >> >> >> *********************************************************************************************************************** >> >> There’s an easy way to walk through the data and extract the values you >> need. Use a for loop. Try this: >> >> for item in data: >> >> [x, y] = item >> >> print(x) >> >> >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> For extra credit: draw a scatter plot of the data, and draw in the least >> squares line. Scale the window to fit, making it a bit wider and higher >> than the data requires, so that some of the points are near but not on the >> edges of the window. Then sketch in the regression line. Note that you >> should calculate the window size based on the data – don’t set them >> yourself; find the max and min values for x and y. You can print the >> scatter plot, or point me toward your web page. In any case, show me the >> code. >> >> >> >> So far, my program is as follows: >> >> Data = [[3,1],[4,3],[6, 4],[7, 6],[8, 8],[9, 8]] >> >> def X(): >> accX = 0 >> for item in Data: >> [x,y] = item >> >> accX = accX + x >> print (accX) >> >> >> def Y(): >> accY = 0 >> for item in Data: >> [x,y] = item >> >> accY = accY + y >> print (accY) >> >> def P(): >> accXY = 0 >> for item in Data: >> [x,y] = item >> >> accXY = accXY + (y*x) >> print (accXY) >> >> def Q(): >> accX2 = 0 >> for item in Data: >> [x,y] = item >> >> accX2 = accX2 + (x**2) >> print (accX2) >> >> X() >> Y() >> P() >> Q() >> >> >> >> def B(): >> ((Y() * Q()) - (P() * X())) / ((6 * Q()) - (X()**2)) >> >> def M(): >> ((Y() * Q()) - (P() * X())) / (X() * Q()) >> >> B() >> M() >> >> Now, my functions for X, Y, P, and Q are correct, but I have a couple of >> problems when it comes to continuing. First of all, despite what my teacher >> has told me, my method for trying to multiply X,Y,P, and Q's results in the >> functions for B and M are not working. I'm not sure if there is a way to >> make functions into variables or how to solve this problem. >> >> Second, I am confused as to what my teacher means to do when it comes to >> inputting different values of x. >> >> Find m and b, then calculate an estimate for x = 5 using the first data >> set. That is, plug in 5 for x and see what y you get. For the second >> set, try x = 95. >> >> Turn in: code, m, b, and the estimates for both data sets. >> >> >> I mean, I know I need to calculate the line of best fit for the data sets >> using B and M, but what in the world is x supposed to do and where does it >> go? How do I program this? This is especially harder since I've never >> taken a proper stat class before. >> >> Thank you all so much! >> >> -- >> Colleen Glaeser >> songbird42...@gmail.com >> 636.357.8519 >> > > > > -- > Colleen Glaeser > songbird42...@gmail.com > 636.357.8519 > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor > > You might want to look that returning data http://docs.python.org/library/functions.html -- Vince -- Sent from Ubuntu
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor