与中位数的1标准差(对于组织数据)

时间:2016-03-16 04:10:37

标签: python python-2.7 standard-deviation

我有已知宽度和尺寸的箱子(测量数量在内),我试图在R中找到R中的位置与中位数相关的34.15%(两侧,所以68.3%喜欢这个:https://en.wikipedia.org/wiki/68%E2%80%9395%E2%80%9399.7_rule)我的总直方图区域。我不在乎图表。

第一次尝试

#hRd0s is an array of arrays, where the stuff inside of it are the bins
area = 0.
counter = 0 #used to count increments taken
increment = 0.
for i in range(len(hRd0s)): #sneaking suspicion this is where problem starts
    a = 0.001 * len(hRd0s[i])
    area += a
    increment += 0.001
    counter += 1
    if area <= half1sig: #i have half1sig defined above
        i +=1 #i figured this was how id move to next bin if half1sig wasnt satisfied
uppersteps = counter * 0.001
uppersigma = uppersteps + RmedhRd0s
print area
print uppersigma

错误给我的错误:

    if area <= half1sig:
ValueError: The truth value of an array with more than one element is ambiguous. 
Use a.any() or a.all()

更新1:我不再收到此ValueError通知。

第二次尝试:

area = 0.
counter = 0 #used to count increments taken
increment = 0.
while area < half1sig:
    for i in range(len(hRd0s)):
        a = 0.001 * len(hRd0s[i])
        area += a
        increment += 0.001
        counter += 1
        if area < half1sig:
            i +=1
uppersteps = counter * 0.001
uppersigma = uppersteps + RmedhRd0s
print area
print uppersigma

我认为这样可行,但现在的问题是我需要将这个区域总结到中位数的LEFT,其位置是RmedhRd0s。我怎样才能在循环中使用它?我将需要分别在左侧和右侧工作,我试图了解如何正确和有效地做到这一点,虽然在一方。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

问题不在于area;问题出在area,代码中hRd0s是一个数组,因为:

如果hRd0s[i]是一个数组数组,则a将是一个数组。因此,a = 0.001 * hRd0s[i]将是一个数组,因为a。现在,当area是数组时,area += a也将是一个数组,因为if area <= half1sig。因此,ValueError: The truth value of an array with more than one element is ambiguous.没有意义,因为错误的追溯建议:while

更新问题后:

提供的信息仍然有限。所以我最好的猜测是,由于您使用的是counter语句,因此不再需要for循环。将您的代码更改为以下内容(删除for循环并使用您已有的i变量而不是area = 0. counter = 0 #used to count increments taken increment = 0. while area < half1sig: a = 0.001 * len(hRd0s[counter]) area += a increment += 0.001 counter += 1 uppersteps = counter * 0.001 uppersigma = uppersteps + RmedhRd0s print area print uppersigma ),看看它是否会得到修复:

increment

但正如我所说,信息仍然有限;例如,我不明白{{1}}变量在这里的作用是什么......