簡體   English   中英

如何使用Scala Breeze使數據適合正態分布

[英]How to fit data to normal distribution using scala breeze

我正在嘗試使用scala breeze使數據適合正態分布,python scipy的替代方法是:

from scipy.stats import norm

mu,std = norm.fit(time1)

我正在尋找使用微風在Scala中執行相同操作的替代方法

查看norm.fit源代碼 ,看起來如果您僅使用傳入數據(即沒有其他參數)的函數,則此函數僅返回均值和標准差:。 我們可以像這樣在Breeze中完成相同的工作:

scala> val data = DenseVector(1d,2d,3d,4d)
data: breeze.linalg.DenseVector[Double] = DenseVector(1.0, 2.0, 3.0, 4.0)

scala> val mu = mean(data)
mu: Double = 2.5

scala> val samp_var = variance(data)
samp_var: Double = 1.6666666666666667

scala> val n = data.length.toDouble
n: Double = 4.0

scala> val pop_var = samp_var * (n-1)/(n)
pop_var: Double = 1.25

scala> val pop_std = math.sqrt(pop_var)
pop_std: Double = 1.118033988749895

我們需要修改樣本方差以獲得總體方差。 這與scipy結果相同:

In [1]: from scipy.stats import norm

In [2]: mu, std = norm.fit([1,2,3,4])

In [3]: mu
Out[3]: 2.5

In [4]: std
Out[4]: 1.1180339887498949

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM