最近经常跟数值计算的东西打交道,特别是大量样本的统计计算,在常见的描述统计结果中,最常用到的是一下几种:

-一组样本的平均价值

-一组样本的中值

-一组样本中的最小值

-一组样本中的最大值

-一组样本的和

-一组样本的标准方差

其中,样本N(X[1].....X[n])的中值的计算与样本的总数有一定的关系:

当样本数量为奇数(odd)时,中值median=X[n/2]

当样本数量为偶数(even)时,中值median=(X[n/2] + X[n/2])/2

本的标准方差是指以N为分母(denominator)计算结果,标准方差样本是指以N-1作为分母,N-1

又叫自由度数。

在标准的apache common math的组件中,已经包含了一组统计学计算的package,可以很好的计算

上面的结果。而它的标准方差的计算公式正是用N-1作为分母计算出来的结果。这个组件的下载URL:

下面是本人基于Java实现的代码,计算结果与apache

common math中的DescriptiveStatistics的

结果完全一致

/**

* @author gloomyfish

* @date 2011-03-20

*/

package com.java.mathutil;

import java.util.Arrays;

import org.apache.commons.math.stat.descriptive.DescriptiveStatistics;

public class StatisticsDemo {

private double[] inputData; // input data

private double medianValue; // median value

private double meanValue; // mean of input data array

private double maxValue; // max value of array

private double minValue; // min value of array

private double sdValue; // standard deviation of array

private double sumValue; // sum of array

public StatisticsDemo(double[] input) {

this.inputData = input;

Arrays.sort(inputData);

double N = inputData.length;

for(int i=0; i

{

if(i == 0) {

maxValue = inputData[i];

minValue = inputData[i];

}

if(maxValue < inputData[i]) {

maxValue = inputData[i];

}

if(minValue > inputData[i]) {

minValue = inputData[i];

}

sumValue += inputData[i];

}

meanValue = sumValue/N;

// if total number is odd

// calculate standard deviation and median value

// http://en.wikipedia.org/wiki/Standard_deviation

if(isOdd(inputData.length))

{

medianValue = inputData[inputData.length/2];

}

else

{

double temp = inputData[inputData.length/2] + inputData[(inputData.length/2 -1)];

medianValue = temp/2.0d;

}

double powSum = 0.0d;

for(int k=0; k

powSum += Math.pow((inputData[k] - meanValue), 2);

}

// This correction (the use of N − 1 instead of N) is known as Bessel's correction

sdValue = Math.sqrt(powSum/(N-(double)1.0d));

}

private boolean isOdd(int n) {

if((n & 0x1) == 1)

return true;

else

return false;

}

public double getMedianValue() {

return medianValue;

}

public double getMeanValue() {

return meanValue;

}

public double getMaxValue() {

return maxValue;

}

public double getMinValue() {

return minValue;

}

public double getSdValue() {

return sdValue;

}

public double getSumValue() {

return sumValue;

}

public static void main(String[] args) {

double[] data = new double[]{15.23,12.11,7,88,17,89,6.578,13.456,9.1235,20.5678};

// Arrays.sort(data);

StatisticsDemo dsd = new StatisticsDemo(data);

DescriptiveStatistics ds = new DescriptiveStatistics();

for(int i=0; i

{

ds.addValue(data[i]);

}

System.out.println("Demo sum = " + dsd.getSumValue());

System.out.println("Demo mean = " + dsd.getMeanValue());

System.out.println("Demo median = " + dsd.getMedianValue());

System.out.println("Demo standard deviation = " + dsd.getSdValue());

System.out.println("DS sum = " + ds.getSum());

System.out.println("DS mean = " + ds.getMean());

System.out.println("DS median = " + ds.getPercentile(50));

System.out.println("DS standard deviation = " + ds.getStandardDeviation());

}

}

如有误导,后果自负!

统计学Java_【gloomyfish】基于Java的统计学计算结果相关推荐

  1. 医院信息管理系统论文java_毕业论文-基于java的医院门诊信息管理系统设计与实现...

    毕业论文-基于java的医院门诊信息管理系统设计与实现 重庆邮电大学毕业设计(论文)编 号: 审定成绩: 毕业设计(论文) 设计(论文)题目: 基于 JAVA 的医院门诊信息管理系统 设计与实现 学 ...

  2. 炒股Java_基于java计算买卖股票的最佳时机

    这篇文章主要介绍了基于java计算买卖股票的最佳时机,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 问题: 可以将问题转化为如下图所示,即求多个累计 ...

  3. 题目:任意给定一个浮点数,计算这个浮点数的立方根。(基于二分法和牛顿迭代法)(基于Java实现)

    题目:任意给定一个浮点数,计算这个浮点数的立方根.(基于二分法和牛顿迭代法)(基于Java实现) 首先,来分析一下这道题,其实在leetcode上做了求解根号3的题之后,对于这种求解立方根的题,基本上 ...

  4. java 计算移动平均线_基于Java语言开发的个性化股票分析技术:移动平均线(MA)...

    基于Java语言开发的个性化股票分析技术:移动平均线(MA) 基于 Java 语言开发的个性化股票分析技术:移动平均线(MA)移动平均线(MA)是以道·琼斯的"平均成本概念"为理论 ...

  5. java包裹邮费计算_GitHub - honghailiang/FreightSystem: 基于Java Swing编写的简易运费计算工具...

    FreightSystem 基于java Swing编写的运费计算系统 初始化数据 从excel中读取数据,转化为对象(只保存基础数据:序列号.始发站.目的站.省份.100kg以下(元/kg).100 ...

  6. 基于Java Swing编写的简易运费计算工具

    两年前给媳妇儿做的一个基于Java Swing编写的简易运费计算工具,现开源,关键是思路(https://github.com/honghailiang/FreightSystem).主要有两个部分实 ...

  7. 基于java的简单英雄联盟胜率计算

    基于java的简单英雄联盟胜率计算 首先声明,楼主是一个LOLer,技术还说的过去.今天下午楼主的同学看到楼主匹配胜率感人,非说楼主是"小学生",非说匹配胜率要50%以上才算不坑, ...

  8. java计算胜率_基于java的简单英雄联盟胜率计算

    基于java的简单英雄联盟胜率计算 首先声明,楼主是一个LOLer,技术还说的过去.今天下午楼主的同学看到楼主匹配胜率感人,非说楼主是"小学生",非说匹配胜率要50%以上才算不坑, ...

  9. 毕设管理系统java_基于Java的人事管理系统的设计任务书

    毕业论文任务书 题目   基于Java的人事管理系统的设计与实现 专业    信息与计算科学   学号 *****  姓名 **** 主要内容.基本要求.主要参考资料等: 主要内容 人事管理系统在企业 ...

最新文章

  1. 点云处理关键算法剖析及实现(涉及滤波、分割、配准、识别、重建)
  2. 假如王撕葱是程序员......
  3. linux 驱动 内核模式,Linux内核模块和驱动的编写
  4. 在服务器虚拟化架构中有哪些技术功能和益处
  5. 英伟达吞并Arm失败!英美欧盟一齐干涉,老黄还要给孙正义12.5亿美元分手费
  6. 我们自嘲的“码农”身份被官方实锤了!
  7. php 语法 条件变量,C ++核心准则:注意条件变量的陷阱
  8. 推荐搜索系统论文干货集锦(持续更新)
  9. 实例比较虚幻引擎4与光线追踪渲染
  10. toolbar + DrawerLayout 实现抽屉菜单
  11. mysql命令行如何建库_MySQL心得2--命令行方式建库和表
  12. 【转】C# split 几种使用方法
  13. 解决“Class org.apache.hadoop.hdfs.DistributedFileSystem not found“问题
  14. ORACLE定期清理INACTIVE会话
  15. 实现远程访问局域网内的多台电脑
  16. 霍夫曼算法_霍夫曼编码算法
  17. 机房服务器维护管理规范,机房维护管理规范.pdf
  18. 计算机网络原理中子网掩码,计算机网络应用 子网掩码计算器(SubNetMaskCalc)
  19. 什么是SEO,为什么要做SEO?
  20. 醇酰基转移酶基因对猕猴桃酯生物合成的作用

热门文章

  1. 智能睡眠评估系统(包含:睡眠数据特征工程、睡眠评分、睡眠聚类、睡眠可视化分析、睡眠结论存储)
  2. 集成学习、Bagging算法、Bagging+Pasting、随机森林、极端随机树集成(Extra-trees)、特征重要度、包外评估
  3. 特征重要性、特征集成+FeatureUnion、特征选择变换器+ColumnTransformer、标签特征变换+TransformedTargetRegressor、特征质量、自动学习数据中的特征
  4. access的未来发展 ieee_传感器行业发展路在何方 多国专家齐聚来一场头脑风暴
  5. 牛顿迭代法求解平方根
  6. 最小二乘法MSE 梯度下降法
  7. axt测试软件,【测试工具】这些APP实用测试工具,不知道你就out了!
  8. linux环境变量管理器,运维 - linux(ubuntu) 环境变量管理 (持续更新)
  9. python pandas dataframe 列 转换为离散值
  10. pandas 增加列