有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java计算置信区间

我正在寻找一种方法,它采用或不采用参数来计算置信区间
我不想要apache方法, 这只是一个简单的方法或som类型的代码


共 (2) 个答案

  1. # 1 楼答案

    我的知识是有限的,它基本上归结为完成一个在线任务,而不是一组预期的答案(https://www.hackerrank.com/challenges/stat-warmup

    然而,据我所知,给出的答案中有错误,我想纠正这些错误。 我的资料来源几乎是维基百科https://en.wikipedia.org/wiki/Confidence_interval#Basic_Steps

    /**
     *
     * @return int[]{lower, upper}, i.e. int array with Lower and Upper Boundary of the 95% Confidence Interval for the given numbers
     */
    private static double[] calculateLowerUpperConfidenceBoundary95Percent(int[] givenNumbers) {
    
        // calculate the mean value (= average)
        double sum = 0.0;
        for (int num : givenNumbers) {
            sum += num;
        }
        double mean = sum / givenNumbers.length;
    
        // calculate standard deviation
        double squaredDifferenceSum = 0.0;
        for (int num : givenNumbers) {
            squaredDifferenceSum += (num - mean) * (num - mean);
        }
        double variance = squaredDifferenceSum / givenNumbers.length;
        double standardDeviation = Math.sqrt(variance);
    
        // value for 95% confidence interval, source: https://en.wikipedia.org/wiki/Confidence_interval#Basic_Steps
        double confidenceLevel = 1.96;
        double temp = confidenceLevel * standardDeviation / Math.sqrt(givenNumbers.length);
        return new double[]{mean - temp, mean + temp};
    }
    
  2. # 2 楼答案

    这是计算置信区间的代码

    /**
     *
     * @author alaaabuzaghleh
     */
    public class TestCI {
        public static void main(String[] args) { 
            int maximumNumber = 100000;
            int num = 0;
            double[] data = new double[maximumNumber];
    
            // first pass: read in data, compute sample mean
            double dataSum = 0.0;
            while (num<maximumNumber) {
                data[num] = num*10;
                dataSum  += data[num];
                num++;
            }
            double ave = dataSum / num;
    
    
            double variance1 = 0.0;
            for (int i = 0; i < num; i++) {
                variance1 += (data[i] - ave) * (data[i] - ave);
            }
            double variance = variance1 / (num - 1);
            double standardDaviation= Math.sqrt(variance);
            double lower = ave - 1.96 * standardDaviation;
            double higher = ave + 1.96 * standardDaviation;
    
            // print results
            System.out.println("average          = " + ave);
            System.out.println("sample variance  = " + variance);
            System.out.println("sample standard daviation    = " + standardDaviation);
            System.out.println("approximate confidence interval");
            System.out.println("[ " + lower + ", " + higher + " ]");
    }
    }