public FuncionWeibull0_5(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; } }
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; } }
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; } }
public FuncionLogNormal(double[] eventos) : base(eventos) { try { DistribucionContinua = new LognormalDistribution(); DistribucionContinua.Fit(eventos); media = ((LognormalDistribution)DistribucionContinua).Mean.ToString("0.0000"); sigma = ((LognormalDistribution)DistribucionContinua).StandardDeviation.ToString("0.0000"); Resultado = new ResultadoAjuste(StringFDP, StringInversa, DistribucionContinua.StandardDeviation, DistribucionContinua.Mean, DistribucionContinua.Variance, this); } catch (Exception) { Resultado = null; } }
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; } }
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; } }
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; } }
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; } }