function bartlettsTest(...inputSample) { // Number of Samples const k = inputSample.length; const n = inputSample.map( (sampleData) => sampleData.length ); // Sample calculatedMeans const calculatedMeans = inputSample.map( (sampleData) => sampleData.reduce( (sum, value) => sum + value, 0 ) / sampleData.length ); // Sample Variances const variances = inputSample.map( (sampleData, i) => sampleData.reduce( (sum, value) => sum + Math.pow( value - calculatedMeans[i], 2 ), 0 ) / (sampleData.length - 1) ); // Overall mean const overallMean = calculatedMeans.reduce( (sum, mean, i) => sum + (n[i] - 1) * mean, 0 ) / (n.reduce( (sum, value) => sum + value, 0 ) - k); // Chi-square statistic const chiSquare = (n.reduce( (sum, value) => sum + value, 0 ) - k) * Math.log( variances.reduce( ( prod, variance, i ) => prod * Math.pow( variance, n[i] - 1 ), 1 ) ) - n.reduce( (sum, value) => sum + (value - 1), 0 ); // Degrees of freedom const degreesOfFreedom = k - 1; // P-value const pValue = 1 - Math.pow( Math.E, -chiSquare / (2 * degreesOfFreedom) ); return { chiSquare: chiSquare, degreesOfFreedom: degreesOfFreedom, pValue: pValue, }; } // Example usage const sampleData1 = [1, 2, 3, 4, 5]; const sampleData2 = [2, 3, 4, 5, 6]; const sampleData3 = [3, 4, 5, 6, 7]; const result = bartlettsTest( sampleData1, sampleData2, sampleData3 ); console.log(result);