繁体   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