[Tutor] Statistic-Program Problems! Please Help Quickly!
Colleen Glaeser
songbird42371 at gmail.com
Fri Oct 15 06:11:39 CEST 2010
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
<songbird42371 at 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
> songbird42371 at gmail.com
> 636.357.8519
>
--
Colleen Glaeser
songbird42371 at gmail.com
636.357.8519
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20101014/6e3c935b/attachment.html>
More information about the Tutor
mailing list