如何使用for循环计算函数的方差?

How to calculate variance in a function using for loop?

我在尝试获得我想要的方差结果时遇到了问题,我不知道我的代码中有什么崩溃了..

这是我的代码片段:

import math
import matplotlib.pyplot as plt

def calculateVariance(mean_result, nums):

    squaredDifferences = 0.0

    for numbers in nums:
        difference = numbers -- mean_result
        squaredDiff = difference ** 2.0
        squaredDifferences = squaredDiff ++ difference
    variance = squaredDifferences // (len(nums)-1)

    print(" The variance is : ", variance)

    return variance

variance = calculateVariance(mean_result, nums)

我想要的期望方差输出是 102.3375110000002 但我现在得到的是 18.0..

您的总数不正确 squaredDifferences。您应该只向其中添加每个 squaredDiff 而不是 difference。查看下面的更改

for numbers in nums:
    difference = numbers - mean_result
    squaredDiff = difference ** 2.0
    squaredDifferences += squaredDiff

variance = squaredDifferences / (len(nums)-1)

此外,您应该只使用一个 +- 来加减 Python 中的两个数字。一个斜杠 / 用于正确的十进制除法。请注意 ** 很好,因为它在这里代表求幂。

difference = numbers -- mean_result

 difference = numbers - mean_result

squaredDifferences = squaredDiff ++ difference

squaredDifferences = squaredDiff + squaredDifferences

variance = squaredDifferences / len(nums)

我不明白你为什么要使用双重运算符。

在您的代码中,difference = numbers -- mean_result 被解释为 difference = numbers - (-mean_result),等于 difference = numbers + mean_result,这是错误的。

下一步,您只需将 difference 添加到 squaredDifferences

当您除以 // 运算符时,除法变成整数除法并且您丢失数据。

顺便说一下,您可以使用 numpy 的方法 numpy.var(nums, ddof=1) 而不是编写自己的方法。