我正在尝试用 Java 重新实现一些 R 代码,因为它将集成到其他代码中,不受我控制,所以它确实需要用 Java 编写。
关键部分是将数据拟合到 non-standardized t-distribution使用数据的矩(均值、方差、偏度、峰度)。 IE。找到最适合数据的非标准化 t 分布参数。
我已经找到了使用 JRI 制作 R 代码的 Java 包装器的备份解决方案。但是有什么办法可以用纯 Java 代码做到这一点吗?
最佳答案
所以实际上一点也不复杂:
/**
* 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};
}
关于java - 在 Java 中将数据拟合为非标准化学生 t 分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32521552/