2016-06-22 3 views
0

Я пытаюсь соответствовать данным к нормальному распределению с помощью SCALA ветра, питон SciPy альтернативного способа:Как установить данные к нормальному распределению с помощью SCALA ветра

from scipy.stats import norm

mu,std = norm.fit(time1)

Ищу альтернативный способ сделать то же самое в scala, используя ветерок

ответ

1

Глядя на source code на 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 
+0

Как он отличается от stddev? – Harshit

+0

Распределение населения/stddev vs Пример дисперсии/stddev. См. [Здесь] (https://en.wikipedia.org/wiki/Variance#Population_variance) –

Смежные вопросы