我回答了一个关于使用NumPy中的伽马分布生成具有正支持和已知均值和方差的样本的问题。我想我会在Incanter中尝试同样的方法。但与我使用 NumPy 得到的结果不同,我无法获得接近分布均值和方差的样本均值和方差。
(defproject incanter-repl "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.6.0"]
[incanter "1.5.4"]])
(require '[incanter
[core]
[distributions :refer [gamma-distribution mean variance draw]]
[stats :as stats]])
(def dist
(let [mean 0.71
variance 2.89
theta (/ variance mean)
k (/ mean theta) ]
(gamma-distribution k theta)))
Incanter 计算分布的均值和方差
(mean dist) ;=> 0.71
(variance dist) ;=> 2.89
我根据从该分布中抽取的数据计算样本均值和方差
(def samples (repeatedly 10000 #(draw dist)))
(stats/mean samples) ;=> 0.04595208774029654
(stats/variance samples) ;=> 0.01223348345651905
我希望在样本上计算的这些统计数据更接近分布的均值和方差。我错过了什么?
回答
Incanter 有一个从 Parallel Colt 继承的错误。Parallel Colt 中不同方法的参数处理不一致。请参阅问题报告https://github.com/incanter/incanter/issues/245。