方差性和协方差性计算公式以及java示例
方差性(Variance)
定义
方差是衡量随机变量或一组数值与其平均数(即数学期望)之间的偏离程度的量。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。
计算公式
方差的公式有两种常见的形式,它们分别基于总体和样本。
总体方差:
如果 X 是一个随机变量,且其总体均值为 μ,那么总体方差的公式为:
其中,N 是总体的容量,xi是 X 的第 i 个观测值。
样本方差:
如果我们有一个大小为 n 的样本 x,且其样本均值为 ,那么样本方差的公式为:
注意这里分母是 n−1 而不是 n。这是因为在计算样本方差时,我们通常希望估计的是总体的方差。使用 n−1 作为分母可以得到一个无偏的估计量(即估计的期望值等于真实的总体方差)。
在实际应用中,当我们谈论一个数据集的方差时,我们通常指的是样本方差。
public class VarianceCalculator { public static double calculateVariance(double[] data) { if (data == null || data.length == 0) { throw new IllegalArgumentException("Data array must not be null or empty"); } int n = data.length; double sum = 0.0; for (double num : data) { sum += num; } double mean = sum / n; double variance = 0.0; for (double num : data) { variance += Math.pow(num - mean, 2); } variance /= (n - 1); // 使用样本方差公式 return variance; } public static void main(String[] args) { double[] data = {1.0, 2.0, 3.0, 4.0, 5.0}; double variance = calculateVariance(data); System.out.println("Variance: " + variance); } }
协方差性(Covariance)
定义
协方差(Covariance)是一个用于衡量两个随机变量之间关系的统计量。具体地,协方差表示了两个随机变量总体误差的期望。如果两个随机变量的协方差为正,则这两个随机变量倾向于同时增加或减少,即它们正相关;如果协方差为负,则一个随机变量增加时,另一个随机变量倾向于减少,即它们负相关;如果协方差为零,则两个随机变量之间不存在线性关系。
计算公式
对于两组数据 X
和 Y
,其协方差 Cov(X,Y) 的公式为:
Cov(X,Y)=E[(X−E[X])(Y−E[Y])]
其中 E[X] 和 E[Y] 分别是 X 和 Y 的数学期望(或均值),而 E[(X−E[X])(Y−E[Y])] 表示两个随机变量与其各自均值之差的乘积的数学期望。
在实际应用中,如果我们有一组 n 个样本点 ,那么样本协方差的公式为:
其中和分别是 X 和 Y 的样本均值。注意,这里分母使用了 n−1 而不是 n,这是为了得到一个无偏的估计量。
协方差的值可以为正、负或零,其绝对值越大表示两个随机变量之间的线性关系越强。但是,协方差本身受到随机变量量纲的影响,因此在某些情况下,使用相关系数(Correlation Coefficient)来量化两个变量之间的关系可能更为合适。
Java 示例
public class CovarianceCalculator { public static double calculateCovariance(double[] xData, double[] yData) { if (xData == null || yData == null || xData.length != yData.length || xData.length == 0) { throw new IllegalArgumentException("Data arrays must not be null, have the same length, and not be empty"); } int n = xData.length; double sumX = 0.0, sumY = 0.0; for (int i = 0; i < n; i++) { sumX += xData[i]; sumY += yData[i]; } double meanX = sumX / n; double meanY = sumY / n; double covariance = 0.0; for (int i = 0; i < n; i++) { covariance += (xData[i] - meanX) * (yData[i] - meanY); } covariance /= (n - 1); // 使用样本协方差公式 return covariance; } public static void main(String[] args) { double[] xData = {1.0, 2.0, 3.0, 4.0, 5.0}; double[] yData = {2.0, 3.0, 5.0, 7.0, 11.0}; double covariance = calculateCovariance(xData, yData); System.out.println("Covariance: " + covariance); } }
这两个示例分别展示了如何使用 Java 计算一组数据的方差和两组数据之间的协方差。注意,