예제 #1
0
        public List <Tuple <int, decimal, DistribuicaoBinomialCalculoEntity> > CalculoK(DistribuicaoBinomialEntity entidade)
        {
            var listaCalculosK = new List <Tuple <int, decimal, DistribuicaoBinomialCalculoEntity> >();

            foreach (var K in entidade.K)
            {
                /* N[fatorial] - K[fatorial] * (N - K [Fatorial]) */
                var calculobase  = MathCoreApp.Fatorial(entidade.N) / (MathCoreApp.Fatorial(K) * MathCoreApp.Fatorial(entidade.N - K));
                var calculoA     = Math.Pow((double)entidade.P, K);
                var calculoB     = Math.Pow((double)entidade.Q, (double)(entidade.N - K));
                var calculoFinal = (decimal)(calculobase * calculoA * calculoB) * 100;

                var calculo = new DistribuicaoBinomialCalculoEntity()
                {
                    A = $"{entidade.N}",
                    B = $"{K}",
                    C = $"{entidade.N - K}",

                    D = $"{(double)entidade.P}",
                    E = $"{(double)entidade.Q}",
                };

                listaCalculosK.Add(new Tuple <int, decimal, DistribuicaoBinomialCalculoEntity>((int)K, Math.Round(calculoFinal, 2), calculo));
            }
            return(listaCalculosK);
        }
예제 #2
0
 public MedidasTendenciaEntity Calcular(List <decimal> inputData)
 {
     return(new MedidasTendenciaEntity
     {
         Media = MathCoreApp.MediaComum(inputData),
         Mediana = MathCoreApp.Mediana(inputData),
         Moda = MathCoreApp.Moda(inputData)
     });
 }
        public DistribuicaoUniformeEntity Build(DistribuicaoUniformeEntity entidade)
        {
            entidade.Media        = (entidade.B + entidade.A) / 2;
            entidade.DesvioPadrao = Math.Round((decimal)Math.Sqrt(Math.Pow((double)(entidade.B - entidade.A), 2) / 12), 2);
            entidade.Variancia    = Math.Round(MathCoreApp.Quadrado(entidade.DesvioPadrao), 2);

            if (entidade.TipoEntrada != -1)
            {
                entidade.X             = CalcularX(entidade);
                entidade.Probabilidade = (decimal)(((decimal)entidade.X / (entidade.B - entidade.A))) * 100;
            }

            return(entidade);
        }
예제 #4
0
        public MedidasDispersaoEntity Calcular(List <decimal> listaXifi, decimal media, bool amostra)
        {
            var variancia = Variancia(listaXifi, media, listaXifi.Count, amostra);

            var DP = MathCoreApp.RaizQuadrada(variancia);

            var CV = MathCoreApp.Porcentagem(DP, media);

            return(new MedidasDispersaoEntity
            {
                CV = CV,
                Variancia = variancia,
                DP = DP,
            });
        }
        public static decimal VarianciaContinua(List <decimal> listaXi, List <decimal> listaFi, decimal media, decimal N, bool amostra)
        {
            if (amostra)
            {
                N = N - 1;
            }
            var listaNova = new List <decimal>();


            for (var i = 0; i < listaXi.Count; i++)
            {
                var conta = MathCoreApp.Quadrado(Math.Round(listaXi[i] - media, 2)) * listaFi[i];
                listaNova.Add(conta);
            }
            var soma = listaNova.Sum();

            return(Math.Round((decimal)(soma / (N)), 2));
        }
예제 #6
0
        public MedidasDispersaoContainerEntity Build(BaseInputsEntity baseInputs)
        {
            var media = MathCoreApp.MediaComum(baseInputs.InputValue);

            var inputValueQuadrado = MathCoreApp.SomaTodosAoQuadrado(baseInputs.InputValue, media);

            var medidasDispersao = Calcular(baseInputs.InputValue, media, baseInputs.Amostra);

            return(new MedidasDispersaoContainerEntity()
            {
                Media = media,
                Rol = baseInputs.Rol,
                InputValue = baseInputs.InputValue,
                InputValueQuadrado = inputValueQuadrado,
                SomaInputValueQuadrado = inputValueQuadrado.Sum(),
                MedidasDispersaoEntity = medidasDispersao
            });
        }
예제 #7
0
        /// <summary>
        /// Comum
        /// </summary>
        /// <param name="media"></param>
        /// <param name="N"></param>
        /// <returns></returns>
        public static decimal Variancia(List <decimal> listaXI, decimal media, int N, bool amostra)
        {
            if (amostra)
            {
                N = N - 1;
            }

            var listaNova = new List <decimal>();

            foreach (var item in listaXI)
            {
                listaNova.Add(MathCoreApp.Quadrado(Math.Round(item - media, 2)));
            }

            var soma = listaNova.Sum();

            return(Math.Round((decimal)(soma / (N)), 2));
        }
        public VariavelContinuaContainerEntity Build(BaseInputsEntity baseInputs)
        {
            var xMAx = baseInputs.InputValue.Max();
            var xMin = baseInputs.InputValue.Min();

            var al = (xMAx - xMin) + 1;

            var numeroPreK = (int)Math.Sqrt(baseInputs.InputValue.Count());
            var K          = new List <decimal> {
                numeroPreK - 1, numeroPreK, numeroPreK + 1
            };

            var Ic = GetIC(al, K);


            var minimo = xMin;
            var maximo = minimo + (int)Ic.IC;

            var f             = new List <int>();
            var fePorcentList = new List <decimal>();

            var listaTabelaQuantitativa = new List <VariavelContinuaEntity>();

            for (int i = 1; i <= Ic.Classes; i++)
            {
                var fePorcent = (decimal)(baseInputs.Rol.Count(x => x >= minimo && x < maximo) / (decimal)baseInputs.Rol.Count()) * 100;
                var count     = baseInputs.Rol.Count(x => x >= minimo && x < maximo);

                f.Add(count);
                fePorcentList.Add(fePorcent);

                var xi = MediaComum(new List <decimal>()
                {
                    minimo, maximo
                });

                listaTabelaQuantitativa.Add(new VariavelContinuaEntity
                {
                    Classe    = i,
                    XI        = xi,
                    Range     = new[] { minimo, maximo },
                    FI        = count,
                    FEPorcent = Math.Round(fePorcent, 2),
                    F         = f.Sum(),
                    FPorcent  = Math.Round(fePorcentList.Sum(), 2),
                    XIFI      = xi * count,
                });

                minimo = maximo;
                maximo = maximo + (int)Ic.IC;
            }

            var media = listaTabelaQuantitativa.Sum(e => e.XIFI) / listaTabelaQuantitativa.Sum(e => e.FI);

            var variancia = VarianciaContinua(listaTabelaQuantitativa.Select(q => q.XI).ToList(), listaTabelaQuantitativa.Select(x => x.FI).ToList(), media, listaTabelaQuantitativa.Sum(y => y.FI), baseInputs.Amostra);
            var dp        = MathCoreApp.RaizQuadrada(variancia);
            var cv        = MathCoreApp.Porcentagem(dp, media);

            var medidasDispersao = new MedidasDispersaoEntity
            {
                Variancia = variancia,
                DP        = dp,
                CV        = cv
            };

            var medidasTendencia = new MedidasTendenciaEntity
            {
                Media   = media,
                Mediana = MedianaQuantitativa(listaTabelaQuantitativa, Ic.IC),
                Moda    = ModaQuantitativa(listaTabelaQuantitativa)
            };

            return(new VariavelContinuaContainerEntity
            {
                InputValue = baseInputs.InputValue,
                Rol = baseInputs.Rol,
                VariavelContinuaEntity = listaTabelaQuantitativa,
                MinLinha = xMin,
                MaxLinha = xMAx,
                AL = al,
                K = K,
                IC = Ic,
                MedidasDispersaoEntity = medidasDispersao,
                MedidasTendenciaEntity = medidasTendencia,
                EXIFI = listaTabelaQuantitativa.Sum(entity => entity.XIFI),
                EFI = listaTabelaQuantitativa.Sum(entity => entity.FI),
            });
        }