Подгонка данных к нестандартизированному t-распределению Стьюдента в Java
Я пытаюсь повторно реализовать некоторый R-код в Java, и, поскольку он будет интегрирован в другой код, не контролируемый мной, он действительно должен быть в Java.
Важнейшей частью является подгонка данных к нестандартизированному t-распределению с использованием моментов данных (среднее значение, дисперсия, асимметрия, эксцесс). Т.е. нахождение параметров нестандартизированного t-распределения, которое наилучшим образом соответствует данным.
Я уже нашел решение для резервного копирования создания Java-оболочки кода R с использованием JRI. Но есть ли способ сделать это в чистом Java-коде?
1 ответ
Так что это на самом деле совсем не сложно:
/**
* Returns the parameters of the Student T distribution which is fitted using the moments given.
*
* @param avg: estimated average.
* @param variance: estimated variance.
* @param kurtosis: estimated kurtosis.
* @return double[] {location, scale, degrees of freedom}.
* @throws Nothing!! (for now)
*/
public static double[] get_Tdistribution_params_from_moments(double avg, double variance, double kurtosis){
double mu = avg; // localization parameter
double nu = (6-4*kurtosis)/(3-kurtosis); // degree of freedom
double sigma = Math.pow(((nu-2)/nu)*variance,0.5); // scale parameter
return new double[] {mu,sigma, nu};
}