@obraia/intervalo-confianca
Version: 
Algoritmo para calcular intervalo de confia entre duas amostras
82 lines (72 loc) • 2.95 kB
JavaScript
import { IntervaloConfianca } from './lib/intervalo_confianca.js';
import { TabelaDistribuicao } from './lib/tabela_distribuicao.js';
/**
 * Se o intervalo da diferença contém zero, então as soluções não são diferentes, ou seja, precisa de mais testes para diferenciá-las.
 * Se o intervalo da diferença é positivo, neste exemplo, a segunda solução é a melhor.
 * Se o intervalo da diferença é negativo, neste exemplo, a primeira solução é a melhor.
 *
 * @param {Array<number>} amostra_a
 * @param {Array<number>} amostra_b
 * @param {number} casas_decimais
 * @param {'0.600'| '0.700'| '0.800'| '0.900'| '0.950'| '0.975'| '0.990'| '0.995' | string} nivel_confianca
 *
 * @returns {{
 *  intervalo_confianca_a: Array<number>;
 *  desvio_padrao_a: number;
 *  historico_desvio_padrao_a: Array<string>;
 *  media_a: number;
 *  intervalo_confianca_b: Array<number>;
 *  desvio_padrao_b: number;
 *  historico_desvio_padrao_b: Array<string>;
 *  media_b: number;
 *  intervalo_confianca_diferenca: Array<number>;
 *  desvio_padrao_diferenca: number;
 *  historico_desvio_padrao_diferenca: Array<string>;
 *  media_diferenca: number;
 * }}
 */
function main(amostra_a, amostra_b, nivel_confianca, casas_decimais = 3) {
  const valor_tabela = nivel_confianca.includes('@')
    ? parseFloat(nivel_confianca)
    : TabelaDistribuicao.obter_valor(amostra_a.length, nivel_confianca);
  const {
    media: media_a,
    desvio_padrao: desvio_padrao_a,
    historico_desvio_padrao: historico_desvio_padrao_a,
    intervalo_confianca: intervalo_confianca_a,
    historico_intervalo_confianca: historico_intervalo_confianca_a,
  } = IntervaloConfianca.calcular_intervalo(amostra_a, valor_tabela, casas_decimais);
  const {
    media: media_b,
    desvio_padrao: desvio_padrao_b,
    intervalo_confianca: intervalo_confianca_b,
    historico_desvio_padrao: historico_desvio_padrao_b,
    historico_intervalo_confianca: historico_intervalo_confianca_b,
  } = IntervaloConfianca.calcular_intervalo(amostra_b, valor_tabela, casas_decimais);
  const diferenca = IntervaloConfianca.diferenca(amostra_a, amostra_b);
  const {
    media: media_diferenca,
    desvio_padrao: desvio_padrao_diferenca,
    historico_desvio_padrao: historico_desvio_padrao_diferenca,
    intervalo_confianca: intervalo_confianca_diferenca,
    historico_intervalo_confianca: historico_intervalo_confianca_diferenca,
  } = IntervaloConfianca.calcular_intervalo(diferenca, valor_tabela, casas_decimais);
  return {
    media_a,
    desvio_padrao_a,
    historico_desvio_padrao_a,
    intervalo_confianca_a,
    historico_intervalo_confianca_a,
    media_b,
    desvio_padrao_b,
    historico_desvio_padrao_b,
    intervalo_confianca_b,
    historico_intervalo_confianca_b,
    media_diferenca,
    desvio_padrao_diferenca,
    historico_desvio_padrao_diferenca,
    intervalo_confianca_diferenca,
    historico_intervalo_confianca_diferenca,
  };
}
export default main;