我正在尝试在Java中重新实现一些R代码,因为它将集成到其他代码中,而不是由我控制,它确实需要使用Java。
关键部分是使用数据的时刻(平均值,方差,偏度,峰度)将数据拟合到non-standardized t-distribution。即找到最适合数据的非标准化t分布的参数。
我已经找到了一个使用JRI制作R代码的Java包装器的备份解决方案。但有没有办法在纯Java代码中做到这一点?
答案 0 :(得分:3)
所以它实际上并不是很复杂:
/**
* 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};
}