From 489e704073bc92bfc7e3f58cd8112c3e91261f78 Mon Sep 17 00:00:00 2001 From: marker-sss Date: Tue, 8 Apr 2025 18:46:15 -0400 Subject: [PATCH 1/2] STD added to numericQuestionAnalysis Added std deviation calculations and displays on website --- .../NumericQuestionAnalytics/index.tsx | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/apps/form-builder/src/components/FormSubmissions/NumericQuestionAnalytics/index.tsx b/apps/form-builder/src/components/FormSubmissions/NumericQuestionAnalytics/index.tsx index 25e52b76..861b3faf 100644 --- a/apps/form-builder/src/components/FormSubmissions/NumericQuestionAnalytics/index.tsx +++ b/apps/form-builder/src/components/FormSubmissions/NumericQuestionAnalytics/index.tsx @@ -16,12 +16,15 @@ export default function NumericQuestionAnalytics({ question, responses, }: Props) { - const { mean, median, mode } = useMemo(() => { + const { mean, median, mode, standardDeviation } = useMemo(() => { let mean: number; let median: number; + let standardDeviation: number; let mode: number[] = []; const numbers: number[] = []; let total = 0; + let sdTotal = 0; + let stdMean: number; const occurrences: number[] = []; let maxOccur = 2; @@ -35,6 +38,11 @@ export default function NumericQuestionAnalytics({ const number = questionResponse.answer; total += number; numbers.push(number); + + // calculate mean for std + stdMean = ((total / numbers.length) * 100) / 100; + sdTotal += number - stdMean; + if (!occurrences[number]) occurrences[number] = 0; occurrences[number]++; } @@ -68,10 +76,17 @@ export default function NumericQuestionAnalytics({ } }); + // calculate standard deviation + standardDeviation = Math.sqrt(Math.pow(sdTotal, 2) / numbers.length); + + // Rounds standard deviation to hundredths place + standardDeviation = Math.round(standardDeviation * 100) / 100; + return { mean, mode, median, + standardDeviation, }; }, [responses]); @@ -88,6 +103,9 @@ export default function NumericQuestionAnalytics({ Mode: {mode.length ? mode.join(', ') : 'None'} + + Standard Deviation: {standardDeviation} + ); } From 1c67ae68dae9c3a0617bf338990b70e7ce4c595a Mon Sep 17 00:00:00 2001 From: marker-sss Date: Tue, 22 Apr 2025 18:15:58 -0400 Subject: [PATCH 2/2] Fixed STD (maybe) --- .../FormSubmissions/NumericQuestionAnalytics/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/form-builder/src/components/FormSubmissions/NumericQuestionAnalytics/index.tsx b/apps/form-builder/src/components/FormSubmissions/NumericQuestionAnalytics/index.tsx index 861b3faf..25fc48a0 100644 --- a/apps/form-builder/src/components/FormSubmissions/NumericQuestionAnalytics/index.tsx +++ b/apps/form-builder/src/components/FormSubmissions/NumericQuestionAnalytics/index.tsx @@ -41,7 +41,7 @@ export default function NumericQuestionAnalytics({ // calculate mean for std stdMean = ((total / numbers.length) * 100) / 100; - sdTotal += number - stdMean; + sdTotal += Math.pow(number - stdMean, 2); if (!occurrences[number]) occurrences[number] = 0; occurrences[number]++; @@ -77,7 +77,7 @@ export default function NumericQuestionAnalytics({ }); // calculate standard deviation - standardDeviation = Math.sqrt(Math.pow(sdTotal, 2) / numbers.length); + standardDeviation = Math.sqrt(sdTotal / numbers.length); // Rounds standard deviation to hundredths place standardDeviation = Math.round(standardDeviation * 100) / 100;