[Tutor] Statistic-Program Problems! Please Help Quickly!
Vince Spicer
vince at vinces.ca
Fri Oct 15 08:22:45 CEST 2010
On Thu, Oct 14, 2010 at 10:11 PM, Colleen Glaeser
<songbird42371 at 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 <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
>
> _______________________________________________
> Tutor maillist - Tutor at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20101015/6c150949/attachment-0002.html>
More information about the Tutor
mailing list