Il Modello di Leslie: come prevedere la crescita (o il declino) di popolazioni, ecosistemi e basi clienti con l’algebra lineare

Cerca:

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
modello di leslie applicato al marketing

Quante volte hai guardato il totale clienti del tuo database – diciamo 50.000 utenti attivi – e ti sei detto ‘ok, siamo solidi’?

Peccato che quel numero sia un bugiardo cronico.

Dentro ci sono migliaia di utenti appena arrivati che domani potrebbero churnare tutti, e una minoranza di veterani che tengono in piedi l’intero fatturato. Se domani i veterani rallentano i referral o la retention iniziale crolla di un 5%, quel 50.000 può diventare 30.000 in un paio d’anni senza che tu te ne accorga subito.

Esiste un modo matematico, elegante e spietato, per smascherare l’illusione: si chiama Modello di Leslie, nato in ecologia per prevedere se una specie si estinguerà o esploderà. Oggi lo usiamo (con qualche adattamento) per capire se una startup vivrà o morirà.

Preparati: non è una sfera di cristallo, è algebra lineare che ti dice esattamente dove stai sbagliando.

Il Modello di Leslie nasce proprio per dare ordine a questa complessità. Invece di guardare alla popolazione come a un numero unico e indistinto, la suddivide in classi d’età (o coorti). È una struttura matematica elegante che utilizza l’algebra lineare per rispondere a due domande fondamentali:

  1. Quanti saremo tra un anno? (Evoluzione temporale)

  2. Quale sarà la nostra struttura interna? (Distribuzione stabile)

Come funziona in sintesi

Il cuore del modello è la Matrice di Leslie. Immaginatela come un “motore” che, a ogni ciclo, trasforma la popolazione attuale in quella del periodo successivo seguendo due regole biologiche precise:

  • La Fertilità (Prima riga): Quanti nuovi individui vengono generati da ogni classe d’età.

  • La Sopravvivenza (Sottodiagonale): Quale percentuale di individui riesce a “compiere gli anni” e passare alla classe d’età successiva.

Perché è uno strumento prezioso

La vera forza di questo modello non è solo la capacità di fare proiezioni, ma quella di rivelare il destino asintotico di un sistema. Attraverso l’analisi degli autovalori, il modello ci dice se, a lungo termine, il sistema è destinato a una crescita infinita, a un declino inarrestabile o a un equilibrio perfetto.

Non è solo ecologia; è la scienza della sopravvivenza applicata ai dati. Ci permette di capire quali leve muovere — ad esempio, se proteggere i giovani o favorire la riproduzione degli adulti — per cambiare radicalmente la traiettoria di tutto il sistema.

Attenzione a non confondere la mappa con il territorio.

La Matrice di Leslie è deterministica: presume che il futuro segua le regole del passato. In un ecosistema biologico stabile, questo funziona. In una startup, dove un competitor o una nuova feature possono cambiare i tassi di ‘sopravvivenza’ (retention) in una notte, il modello non deve essere una profezia, ma una diagnosi.

Se il modello dice che morirai tra 12 mesi, non è una condanna: è l’avvertimento che devi cambiare i parametri della matrice oggi.

Pubblicità

Costruire una matrice di Leslie come processo di traduzione

Costruire una matrice di Leslie è un processo di traduzione: prendiamo i dati osservati sul campo (o nel database) e li disponiamo in una griglia che descrive il “flusso” della vita.

Immaginiamo di partire da una tabella che riassume il censimento di una popolazione (o l’analisi di una coorte di clienti). Ecco i passaggi pratici.

1. La Tabella dei Dati Grezzi

Per costruire la matrice, abbiamo bisogno di tre colonne fondamentali per ogni classe d’età:

  • Classe d’Età (i)
  • Popolazione Iniziale (ni)
  • Tasso di Fertilità (fi)
  • Tasso di Sopravvivenza (si)

0-1 anno — 100 — 0.0 — 0.5 (il 50% arriva a 1 anno)

1-2 anni — 50 — 2.0 — 0.3 (il 30% arriva a 2 anni)

2-3 anni — 30 — 1.5 — 0.0 (nessuno vive oltre i 3 anni)

2. Disporre i valori nella Matrice L

Una matrice di Leslie è sempre una matrice quadrata [math]n \times n[/math],
dove
[math]n[/math] è il numero di classi d’età.

Seguendo l’esempio sopra (3 classi), avremo una matrice [math]3 \times 3[/math].

La Prima Riga: La Fabbrica dei Nuovi Nati

La prima riga raccoglie tutti i tassi di fertilità [math]f_1, f_2, f_3[/math].
Rappresenta il contributo di ogni classe alla creazione della classe “0”.

[math]\displaystyle
\begin{aligned}
L &=
\begin{bmatrix}
\mathbf{f_1} & \mathbf{f_2} & \mathbf{f_3} \\
0 & 0 & 0 \\
0 & 0 & 0
\end{bmatrix}
\\[6pt]
&\rightarrow
\begin{bmatrix}
\mathbf{0.0} & \mathbf{2.0} & \mathbf{1.5} \\
0 & 0 & 0 \\
0 & 0 & 0
\end{bmatrix}
\end{aligned}
[/math]

Forse potrebbe interessarti anche:  Budget Marketing ed Equazioni Differenziali: Perché la matematica premia chi spende subito

La Sottodiagonale: Il Passaggio di Tempo

I tassi di sopravvivenza [math]s_i[/math] non vanno sulla diagonale principale, ma in quella subito sotto.

Questo perché descrivono il movimento degli individui che “invecchiano” passando dalla classe
[math]i[/math] alla classe [math]i+1[/math].

[math]\displaystyle
\begin{aligned}
L &=
\begin{bmatrix}
0.0 & 2.0 & 1.5 \\
\mathbf{s_1} & 0 & 0 \\
0 & \mathbf{s_2} & 0
\end{bmatrix}
\\[6pt]
&\rightarrow
\begin{bmatrix}
0.0 & 2.0 & 1.5 \\
\mathbf{0.5} & 0 & 0 \\
0 & \mathbf{0.3} & 0
\end{bmatrix}
\end{aligned}
[/math]

3. Implementazione veloce in Python

Se hai molti dati, non scriverai la matrice a mano. Puoi automatizzarla così:


import numpy as np

# Dati estratti dalla tabella
fertilita = [0.0, 2.0, 1.5]
sopravvivenza = [0.5, 0.3] # Nota: è un elemento in meno rispetto alle classi

# Creiamo una matrice di zeri
n_classi = len(fertilita)
L = np.zeros((n_classi, n_classi))

# Riempiamo la prima riga
L[0, :] = fertilita

# Riempiamo la sottodiagonale
# np.diag(v, k) crea una matrice con il vettore v nella diagonale k
L += np.diag(sopravvivenza, k=-1)

print("Matrice di Leslie generata:")
print(L)
Matrice di Leslie generata:
[[0.  2.  1.5]
 [0.5 0.  0. ]
 [0.  0.3 0. ]]

Un dettaglio fondamentale: la durata del periodo

Un errore comune è mescolare i tempi.

Se le classi d’età sono divise in “fasi di 1 anno”, allora anche la proiezione della matrice deve avanzare di 1 anno alla volta.

Se decidi di usare classi di 6 mesi, tutti i tassi (fertilità e sopravvivenza) devono essere ricalcolati su base semestrale.

Cosa succede se un individuo resta nella stessa classe?

Nel modello di Leslie standard, si assume che tutti passino alla classe successiva o muoiano.

Se invece stai modellando qualcosa dove si può “restare” nella stessa classe (come un cliente che rimane “Silver” per più mesi), allora i valori di sopravvivenza andranno anche sulla diagonale principale.

In quel caso, tecnicamente, staresti costruendo una Matrice di Lefkovitch.

Cosa succederebbe a questa popolazione tra 5 anni partendo da un gruppo di 100 neonati?

Questa è una simulazione affascinante perché mostra come una popolazione partendo da un’unica classe d’età non cresca in modo lineare, ma proceda a “ondate”.

Utilizzando la matrice che abbiamo costruito:

[math]\displaystyle
\begin{aligned}
L &=
\begin{bmatrix}
0.0 & 2.0 & 1.5 \\
0.5 & 0 & 0 \\
0 & 0.3 & 0
\end{bmatrix}
\end{aligned}
[/math]

E il vettore iniziale:

[math]n_0 = [100, 0, 0][/math]
(100 neonati, zero adulti, zero anziani).

Ecco l’evoluzione anno dopo anno

Cronaca di 5 anni

Anno 0: [math][100, 0, 0][/math] (Popolazione totale: 100)

Abbiamo solo i 100 neonati.

Anno 1: [math][0, 50, 0][/math] (Popolazione totale: 50)

Cosa è successo? I neonati non si riproducono (fertilità 0). Metà sono morti e l’altra metà (50) è passata alla classe 1-2 anni. La popolazione si è dimezzata.

Anno 2: [math][100, 0, 15][/math] (Popolazione totale: 115)

Cosa è successo? I 50 individui della classe 1-2 anni hanno prodotto 2 nuovi nati ciascuno
[math]50 \times 2 = 100[/math].
Inoltre, il 30% dei 50 è sopravvissuto diventando anziano
[math]50 \times 0.3 = 15[/math].
Boom demografico!

Anno 3: [math][22.5, 50, 0][/math] (Popolazione totale: 72.5)

Cosa è successo? I 15 anziani hanno prodotto dei nati
[math]15 \times 1.5 = 22.5[/math],
mentre i 100 nati dell’anno precedente sono diventati giovani adulti
[math]100 \times 0.5 = 50[/math].

Anno 4: [math][100, 11.25, 15][/math] (Popolazione totale: 126.25)

I 50 adulti producono 100 nuovi nati. La popolazione torna a salire.

Anno 5: [math][45, 50, 3.375][/math] (Popolazione totale: 98.375)

Analisi dei risultati: Cosa abbiamo imparato?

L’effetto “Eco” (Onde Demografiche)

Noterai che la popolazione totale fa un’altalena:

100 → 50 → 115 → 72 → 126 → 98

Questo accade perché abbiamo iniziato con una popolazione sbilanciata (solo neonati).
In biologia, questo spiega perché dopo un evento catastrofico che uccide solo alcune classi d’età, la ripresa non è mai fluida.

Il Tasso di Crescita Reale R0

Se guardiamo alla vita di un singolo individuo nato oggi:

  • Ha il 50% di probabilità di arrivare a fare 2 figli
    (contributo medio: [math]0.5 \times 2 = 1[/math]).
  • Ha il 15%
    ([math]0.5 \times 0.3[/math])
    di probabilità di arrivare a fare 1.5 figli da anziano
    (contributo medio: [math]0.15 \times 1.5 = 0.225[/math]).

In totale, un neonato produce in media 1.225 figli nella sua vita.

Poiché questo numero è maggiore di 1, sappiamo con certezza che la popolazione crescerà all’infinito a lungo termine, nonostante le oscillazioni iniziali.

Forse potrebbe interessarti anche:  Bilancio Mercato del Lavoro 2025: Come l’AI ha ridefinito le competenze e le professioni emergenti

Verso la Stabilità

Se continuassimo la simulazione per 20 o 30 anni, le oscillazioni diventerebbero sempre più piccole.

La popolazione smetterebbe di fare “salti” e inizierebbe a crescere a un tasso costante, mantenendo una proporzione fissa tra giovani, adulti e anziani (l’autovettore dominante).

Il codice per verificarlo

Se vuoi farlo girare sul tuo computer per vedere i decimali esatti:


import numpy as np

L = np.array([[0.0, 2.0, 1.5],
              [0.5, 0.0, 0.0],
              [0.0, 0.3, 0.0]])

n = np.array([100, 0, 0])

for anno in range(1, 6):
    n = L @ n
    print(f"Anno {anno}: {n} | Totale: {n.sum():.2f}")
Anno 1: [ 0. 50.  0.] | Totale: 50.00
Anno 2: [100.   0.  15.] | Totale: 115.00
Anno 3: [22.5 50.   0. ] | Totale: 72.50
Anno 4: [100.    11.25  15.  ] | Totale: 126.25
Anno 5: [45.    50.     3.375] | Totale: 98.38

Curiosità critica

Se questa fosse un’azienda, l’Anno 1 sarebbe il momento del “panico”:
il budget di marketing (neonati) è finito e nessuno sta ancora portando nuovi clienti.

È il classico periodo di latenza di ogni investimento strutturale.

Pubblicità

Come cambierebbe il destino della popolazione aumentando la sopravvivenza dei piccoli?

Vediamo l’effetto di questo piccolo cambiamento.
In biologia e nel business, questo si chiama “effetto leva”:
un miglioramento marginale in una fase critica si riflette in modo esponenziale sulla crescita totale.

Scenario B: Aumentiamo la sopravvivenza del 10%

Il tasso di sopravvivenza originale dei neonati era 0.5 (50%).
Aumentarlo del 10% significa portarlo a 0.55 (55%).

La nuova matrice diventa:

[math]\displaystyle
\begin{aligned}
L_2 &=
\begin{bmatrix}
0.0 & 2.0 & 1.5 \\
\mathbf{0.55} & 0 & 0 \\
0 & 0.3 & 0
\end{bmatrix}
\end{aligned}
[/math]

Ecco cosa succede ai nostri 100 neonati

Anno 0 — Scenario A: 100 | Scenario B: 100

Anno 1 — 50 → 55 (+10%)

Anno 2 — 115 → 124.75 (+8.5%)

Anno 3 — 72.5 → 83.12 (+14.6%)

Anno 4 — 126.25 → 148.62 (+17.7%)

Anno 5 — 98.37 → 123.01 (+25%)

Analisi del Risultato: La Magia dell’Interesse Composto

In soli 5 anni, un aumento del 10% nella sopravvivenza iniziale ha generato una popolazione totale superiore del 25%.

Perché accade questo?

  • Più riproduttori:
    Non abbiamo solo “più sopravvissuti”, ma più individui che entrano nella classe 1-2 anni, la più fertile.
  • Ciclo di feedback positivo:
    Quei pochi individui extra producono a loro volta nuovi nati negli anni successivi, creando un effetto valanga.

Il Tasso di Crescita a Lungo Termine

Se calcoliamo l’autovalore dominante:

  • Scenario A: [math]\lambda_1 \approx 1.07[/math]
  • Scenario B: [math]\lambda_1 \approx 1.11[/math]

Potrebbe sembrare una differenza piccola, ma a 20 anni:

  • Scenario A: circa 380 individui
  • Scenario B: circa 780 individui

Il doppio della popolazione con solo un 5% di sopravvivenza in più.

Conclusione Applicativa

  • In Ecologia:
    proteggere i nidi è spesso più efficace che aumentare la fertilità.
  • Nel Marketing:
    aumentare la retention iniziale è più potente che acquisire nuovi clienti.

Spesso dimentichiamo che la matematica della biologia e quella del business parlano la stessa lingua: quella dei sistemi dinamici.

Nel marketing, sostituendo le “classi di età” con le “coorti di anzianità”, la matrice di Leslie si trasforma in uno strumento predittivo potentissimo per il calcolo del Customer Lifetime Value (LTV) e della stabilità del database clienti.

Il Parallelo: Dalla Biologia al Business

Ecco come i parametri biologici si “traducono” nel linguaggio della Retention:

Elemento Modello di Leslie Corrispettivo nel Marketing (SaaS/Subscription)
Classe di età Mesi di abbonamento (es. Mese 1, Mese 2, Mese 3+).
Tasso di Sopravvivenza Retention Rate (1 -Churn Rate). La probabilità che un cliente al mese i rinnovi per il mese i+1.
Tasso di Fecondità Referral Rate o Acquisizione Organica. Quanti nuovi clienti vengono portati, in media, da un cliente esistente di quella specifica coorte.
Autovalore Dominante (λ1) Tasso di crescita organica del business. Se λ1 > 1, la base clienti cresce esponenzialmente solo grazie ai rinnovi e ai referral.

Esempio Pratico: Matrice di Retention “Leslie-style”

Immaginiamo una startup con abbonamento mensile. Notiamo che i clienti sono molto volatili nei primi 3 mesi, ma chi resta oltre il sesto mese diventa un “promoter” (porta nuovi clienti).

Pensate a Netflix o Spotify. Per loro, un utente che ha superato il ‘mese di prova’ (Classe 1) ha un valore biologico totalmente diverso da uno che è abbonato da tre anni (Classe Veterani). Il primo è a rischio ‘mortalità’ altissimo, il secondo è una roccia che genera cassa. Trattarli come identici nel calcolo del fatturato futuro è un suicidio finanziario. Ecco perché i CFO amano questo tipo di algebra.

La logica della Matrice M:

  • Prima riga (Acquisizione/Referral): I clienti “anziani” (classe 3) portano nuovi iscritti con un tasso dello 0.10 (10% di referral).

  • Sottodiagonale (Retention): * Solo il 70% passa dal Mese 1 al Mese 2.

    • L’85% passa dal Mese 2 al Mese 3.

import numpy as np

# Matrice di "Retention e Referral"
# [Mese 1, Mese 2, Mese 3+]
M = np.array([
    [0.00, 0.02, 0.10], # Referral: i veterani portano nuovi clienti
    [0.70, 0.00, 0.00], # Il 70% sopravvive al primo mese
    [0.00, 0.85, 0.95]  # L'85% del mese 2 resta, e il 95% dei veterani rinnova
])

# Stato iniziale: 1000 nuovi iscritti (tutti nel Mese 1)
clienti_t0 = np.array([1000, 0, 0])

# Previsione a 12 mesi
clienti = clienti_t0
for _ in range(12):
    clienti = M @ clienti

print(f"Base clienti dopo un anno: {np.round(clienti)}")
print(f"Totale clienti: {int(np.sum(clienti))}")
Base clienti dopo un anno: [ 59.  41. 591.]
Totale clienti: 691

Commento

  1. Codice Leslie (Biologico):  L’uso di np.diag(sopravvivenza, k=-1) è il modo più efficiente (“pythonico”) per costruire la sottodiagonale.

  2. Codice Retention (Business):

    • La matrice M è costruita correttamente per lo scopo descritto.

    • L’elemento M[2,2] = 0.95 è cruciale: trasforma la matrice in una Matrice di Lefkovitch (o a stadi), permettendo ai clienti di rimanere nell’ultimo stadio (“Mese 3+”). Senza questo, tutti i clienti morirebbero dopo il 3° mese.

    • Partendo da 1000 utenti al Mese 1:

      • Mese 2: Rimangono 700 (1000 * 0.7).

      • Referral: Iniziano ad arrivare nuovi utenti generati dai “veterani”.

Forse potrebbe interessarti anche:  Propensity Modeling: 6 Esercizi Pratici per Prevedere il Comportamento d'Acquisto

Questo esercizio dimostra l’inerzia del sistema.

Se guardi l’output [59. 41. 591.]:

  • Siamo partiti con 1000 nuovi utenti.

  • Dopo un anno, abbiamo solo circa 59 “nuovi” utenti (generati dai referral).

  • Tuttavia, la base totale è di 691 utenti, sostenuta quasi interamente dai 591 “Veterani” (l’ultima classe).

Il commento per il lettore: Questo esercizio svela una verità scomoda per molte aziende: la crescita organica lenta. Nonostante un tasso di retention stellare sui veterani (95%), il sistema si sta contraendo (da 1000 a 691). L’esercizio dimostra matematicamente che un ottimo prodotto (alta retention) non basta se l’acquisizione (o il referral delle prime fasi) è troppo debole. Il “motore” perde pezzi più velocemente di quanto ne crei, nonostante la base solida. È un perfetto esempio di “Death Spiral” lenta, invisibile guardando solo il churn rate mensile aggregato.

Perché questo approccio è interessante per un Manager?

  1. Identifica il “Secchio Bucato”: Se l’autovalore dominante è inferiore a 1, significa che nonostante il marketing (acquisizione esterna), la tua base clienti è destinata a contrarsi a meno di non migliorare la retention o i referral.

  2. Distribuzione Stabile (Steady State): Proprio come con i conigli, dopo un po’ di tempo la percentuale di clienti “novizi” rispetto ai “veterani” si stabilizza. Conoscere questa percentuale permette di prevedere con precisione il Cash Flow futuro.

  3. Analisi di Sensibilità: Puoi simulare: “Cosa succede se aumento la retention del primo mese del 5% rispetto ad aumentare il referral dei veterani del 10%?”. La matrice ti dice istantaneamente quale leva ha più impatto sul lungo periodo.

Riflessione critica: Mentre i conigli muoiono inevitabilmente, un cliente nell’ultima classe (Mese 3+) può teoricamente restare per sempre. Per questo, nell’ultima cella della diagonale (Mn,n), spesso inseriamo il tasso di retention dei clienti “fidelizzati” invece dello zero, trasformando la matrice di Leslie in una Matrice di Transizione di Markov.

Pubblicità