コード例 #1
0
 public FuncionWeibull3(double[] eventos) : base(eventos)
 {
     try
     {
         DistribucionContinua = new WeibullDistribution(shape, scale);
         Resultado            = new ResultadoAjuste(StringFDP, StringInversa, DistribucionContinua.StandardDeviation, DistribucionContinua.Mean, DistribucionContinua.Variance, this);
     }
     catch (Exception)
     {
         Resultado = null;
     }
 }
コード例 #2
0
 public FuncionExponencial(double[] eventos) : base(eventos)
 {
     try
     {
         DistribucionContinua = new ExponentialDistribution();
         DistribucionContinua.Fit(eventos);
         this.L    = ((ExponentialDistribution)DistribucionContinua).Rate.ToString("0.0000");
         Resultado = new ResultadoAjuste(StringFDP, StringInversa, DistribucionContinua.StandardDeviation, DistribucionContinua.Mean, DistribucionContinua.Variance, this);
     }
     catch (Exception)
     {
         Resultado = null;
     }
 }
コード例 #3
0
 public FuncionPoisson(double[] eventos) : base(eventos)
 {
     try
     {
         DistribucionDiscreta = new PoissonDistribution();
         DistribucionDiscreta.Fit(eventos);
         lambda    = ((PoissonDistribution)DistribucionDiscreta).Lambda.ToString("0.0000");
         Resultado = new ResultadoAjuste(StringFDP, StringInversa, DistribucionDiscreta.StandardDeviation, DistribucionDiscreta.Mean, DistribucionDiscreta.Variance, this);
     }
     catch (Exception)
     {
         Resultado = null;
     }
 }
コード例 #4
0
 public FuncionUniforme(double[] eventos) : base(eventos)
 {
     try
     {
         DistribucionContinua = new UniformContinuousDistribution();
         DistribucionContinua.Fit(eventos);
         A         = ((UniformContinuousDistribution)DistribucionContinua).Minimum.ToString("0.0000");
         B         = ((UniformContinuousDistribution)DistribucionContinua).Maximum.ToString("0.0000");
         Resultado = new ResultadoAjuste(StringFDP, StringInversa, DistribucionContinua.StandardDeviation, DistribucionContinua.Mean, DistribucionContinua.Variance, this);
     }
     catch (Exception)
     {
         Resultado = null;
     }
 }
コード例 #5
0
 public FuncionNormal(double[] eventos) : base(eventos)
 {
     try
     {
         DistribucionContinua = new NormalDistribution();
         DistribucionContinua.Fit(eventos);
         media     = ((NormalDistribution)DistribucionContinua).Mean.ToString("0.0000");
         sigma     = ((NormalDistribution)DistribucionContinua).StandardDeviation.ToString("0.0000");
         Resultado = new ResultadoAjuste(StringFDP, StringInversa, DistribucionContinua.StandardDeviation, DistribucionContinua.Mean, DistribucionContinua.Variance, this);
     }
     catch (Exception)
     {
         Resultado = null;
     }
 }
コード例 #6
0
 public FuncionBinomial(double[] eventos) : base(eventos)
 {
     try
     {
         DistribucionDiscreta = new BinomialDistribution();
         DistribucionDiscreta.Fit(eventos);
         n         = ((BinomialDistribution)DistribucionDiscreta).NumberOfTrials.ToString("0.0000");
         p         = ((BinomialDistribution)DistribucionDiscreta).ProbabilityOfSuccess.ToString("0.0000");
         Resultado = new ResultadoAjuste(StringFDP, StringInversa, DistribucionDiscreta.StandardDeviation, DistribucionDiscreta.Mean, DistribucionDiscreta.Variance, this);
     }
     catch (Exception)
     {
         Resultado = null;
     }
 }
コード例 #7
0
 public FuncionLogistica(double[] eventos) : base(eventos)
 {
     try
     {
         double media = eventos.Average();
         int    n     = eventos.Count();
         double sigma = eventos.Sum(x => Math.Pow(x - media, 2)) / n;
         DistribucionContinua = new LogisticDistribution(media, sigma);
         this.MU   = ((LogisticDistribution)DistribucionContinua).Location.ToString("0.0000");
         this.S    = ((LogisticDistribution)DistribucionContinua).Scale.ToString("0.0000");
         Resultado = new ResultadoAjuste(StringFDP, StringInversa, DistribucionContinua.StandardDeviation, DistribucionContinua.Mean, DistribucionContinua.Variance, this);
     }
     catch (Exception)
     {
         Resultado = null;
     }
 }
コード例 #8
0
 private void SetupPantallaSegunFDP(object boton, string nombreFuncion, ResultadoAjuste funcion)
 {
     BotonSeleccionado((Control)boton);
     CambiarLblGraficoFuncion(nombreFuncion);
     CambiarRepresentacionFuncionEInversa(funcion);
     GraficarLineaFDP(funcion.FDP);
     GraficarLineaInversa(funcion.FDP);
     resultadoSeleccionado = funcion;
     lbxGenerados.Items.Clear();
     if (nombreFuncion.Contains("Poisson") || nombreFuncion.Contains("Binomial"))
     {
         lblGraficoFuncionInversa.Text = "Función Acumulada";
     }
     else
     {
         lblGraficoFuncionInversa.Text = "Función Inversa";
     }
 }
コード例 #9
0
 public FuncionLogLogistica(double[] eventos) : base(eventos)
 {
     try
     {
         double[] eventosOrdenados = eventos.OrderBy(x => x).ToArray();
         double   alfa             = eventos.Count() % 2 == 0 ? (eventosOrdenados.ElementAt(eventos.Count() / 2) + eventosOrdenados.ElementAt((eventos.Count() / 2) + 1)) / 2 : eventos.OrderBy(x => x).ElementAt((eventos.Count() / 2) + 1);
         this.A = alfa.ToString("0.0000");
         double media = eventos.Average();
         int    n     = eventos.Count();
         double sigma = eventos.Sum(x => Math.Pow(x - media, 2)) / n;
         double k     = Math.Sqrt(Math.Pow(sigma, 2) / (Math.Pow(sigma, 2) + Math.Pow(media, 2)));
         Func <double, double> function = x => Math.Sqrt(1 - (x / Math.Tan(x))) - k;
         BrentSearch           search   = new BrentSearch(function, (Math.PI / 2) * k, Math.Sqrt(3) * k);
         search.FindRoot();
         double beta = Math.PI / search.Solution;
         this.B = beta.ToString("0.0000");
         DistribucionContinua = new LogLogisticDistribution(alfa, beta);
         Resultado            = new ResultadoAjuste(StringFDP, StringInversa, DistribucionContinua.StandardDeviation, DistribucionContinua.Mean, DistribucionContinua.Variance, this);
     }
     catch (Exception)
     {
         Resultado = null;
     }
 }
コード例 #10
0
 private void CambiarRepresentacionFuncionEInversa(ResultadoAjuste fdp)
 {
     lblFuncion.Text        = fdp.Funcion;
     lblFuncionInversa.Text = fdp.Inversa;
 }
コード例 #11
0
        private void CalcularYOrdenarFunciones()
        {
            try
            {
                double[] arrEventos = eventosParaAjuste.ToArray();


                resultadoFuncionWeibull0_5 = FactoryFuncionDensidad.Instancia(FuncionDensidad.WEIBULL05, arrEventos).Resultado;
                if (resultadoFuncionWeibull0_5 != null)
                {
                    lResultadosOrdenados.Add(FuncionDensidad.WEIBULL05, resultadoFuncionWeibull0_5);
                }
                resultadoFuncionBinomial = FactoryFuncionDensidad.Instancia(FuncionDensidad.BINOMIAL, arrEventos).Resultado;
                if (resultadoFuncionBinomial != null)
                {
                    lResultadosOrdenados.Add(FuncionDensidad.BINOMIAL, resultadoFuncionBinomial);
                }
                resultadoFuncionExponencial = FactoryFuncionDensidad.Instancia(FuncionDensidad.EXPONENCIAL, arrEventos).Resultado;
                if (resultadoFuncionExponencial != null)
                {
                    lResultadosOrdenados.Add(FuncionDensidad.EXPONENCIAL, resultadoFuncionExponencial);
                }
                resultadoFuncionLogistica = FactoryFuncionDensidad.Instancia(FuncionDensidad.LOGISTICA, arrEventos).Resultado;
                if (resultadoFuncionLogistica != null)
                {
                    lResultadosOrdenados.Add(FuncionDensidad.LOGISTICA, resultadoFuncionLogistica);
                }
                resultadoFuncionLogNormal = FactoryFuncionDensidad.Instancia(FuncionDensidad.LOG_NORMAL, arrEventos).Resultado;
                if (resultadoFuncionLogNormal != null)
                {
                    lResultadosOrdenados.Add(FuncionDensidad.LOG_NORMAL, resultadoFuncionLogNormal);
                }
                resultadoFuncionLogLogistica = FactoryFuncionDensidad.Instancia(FuncionDensidad.LOG_LOGISTICA, arrEventos).Resultado;
                if (resultadoFuncionLogLogistica != null)
                {
                    lResultadosOrdenados.Add(FuncionDensidad.LOG_LOGISTICA, resultadoFuncionLogLogistica);
                }
                resultadoFuncionNormal = FactoryFuncionDensidad.Instancia(FuncionDensidad.NORMAL, arrEventos).Resultado;
                if (resultadoFuncionNormal != null)
                {
                    lResultadosOrdenados.Add(FuncionDensidad.NORMAL, resultadoFuncionNormal);
                }
                resultadoFuncionWeibull1_5 = FactoryFuncionDensidad.Instancia(FuncionDensidad.WEIBULL15, arrEventos).Resultado;
                if (resultadoFuncionWeibull1_5 != null)
                {
                    lResultadosOrdenados.Add(FuncionDensidad.WEIBULL15, resultadoFuncionWeibull1_5);
                }
                resultadoFuncionWeibull3 = FactoryFuncionDensidad.Instancia(FuncionDensidad.WEIBULL3, arrEventos).Resultado;
                if (resultadoFuncionWeibull3 != null)
                {
                    lResultadosOrdenados.Add(FuncionDensidad.WEIBULL3, resultadoFuncionWeibull3);
                }
                resultadoFuncionPoisson = FactoryFuncionDensidad.Instancia(FuncionDensidad.POISSON, arrEventos).Resultado;
                if (resultadoFuncionPoisson != null)
                {
                    lResultadosOrdenados.Add(FuncionDensidad.POISSON, resultadoFuncionPoisson);
                }
                resultadoFuncionUniforme = FactoryFuncionDensidad.Instancia(FuncionDensidad.UNIFORME, arrEventos).Resultado;
                if (resultadoFuncionUniforme != null)
                {
                    lResultadosOrdenados.Add(FuncionDensidad.UNIFORME, resultadoFuncionUniforme);
                }
                resultadoFuncionWeibull5 = FactoryFuncionDensidad.Instancia(FuncionDensidad.WEIBULL5, arrEventos).Resultado;
                if (resultadoFuncionWeibull5 != null)
                {
                    lResultadosOrdenados.Add(FuncionDensidad.WEIBULL5, resultadoFuncionWeibull5);
                }
                lResultadosOrdenados = lResultadosOrdenados.OrderBy(x => x.Value.FDP.CalcularDesvio(eventosSimplificados)).ToDictionary(x => x.Key, y => y.Value);
            }
            catch
            {
                mostrarMensaje("Error al calcular y ordenar las funciones", Color.FromArgb(255, 89, 89));
            }
        }