方差递推公式

320 阅读1分钟
data = {1, 2, 5, 4, 5, 6, 7, 8};
A = {1};
B = {0};
currentA = 1;
currentB = 0;
For[n = 2, n <= 8, n++, {
   currentA = currentA + (data[[n]] - currentA)/n;
   
   A = AppendTo[A, currentA];
   currentB = currentB + (data[[n]] - A[[n - 1]])*(data[[n]] - A[[n]]);
   B = AppendTo[B, currentB];
   }];
A
B
ListPlot[A, AxesLabel -> {"n", "均值"}]
ListPlot[B, AxesLabel -> {"n", "方差"}]

    public class Accumulator  
    {  
        private double m;  
        private double s;  
        private int N;  
        public void addDateValue(double x)  
        {  
            N++;  
            s=s+1.0*(N-1)/N*(x-m)*(x-m);  
            m=m+(x-m)/N;  
        }  
        public double mean()  
        {  
            return  m;  
        }  
        public double var()  
        {  
            return s/(N-1);  
        }  
        public double stddev()  
        {  
            return Math.sqrt(this.var());  
        }  
    } 

blog.csdn.net/u014485485/…