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 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), }); }