In Baviera, una media complessiva di \(2{,}33\) certifica l'idoneità al Gymnasium \(2{,}34\) no. A questo netto punto di svolta, l'ordine di due arrotondamenti può determinare da che parte si colloca un bambino. Günther Felbinger discute le potenziali conseguenze di questo effetto di arrotondamento in un post sul suo blog . Per puro interesse, ho calcolato personalmente gli effetti per tutte le combinazioni di voti consentite dal modello.
La mia domanda principale è: con quale frequenza l'arrotondamento anticipato ai voti di tutte le materie porta a un tipo di calcolo scolastico diverso rispetto ai calcoli che utilizzano medie di materia non arrotondate? Inoltre, sarebbe interessante vedere cosa cambia se le medie delle singole materie (come suggerito) vengono inizialmente arrotondate a una sola cifra decimale.
Secondo l'articolo 6 del Regolamento bavarese per la scuola primaria, la media dei voti viene calcolata in base ai voti ottenuti in tedesco, matematica e studi locali e generali. Il regolamento attuativo specifica i limiti: fino a \(2{,}33\) e fino a \(2{,}66\) . Nel seguente modello di calcolo, ogni media complessiva viene troncata a due cifre decimali e non ulteriormente arrotondata. Pertanto, ad esempio...
\[
\frac{2{,}33+2{,}34+2{,}34}{3}=2{,}3366\ldots \longrightarrow 2{,}33.
\]
Questo è cruciale per la classificazione: \(2{,}3366\ldots\) non diventa \(2{,}34\) , ma \(2{,}33\) ed è quindi ancora sufficiente per la scuola elementare.
La voce iniziale illustra l'arrotondamento anticipato con i valori medi specifici del soggetto ipotizzati \(1{,}6\) , \(2{,}6\) e \(2{,}6\) . Da questi, vengono prima derivati i voti interi \(2\) , \(3\) e \(3\) . La loro media è
\[
\frac{2+3+3}{3}=2{,}6666\ldots \longrightarrow 2{,}66,
\]
il che significa che lo studente non ha i requisiti per la scuola secondaria di primo grado. Senza arrotondare ai voti interi, tuttavia, il risultato nell'esempio ipotetico sarebbe...
\[
\frac{1{,}6+2{,}6+2{,}6}{3}=2{,}2666\ldots \longrightarrow 2{,}26.
\]
Nel secondo esempio, l'arrotondamento funziona nella direzione opposta: \(2{,}4\) , \(3{,}4\) e \(2{,}4\) diventano i valori interi di nota \(2\) , \(3\) e \(2\) , ufficialmente \(2{,}33\) . I valori non arrotondati, tuttavia, risultano in \(2{,}73\) . Gli esempi dimostrano chiaramente l'effetto. Tuttavia, non rivelano ancora con quale frequenza si verifica o quali sarebbero le conseguenze di un diverso metodo di arrotondamento.
Pertanto, per il mio calcolo utilizzo uno spazio di risultati chiaro. La media di ciascun soggetto può essere uno dei \(501\) valori al suo interno.
\[
1{,}00,\, 1{,}01,\, 1{,}02,\, \ldots, \, 5{,}99, \, 6{,}00
\]
Supponiamo. Assegno lo stesso peso a tutte le combinazioni ordinate di tedesco, matematica e studi locali e generali. Pertanto, ci sono
\[
501^3=125\,751\,501
\]
Casi. Il modello è quindi inequivocabile, ma artificiale: presuppone medie dei soggetti equamente distribuite, l'indipendenza dei tre soggetti e intervalli di esattamente un centesimo. Non riflette la distribuzione reale dei bambini delle scuole primarie bavaresi.
Per tre soggetti medi \(d,m,h\) scriviamo
\[
A(d,m,h)=\frac{\left\lfloor 100\cdot\frac{d+m+h}{3}\right\rfloor}{100}
\]
per la media complessiva troncata a due cifre decimali. Ora confrontiamo tre metodi di calcolo.:
\\[
\begin{aligned}
A_0 &= A(\operatorname{round}(d),\operatorname{round}(m),\operatorname{round}(h)),\\
A_1 &= A(\operatorname{round}_1(d),\operatorname{round}_1(m),\operatorname{round}_1(h)),\\
A_\mathrm{ref} &= A(d,m,h).
\end{aligned}
\\]
\(A_0\) corrisponde al calcolo utilizzando voti interi, \(A_1\) alla proposta con una cifra decimale e \(A_\mathrm{ref}\) al riferimento non arrotondato all'interno del modello. Il calcolo può essere implementato direttamente in Rust , ad esempio.:
const SCHOOL_GYMNASIUM: i32 = 0;
const SCHOOL_REALSCHULE: i32 = 1;
const SCHOOL_MITTELSCHULE: i32 = 2;
const FLOAT_TOLERANCE: f64 = 1e-9;
#[derive(Clone, Copy, Default)]
struct Statistic {
conflict_count: u64,
total_count: u64,
}
fn determine_school(average: f64) -> i32 {
if average <= 2.33 {
return SCHOOL_GYMNASIUM;
}
if average <= 2.66 {
return SCHOOL_REALSCHULE;
}
SCHOOL_MITTELSCHULE
}
fn calculate_average(note_deutsch: f64, note_mathe: f64, note_hsu: f64) -> f64 {
let average = (note_deutsch + note_mathe + note_hsu) / 3.0;
((average + FLOAT_TOLERANCE) * 100.0).floor() / 100.0
}
fn round_to_whole_grade(grade: f64) -> f64 {
grade.round()
}
fn round_to_one_decimal(grade: f64) -> f64 {
(grade * 10.0).round() / 10.0
}
fn normalize_grade(grade: f64) -> f64 {
(grade * 100.0).round() / 100.0
}
fn percentage(count: u64, total: u64) -> f64 {
count as f64 / total as f64 * 100.0
}
fn main() {
let mut combination_count = 0;
let mut official_reference_conflicts = 0;
let mut official_proposal_conflicts = 0;
let mut proposal_reference_conflicts = 0;
let mut statistics = [Statistic::default(); 4];
let mut note_deutsch = 1.0;
while note_deutsch <= 6.0 {
let mut note_mathe = 1.0;
while note_mathe <= 6.0 {
let mut note_hsu = 1.0;
while note_hsu <= 6.0 {
combination_count += 1;
let official_average = calculate_average(
round_to_whole_grade(note_deutsch),
round_to_whole_grade(note_mathe),
round_to_whole_grade(note_hsu),
);
let proposed_average = calculate_average(
round_to_one_decimal(note_deutsch),
round_to_one_decimal(note_mathe),
round_to_one_decimal(note_hsu),
);
let reference_average =
calculate_average(note_deutsch, note_mathe, note_hsu);
let official_school = determine_school(official_average);
let proposed_school = determine_school(proposed_average);
let reference_school = determine_school(reference_average);
if official_average == 3.0 {
statistics[0].total_count += 1;
if reference_school != SCHOOL_MITTELSCHULE {
statistics[0].conflict_count += 1;
}
}
if official_average == 2.66 {
statistics[1].total_count += 1;
if reference_school == SCHOOL_GYMNASIUM {
statistics[1].conflict_count += 1;
}
}
if official_average == 2.33 {
statistics[2].total_count += 1;
if reference_school != SCHOOL_GYMNASIUM {
statistics[2].conflict_count += 1;
}
}
if official_average == 2.66 {
statistics[3].total_count += 1;
if reference_school == SCHOOL_MITTELSCHULE {
statistics[3].conflict_count += 1;
}
}
if official_school != reference_school {
official_reference_conflicts += 1;
}
if official_school != proposed_school {
official_proposal_conflicts += 1;
}
if proposed_school != reference_school {
proposal_reference_conflicts += 1;
}
note_hsu = normalize_grade(note_hsu + 0.01);
}
note_mathe = normalize_grade(note_mathe + 0.01);
}
note_deutsch = normalize_grade(note_deutsch + 0.01);
}
println!(
"official/reference: {}%",
percentage(official_reference_conflicts, combination_count)
);
println!(
"official/proposal: {}%",
percentage(official_proposal_conflicts, combination_count)
);
println!(
"proposal/reference: {}%",
percentage(proposal_reference_conflicts, combination_count)
);
for (index, statistic) in statistics.iter().enumerate() {
println!(
"#{}: {}% ({}/{})",
index + 1,
percentage(statistic.conflict_count, statistic.total_count),
statistic.conflict_count,
statistic.total_count
);
}
}
La piccola tolleranza in calculate_average impedisce un valore come \(2{,}67\) a causa della sua rappresentazione in virgola mobile binaria, è stato erroneamente considerato \(2{,}669999\ldots\) viene interrotto. normalize_grade Inoltre, riduce ciascun valore del ciclo a una griglia di centesimo di ordine. Esistono almeno due possibili valori medi differenti. \(1/300\) a parte; la tolleranza di \(10^{-9}\) è quindi sufficientemente piccolo da non modificare alcun caso limite reale.
Il programma viene compilato e avviato con
rustc -O calc.rs && ./calc
Il programma itera attraverso tutte le \(125\,751\,501\) combinazioni e restituisce:
| Confronto | Porzione |
| Voti interi contro medie per materia non arrotondate | \(10{,}4411\,\%\) |
| Voti interi confrontati con la proposta con una cifra decimale | \(10{,}1521\,\%\) |
| Proposta con una cifra decimale rispetto alle medie non arrotondate degli esperti | \(0{,}6615\,\%\) |
Il valore centrale per me è \(10{,}4411\,\%\): In più di una combinazione su dieci, l'arrotondamento anticipato al voto intero porta a una tipologia di scuola calcolata diversa rispetto al riferimento non arrotondato. Questa proporzione descrive esclusivamente l'effetto dell'arrotondamento all'interno del modello scelto.
Il passaggio alle medie degli esperti con una cifra decimale porterebbe a una classificazione diversa nel \(10{,}1521\,\%\) di tutti i casi del modello rispetto al metodo precedente. Tuttavia, il terzo confronto è cruciale: rispetto al riferimento non arrotondato, il metodo con una cifra decimale lascia solo \(0{,}6615\,\%\) casi devianti. La deviazione dal riferimento diminuisce quindi del
\[
1-\frac{0{,}6615}{10{,}4411}\approx 93{,}7\,\%.
\]
Questa, a mio avviso, è proprio la conseguenza discutibile dell'attuale metodo di calcolo: i risultati specifici per materia ipotizzati rimangono invariati; solo il momento in cui avviene l'arrotondamento può alterare la tipologia di scuola calcolata. Sebbene il calcolo con una cifra decimale non elimini completamente questo effetto, lo riduce significativamente all'interno del modello.
Questi dati, tuttavia, non ci dicono quanti bambini siano effettivamente interessati. I voti delle pagelle non sono necessariamente calcolati come medie arrotondate meccanicamente, il rendimento scolastico non è distribuito in modo uniforme né indipendente, e la scelta del tipo di scuola non dipende esclusivamente da questi tre dati. Il mio calcolo risponde a una domanda più specifica: con quale frequenza l'arrotondamento modifica il voto calcolato quando tutte le combinazioni con la cifra dei centesimi sono ugualmente probabili?
Infine, un confronto con il post originale: il tasso complessivo menzionato lì, circa \(10\,\%\) è vicino al mio \(10{,}4411\,\%\) . Tuttavia, i miei calcoli non confermano i quattro casi individuali, ciascuno riportato come \(1/6 \approx 17\,\%\) Per "scuola secondaria non frequentata con \(3{,}00\) ", "liceo non frequentato con \(2{,}33\) ", "liceo frequentato con \(2{,}66\) " e "scuola secondaria frequentata con \(2{,}66\) \(1{,}4615\,\%\) \(59{,}6096\,\%\) \(1{,}2023\,\%\) \(62{,}9395\,\%\) .
I quattro valori sono probabilità condizionali con gruppi di riferimento di dimensioni diverse. Senza uno spazio campionario definito diversamente \(1/6\) non può essere derivato da essi. Il mio calcolo conferma quindi l'effetto di arrotondamento, ma non queste singole probabilità. In ogni caso, le affermazioni sul numero effettivo di bambini interessati richiederebbero distribuzioni reali dei voti e le loro dipendenze.