python 中的总平方和 (TSS)
Total Sum of Squares (TSS) in python
我正在尝试使用 python 计算总平方和。
我知道TSS的公式是:
[在此处输入图片描述][1]
我创建了一个代码来做到这一点:
from statistics import mean
x = ([3,1,3,1,3,13])
def tss(a):
m = mean(a)
for i in a:
i += ((i-m)**2)
return (i)
print(tss(x))
问题是:它一直返回 94,但我知道正确答案是 102。我不知道我做错了什么。有谁能够帮助我?
[1]: https://i.stack.imgur.com/Alx6r.png
i
每次通过循环时都会重置。因此,在最后一个循环中,您的函数会擦除之前的所有总和,将 i
设置为 13,然后将 13 与均值之差的平方与 i
(现在为 13)相加,返回 94。您需要一个不同的变量来跟踪总和,因此它不会在每个循环中丢失。你想要:
from statistics import mean
x = ([3,1,3,1,3,13])
def tss(a):
m = mean(a)
n = 0
for i in a:
n += ((i-m)**2)
return (n)
print(tss(x))
'''
@mateen's answer is more pythonic and will perform better than a loop, but I don't think you'll get the understanding from it. Welcome to python!
没有 numpy:
def tss(xs):
m = sum(xs) / len(xs)
return sum((x - m)**2 for x in xs)
使用 numpy:
import numpy as np
def tss(x):
return ((x - np.mean(x))**2).sum()
如果您想保留初始脚本,只需执行以下操作:
from statistics import mean
x = ([3, 1, 3, 1, 3, 13])
def tss(a):
total = 0
for i in a:
total = total + ((i-mean(a))**2)
return total
我正在尝试使用 python 计算总平方和。 我知道TSS的公式是: [在此处输入图片描述][1]
我创建了一个代码来做到这一点:
from statistics import mean
x = ([3,1,3,1,3,13])
def tss(a):
m = mean(a)
for i in a:
i += ((i-m)**2)
return (i)
print(tss(x))
问题是:它一直返回 94,但我知道正确答案是 102。我不知道我做错了什么。有谁能够帮助我? [1]: https://i.stack.imgur.com/Alx6r.png
i
每次通过循环时都会重置。因此,在最后一个循环中,您的函数会擦除之前的所有总和,将 i
设置为 13,然后将 13 与均值之差的平方与 i
(现在为 13)相加,返回 94。您需要一个不同的变量来跟踪总和,因此它不会在每个循环中丢失。你想要:
from statistics import mean
x = ([3,1,3,1,3,13])
def tss(a):
m = mean(a)
n = 0
for i in a:
n += ((i-m)**2)
return (n)
print(tss(x))
'''
@mateen's answer is more pythonic and will perform better than a loop, but I don't think you'll get the understanding from it. Welcome to python!
没有 numpy:
def tss(xs):
m = sum(xs) / len(xs)
return sum((x - m)**2 for x in xs)
使用 numpy:
import numpy as np
def tss(x):
return ((x - np.mean(x))**2).sum()
如果您想保留初始脚本,只需执行以下操作:
from statistics import mean
x = ([3, 1, 3, 1, 3, 13])
def tss(a):
total = 0
for i in a:
total = total + ((i-mean(a))**2)
return total