方差性和协方差性计算公式以及java示例

方差性(Variance)

定义

方差是衡量随机变量或一组数值与其平均数(即数学期望)之间的偏离程度的量。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。

计算公式

方差的公式有两种常见的形式,它们分别基于总体和样本。 总体方差: 如果 X 是一个随机变量,且其总体均值为 μ,那么总体方差的

公式为:

其中,N 是总体的容量,xi是 X 的第 i 个观测值。

样本方差: 如果我们有一个大小为 n 的样本 x,且其样本均值为

 ,那么样本方差

的公式为:

注意这里分母是 n−1 而不是 n。这是因为在计算样本方差时,我们通常希望估计的是总体的方差。使用 n−1 作为分母可以得到一个无偏的估计量(即估计的期望值等于真实的总体方差)。

在实际应用中,当我们谈论一个数据集的方差时,我们通常指的是样本方差。

代码语言:javascript代码运行次数:0运行复制
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 示例
代码语言:javascript代码运行次数:0运行复制
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 计算一组数据的方差和两组数据之间的协方差。注意,

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-05-16,如有侵权请联系 cloudcommunity@tencent 删除数学统计javadouble数据