Ejemplo n.º 1
0
        //method which plots the acf and pacf for the data
        public void HookUpData()
        {
            System.Windows.Forms.Cursor old = this.Cursor;
            this.Cursor = Cursors.AppStarting;

            this.show();
            this.hidesubset();

            //if you pick an alternative tab, then you want the ACF and PACF for the previously differenced data set to be hidden
            ARIMAac2.Hide();

            this.P = new Statistics(Tseries);

            //calculate the autcorrelation and partial autocorrelation of the data
            List<double> sac = P.sampleautocorrelation(P.D, 50);
            sac.RemoveAt(0);
            List<double> spac = P.samplepartialautocorrelation(P.D, 50);
            spac.RemoveAt(0);

            //we will use the following code to create the horizontal lines in the ACF and PACF plots
            int n = this.P.D.Count();
            double l1 = 1.96 / Math.Sqrt(n);
            double l2 = -1.96 / Math.Sqrt(n);
            List<double> line1 = new List<double>();
            List<double> line2 = new List<double>();
            for (int i = 0; i < sac.Count(); i++)
            {
                line1.Add(l1);
                line2.Add(l2);
            }
            //plot of the sample acf and pacf
            ARIMAac1.Titles.Clear();
            ARIMAac1.Titles.Add(new Title("Sample ACF and PACF", Docking.Top, new Font("Verdana", 8f, FontStyle.Bold), Color.Black));
            ARIMAac1.ChartAreas[0].AxisY.LabelStyle.Font = ARIMAac1.ChartAreas[0].AxisX.LabelStyle.Font = new Font("Arial", 11, GraphicsUnit.Pixel);
            ARIMAac1.ChartAreas[0].RecalculateAxesScale();
            ARIMAac1.Series.Clear();
            var series1 = new System.Windows.Forms.DataVisualization.Charting.Series
            {
                Name = "ACF",
                Color = System.Drawing.Color.Blue,
                IsVisibleInLegend = true,
                IsXValueIndexed = true,
                ChartType = SeriesChartType.Column
            };
            this.ARIMAac1.Series.Add(series1);
            int z = 0;
            foreach (double dd in sac)
            {
                series1.Points.AddXY(z + 1, sac[z]);
                z++;
            }
            var series2 = new System.Windows.Forms.DataVisualization.Charting.Series
            {
                Name = "PACF",
                Color = System.Drawing.Color.Red,
                IsVisibleInLegend = true,
                IsXValueIndexed = true,
                ChartType = SeriesChartType.Column
            };
            this.ARIMAac1.Series.Add(series2);
            z = 0;
            foreach (double dd in spac)
            {
                series2.Points.AddXY(z + 1, spac[z]);
                z++;
            }

            var series21 = new System.Windows.Forms.DataVisualization.Charting.Series
               {
               Name = "Series21",
               Color = System.Drawing.Color.Black,
               IsVisibleInLegend = false,
               IsXValueIndexed = true,
               ChartType = SeriesChartType.Line
               };
            this.ARIMAac1.Series.Add(series21);
            z = 0;
            foreach (double dd in line1)
            {
                series21.Points.AddXY(z + 1, line1[z]);
                z++;
            }

            var series22 = new System.Windows.Forms.DataVisualization.Charting.Series
            {
                Name = "Series22",
                Color = System.Drawing.Color.Black,
                IsVisibleInLegend = false,
                IsXValueIndexed = true,
                ChartType = SeriesChartType.Line
            };
            this.ARIMAac1.Series.Add(series22);
            z = 0;
            foreach (double dd in line2)
            {
                series22.Points.AddXY(z + 1, line2[z]);
                z++;
            }
            ARIMAac1.Invalidate();
            ARIMAac1.ChartAreas[0].AxisY.Maximum = Math.Max(P.maximum(sac), P.maximum(spac));

            this.Cursor = old;
        }