用统计学方法求一组数据平均值,偏离的剔除后再做平均。

给定NxM维数组,里边的有些数据是偏离正常值的数据,需要用统计学的方法获得这些数据的统计平均值,严重偏离的剔除后, 再做平均,如此反复得到一个大多数数据都在一个合理范围的集中值。求问!

C语言

  1. 计算数据的平均值 和 标准差
float sum = 0;
for (int i = 0; i < n; i++) {
    sum += array[i];
}
float mean = sum / n;

float variance = 0;
for (int i = 0; i < n; i++) {  
    variance += (array[i] - mean) * (array[i] - mean);
}  
float std = sqrt(variance/n);
  1. 使用平均值 和 标准差剔除异常值若数据值大于 mean + k * std 或者小于 mean - k * std,就是异常值,可以剔除。k 通常取 2 或 3。
for (int i = 0; i < n; i++) {
    if (array[i] > mean + k * std || array[i] < mean - k * std) {
         // 剔除array[i] 
    }
}
  1. 再次计算新的数据平均值 和 标准差重复上述步骤,反复剔除异常值,数据越来越集中。
  2. 判断是否需要继续剔除异常值直到标准差小于某个阈值,或者重复剔除的数目小于设定值时停止。这种方法称为迭代剔除(Iterative Removal)
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7697619
  • 以下回答来自chatgpt:

    根据问题描述,首先我们需要对输入的NxM维数组进行处理,找到偏离正常值的数据,并剔除这些数据。接下来,我们计算剩余数据的平均值作为结果。

    具体的解决方案如下:

    1. 首先读取输入的NxM维数组。

    2. 对数组进行统计学方法求平均值的操作。可以采用以下步骤实现:

    3. 计算数组的元素和sum,以及数组的元素个数count。
    4. 计算数组的平均值average = sum / count。

    5. 对于其中偏离正常值的数据,可以采用以下方法剔除:

    6. 设置一个阈值threshold,作为判断数据是否偏离的依据。
    7. 遍历数组的每个元素,将偏离正常值的数据剔除。
    8. 更新数组的元素和sum和元素个数count。

    9. 计算剩余数据的平均值residual_average = sum / count。这个平均值就是一个合理范围内的集中值作为最终结果。

    以下是一个示例代码实现:

    import numpy as np
    
    # 读取输入的NxM维数组
    n = int(input("输入一个正整数N:"))
    
    # 生成随机的NxM维数组
    array = np.random.randint(0, 100, (n, n))
    
    # 统计学方法求平均值
    sum = np.sum(array)
    count = np.size(array)
    average = sum / count
    
    # 设置阈值,如假设偏离平均值超过10的数据为异常值
    threshold = 10
    
    # 剔除偏离正常值的数据
    filtered_array = array[np.abs(array - average) < threshold]
    
    # 重新计算剔除异常值后的平均值
    filtered_sum = np.sum(filtered_array)
    filtered_count = np.size(filtered_array)
    residual_average = filtered_sum / filtered_count
    
    # 输出结果
    print("平均值:", average)
    print("剔除异常值后的平均值:", residual_average)
    

    注意:以上代码示例使用了Python的NumPy库进行数组操作和统计计算。如果使用其他编程语言,可以根据具体语言的数组操作和统计函数进行实现。

    请注意,这只是一个示例实现,实际应用可能需要根据具体的数据和问题进行适当的调整和优化。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^