Skip to main content
Petanque Life

Analytics & Statistics

F20.04 11 features

At a glance

Analytics & Statistics turns raw survey responses into a publishable evidence base, combining descriptive statistics, inferential tests, NPS calculation, verbatim text analysis, and ranking aggregation in a real-time dashboard. A no-code query builder supports ad-hoc crosstabs and segment exploration, while small-cell suppression and privacy-aware CSV/XLSX/JSON exports keep results GDPR-compliant from the first chart all the way to the final dataset shared with stakeholders.

How it works

Every submitted response is streamed into an analytics pipeline that recomputes per-question statistics in near real time. Numeric and Likert questions surface mean, median, standard deviation, and a 95% confidence interval; NPS questions render the classic split into promoters (9-10), passives (7-8), and detractors (0-6) with the score and trend over time. Categorical relationships are explored with Chi-square tests and Cramer's V to quantify association strength, while numeric pairs use Pearson and Spearman correlations rendered as an interactive matrix with significance shading.

Segment breakdowns let analysts pivot any question by age band, gender, region, license type, or discipline, and the dashboard plots side-by-side distributions with a small-cell suppression rule (k-anonymity, n<5) that automatically masks segments too small to publish without re-identification risk. Open-ended text answers feed a text-analysis module that produces TF-IDF term scores, k-means clusters of similar verbatims, and word-frequency clouds so qualitative themes surface alongside quantitative results. Ranking questions are aggregated with the Borda count to produce a robust collective preference order independent of vote splitting.

For ad-hoc work a query builder exposes filters, breakdowns, and crosstab axes in a no-code form; queries can be saved, shared, or pinned to the dashboard. Exports are available as CSV, XLSX, and JSON, and they re-apply the survey's privacy mode at export time — anonymous datasets strip user_id columns, pseudonymous exports replace it with the hash, and attributed exports require explicit role permission and are logged for audit. All charts include sample-size badges and confidence-interval whiskers so consumers can judge reliability at a glance.

Key capabilities

  • Descriptive statistics with 95% confidence intervals and classic NPS scoring
  • Correlation matrix (Pearson/Spearman) and Cramer's V for association strength
  • Chi-square tests for segment independence with significance highlighting
  • Segment breakdowns by age, gender, region, license type, and discipline
  • k-anonymity small-cell suppression (n<5) for GDPR-safe publication
  • Text analysis (TF-IDF, k-means, frequency) and Borda count for rankings
  • Ad-hoc query builder with crosstabs and CSV/XLSX/JSON export honoring privacy mode

In practice

A federation analyst opens the dashboard the morning after closing a consultation. NPS sits at +24 with a clear upward trend across four weeks of fieldwork. She pivots satisfaction by region and the small-cell rule masks two micro-regions, prompting her to widen the breakdown to NUTS-2.

A correlation matrix shows a strong Spearman link between perceived officiating quality and willingness to renew licenses, and a Chi-square test confirms the relationship is significant across age bands. She drops the open-ended verbatims into the text analysis module, identifies a cluster about junior coaching, builds an ad-hoc crosstab to size it by club, and exports a privacy-aware XLSX for the board pack.

Features in this subsystem

11
ID Status Features
F20.04.01 Shipped Descriptive statistics — mean, median, stddev, 95% CI per question. KI:t använder z för n ≥ 30 och t(0,975, n−1) för n < 30 ur husets ENDA Student-t (internal/stats); talen rundas EN gång vid utgången och determinismen ligger i ORDNINGEN, så två körningar ger byte-identisk per_question ✅ greenfield ff38043a.m-4
F20.04.02 Shipped NPS calculation — classic Net Promoter Score with promoters/passives/detractors. nps_score: null bärs ALLTID av ett nps_reason — en nolla där ett tal saknas är en osanning som ser mätt ut ✅ greenfield ff38043a.m-4
F20.04.03 Shipped Correlation matrix — Pearson/Spearman between numeric questions. Spearman räknas som Pearson på MIDRANKS, aldrig med d²-genvägen (som bara gäller utan bindningar — och en femgradig skala över hundra svar är nästan bara bindningar); de rena funktionerna är låsta mot EXTERNT räknat scipy-facit, inklusive genvägens FEL värde. Paren lagras med sina RÅA p-värden och FDR tillämpas vid LÄSNING över familjen; diagonalen serveras aldrig ✅ greenfield ff38043a.m-5
F20.04.04 Shipped Cramer's V — categorical association strength. Ligger ADDITIVT på segmentsvaret (fråga × dimension) och på query builderns korstabell, med strength som SERVERNS dom över sitt eget tal — aldrig ytans ✅ greenfield ff38043a.m-5
F20.04.05 Shipped Chi-square test — independence test for segment breakdowns. p ur husets ENDA regulariserade gammafunktion (internal/stats, låst mot scipy.special.gammaincc). Grinden är FAIL-CLOSED: en tabell med en DOLD cell testas aldrig (ett chi² där är en ekvation vars enda obekanta ÄR den dolda cellen, och för df = 1 löser den den exakt), och varje E_ij ≥ 5 är ett KRAV — varje utebliven dom bär sitt skäl ✅ greenfield ff38043a.m-5
F20.04.06 Shipped Segment breakdowns — pivot by age, gender, region, license type, discipline, role. Läses ur den FÖRBERÄKNADE snapshoten; unknown är ett eget segment, och en icke-attribuerad enkät svarar segments: null med no_demographics i stället för en tom tabell ✅ greenfield ff38043a.m-4
F20.04.07 Shipped Small-cell suppression — k-anonymity (n<5) for GDPR compliance. EN ren funktion (survey.SuppressTable) med FYRA deklarerade anropare och en tröskel som ALDRIG är ett argument från en tenant: cellen blir "<5", marginalen räknas om utan den, och en ensam kvarvarande cell på en RAD döljs komplementärt till fixpunkt ✅ greenfield ff38043a.m-4
F20.04.08 Shipped Text analysis — TF-IDF, k-means clustering, word frequency. Bär TERMER och TAL — aldrig en mening, ett utdrag eller en människa (tabellen saknar med flit varje sådan kolumn, och frånvaron MÄTS). En term redovisas först vid df ≥ 5 OLIKA svar och ett kluster först vid 5 medlemmar; de bortsållade räknas. Klustrets etikett är dess EGET toppord — ett påhittat tema byggs aldrig. Porten TextAnalysisProvider väljs ur miljön (local/sidecar/none); okänt namn är ett FEL ✅ greenfield ff38043a.m-5
F20.04.09 Shipped Borda count — ranking aggregation for preference questions. k − rank per post med first_place_count bredvid; vid lika poäng avgör frågans EGEN alternativordning (tie-regeln för dubbla rangtal är bokförd som EJ TILLÄMPLIG — ett rankingsvar är en ordnad lista) ✅ greenfield ff38043a.m-4
F20.04.10 Shipped Query builder — ad-hoc analytics queries with crosstab support. Suppressionens TREDJE anropare (samma SuppressTable som segmentpivoten — båda döljer bevisligen exakt samma celler), marginaler och procent omräknade ur enbart de SYNLIGA cellerna, och en filtrerad population under tröskeln besvaras UTAN tabell. Differencing-risken är bokförd och motad med fyra synliga medel: eget mandat surveys:query, tak 30/min, EN audit-rad per körning (frågans form, aldrig ett svar) och populationsgolvet ✅ greenfield ff38043a.m-5
F20.04.11 Shipped Export — CSV, XLSX, JSON export with privacy mode enforcement. Hävden ligger i SQL-FRÅGAN: anonym ⇒ 403 export_blocked_anonymous FÖRE taket, pseudonym ⇒ hashen utan att demografikolumnerna ens väljs, attribuerad ⇒ de sju kolumnerna med "<5" per KOLUMN medan raden står kvar. Husets EGEN OOXML-skrivare — ingen ny beroende ✅ greenfield ff38043a.m-4