如何在Haskell中计算直方图?

时间:2018-01-11 17:11:26

标签: haskell statistics

我找到Statistics.Sample.Histogram,但我似乎无法使用它。如果我希望能够将列表分成四个类别,我希望能够做到这样的事情:

import Statistics.Sample.Histogram
histogram 4 [1, 2, 9, 9, 9, 9, 10, 11, 20]

但它给了我错误“约束中的非类型变量参数”,我完全不明白。我究竟做错了什么?

1 个答案:

答案 0 :(得分:3)

histogram获取Vector个值,而不是列表。您可以使用Data.Vector的{​​{3}}功能将您的列表转换为Vector

import qualified Statistics.Sample.Histogram as S
import qualified Data.Vector as V

main :: IO ()
main = do
    let xs = V.fromList [1, 2, 9, 9, 9, 9, 10, 11, 20]
        bins = 4
        (lowerbounds, sizes) = S.histogram bins xs
    print $ V.toList lowerbounds
    print $ V.toList sizes

结果是一对Vector s保持每个区间的下限和每个区间内的样本数 - 如果要显示它们,您需要使用{{3} }。