首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的总平方和(TSS)

python中的总平方和(TSS)
EN

Stack Overflow用户
提问于 2021-10-02 23:02:36
回答 3查看 284关注 0票数 1

我正在尝试使用python计算平方和的总和。我知道TSS的公式是:在这里输入图片描述

我创建了一个代码来做这件事:

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-10-02 23:09:15

i在每次循环时都会重置。因此,在最后一次循环中,您的函数将擦除所有先前的和,将i设置为13,然后将13与平均值之间的差值的平方添加到i (现在是13),返回94。您需要一个不同的变量来跟踪和,这样它就不会在每次循环中丢失。您需要:

代码语言:javascript
复制
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!
票数 1
EN

Stack Overflow用户

发布于 2021-10-02 23:09:26

如果不使用numpy:

代码语言:javascript
复制
def tss(xs):
    m = sum(xs) / len(xs)
    return sum((x - m)**2 for x in xs)

使用numpy:

代码语言:javascript
复制
import numpy as np

def tss(x):
    return ((x - np.mean(x))**2).sum()
票数 1
EN

Stack Overflow用户

发布于 2021-10-02 23:32:01

如果您想保留您的初始脚本,只需执行以下操作:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69420861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档