1与中值的标准偏差(对于历史数据)

2024-04-26 02:58:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个已知宽度和大小的箱子(测量计数在里面),我试图找到在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

我原以为这样行得通,但现在的问题是,我只需要把中间带左边的面积加起来,中间带的位置是RmedhRd0s。我怎样才能把这个加到我的循环中呢?我将需要在左侧和右侧分别工作,我试图了解如何正确和有效地做到这一点,虽然为一方。你知道吗

先谢谢你。你知道吗


Tags: oftolenifiscounterareaprint
1条回答
网友
1楼 · 发布于 2024-04-26 02:58:20

问题不在于half1sig;问题在于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语句,就不再需要for循环了。将代码更改为以下内容(删除for循环并使用已有的counter变量而不是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变量在这里的作用是什么。。。你知道吗

相关问题 更多 >