Il Tempo di Permanenza Qualificato come Indicatore di Engagement: Un’Analisi Statistica Basata sulla Distribuzione Binomiale Negativa

Cerca:

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Analisi QPT con Distribuzione Binomiale Negativa

Introduzione: Cos’è il QPT?

Il Qualified Page Time (QPT) rappresenta una metrica avanzata per misurare il tempo qualitativo che gli utenti trascorrono interagendo con i contenuti di una piattaforma digitale. A differenza delle metriche tradizionali come il semplice tempo di permanenza, il QPT considera solo i momenti effettivamente spesi in attività significative, escludendo i tempi inattivi. Ciò consente di ottenere un’immagine più accurata del reale coinvolgimento dell’utente.

I dati utilizzati in questo studio sono simulati, ma rappresentano il tipo di report che potremmo ottenere attraverso un’implementazione personalizzata di strumenti come Google Analytics. Se desideri approfondire il calcolo del QPT e la sua implementazione, puoi consultare questo articolo dedicato.

Obiettivo del Codice

L’obiettivo principale di questo codice è simulare e analizzare il comportamento degli utenti attraverso la metrica “QPT” (Quality Per Time), ovvero una misura del tempo qualitativo speso su una piattaforma. Utilizzando una distribuzione binomiale negativa, il codice:

  1. Genera dati simulati rappresentativi di tre segmenti di utenti (casual, engaged e power users) con comportamenti distinti.
  2. Calcola i parametri statistici che descrivono la distribuzione del tempo speso (QPT) per modellare il comportamento reale.
  3. Visualizza i dati con grafici avanzati per esplorare le tendenze e le relazioni tra variabili correlate.
  4. Fornisce statistiche descrittive dettagliate per ogni segmento di utenti.

L’output finale è un insieme di grafici, tabelle e parametri statistici che possono essere utilizzati per prendere decisioni strategiche basate sui dati.

Parametri Utilizzati per la Simulazione

Per generare i dati simulati, sono stati definiti tre segmenti di utenti: casual users, engaged users e power users. Ogni segmento è stato modellato utilizzando una distribuzione binomiale negativa, sfruttando la sua capacità di catturare la sovradispersione dei dati e di rappresentare eventi rari, come nel caso dei power users.

  1. Casual Users:
    • Numero di successi (n): 2
      Valore basso, che indica interazioni brevi e discontinue.
    • Probabilità di successo (p): 0.7
      Alta probabilità che un’interazione termini rapidamente.
    • Descrizione: Questo segmento rappresenta utenti che trascorrono poco tempo sulla piattaforma, spesso visitando una sola pagina o abbandonando rapidamente.
  2. Engaged Users:
    • Numero di successi (n): 5
      Valore medio, che riflette un coinvolgimento moderato.
    • Probabilità di successo (p): 0.5
      Probabilità media di completare un’interazione, rappresentando utenti che navigano più pagine e spendono tempo a leggere.
    • Descrizione: Gli utenti engaged sono quelli che si immergono nei contenuti, ma senza raggiungere livelli estremi di utilizzo.
  3. Power Users:
    • Numero di successi (n): 10
      Valore elevato, che rappresenta sessioni lunghe e continuative.
    • Probabilità di successo (p): 0.3
      Bassa probabilità di terminare, riflettendo sessioni estese e un profondo coinvolgimento.
    • Descrizione: Questi utenti rappresentano la fascia più attiva, spesso responsabile di una porzione significativa del tempo complessivo trascorso sulla piattaforma.

Variabili Aggiuntive

Per simulare un comportamento più realistico, sono state generate altre due variabili correlate al QPT:

  1. Profondità di Scroll (Scroll Depth):
    • È stata modellata come proporzionale al QPT, con l’aggiunta di una variabilità casuale per riflettere le differenze individuali nei comportamenti di lettura.
    • Esempio: un power user potrebbe avere una profondità di scroll media maggiore rispetto a un casual user.
  2. Numero di Interazioni (Interaction Count):
    • Generato utilizzando una distribuzione di Poisson, il cui tasso (λ) è proporzionale al QPT.
    • Rappresenta eventi come clic su link, video o pulsanti.

Rappresentazione dei Segmenti nei Dati

Ogni segmento è stato simulato con un numero proporzionale di utenti per riflettere una distribuzione tipica del traffico web. Ad esempio:

  • Casual users: 60% della popolazione.
  • Engaged users: 30% della popolazione.
  • Power users: 10% della popolazione.

Output Principali

  1. Grafici:
    • Distribuzione del QPT per tutti gli utenti con un fit basato sulla distribuzione binomiale negativa.
    • Distribuzione del QPT per segmento di utenti (casual, engaged, power users).
    • Relazione tra QPT e profondità di scroll (scroll depth).
    • Serie temporale del QPT medio per segmento.
  2. Statistiche Descrittive:
    • Numero di osservazioni, media, deviazione standard e mediana del QPT per segmento.
    • Media della profondità di scroll e del numero di interazioni per segmento.
  3. Parametri del Modello Binomiale Negativo:
    • Parametri stimati (n, p) e loro interpretazione (media e varianza teorica).

Il codice in Python

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import nbinom
import datetime

# Configurazione avanzata dello stile dei grafici
def setup_plot_style():
    plt.rcParams.update({
        'figure.facecolor': 'white',
        'axes.grid': True,
        'grid.alpha': 0.3,
        'axes.labelsize': 11,
        'axes.titlesize': 14,
        'xtick.labelsize': 10,
        'ytick.labelsize': 10,
        'lines.linewidth': 1.5,
        'grid.linestyle': '--',
        'grid.color': '#cccccc',
        'axes.prop_cycle': plt.cycler(color=[
            '#1f77b4', '#ff7f0e', '#2ca02c', '#d62728',
            '#9467bd', '#8c564b', '#e377c2', '#7f7f7f'
        ])
    })

# Impostiamo un seed per la riproducibilità
np.random.seed(42)

# Generazione dei dati simulati
def generate_qpt_data(n_sessions=1000):
    casual_users = np.random.negative_binomial(3, 0.3, int(n_sessions * 0.6)) * 10
    engaged_users = np.random.negative_binomial(5, 0.2, int(n_sessions * 0.3)) * 15
    power_users = np.random.negative_binomial(8, 0.15, int(n_sessions * 0.1)) * 20
    
    qpt_values = np.concatenate([casual_users, engaged_users, power_users])
    noise = np.random.normal(0, 5, len(qpt_values))
    qpt_values = np.maximum(qpt_values + noise, 0)
    
    dates = pd.date_range(datetime.datetime.now() - datetime.timedelta(days=30), 
                          datetime.datetime.now(), periods=len(qpt_values))
    
    user_types = ['casual'] * len(casual_users) + ['engaged'] * len(engaged_users) + ['power'] * len(power_users)
    
    return pd.DataFrame({
        'data': dates,
        'qpt_secondi': qpt_values,
        'tipo_utente': user_types,
        'scroll_depth': [min(100, np.random.normal(x / 10, 10)) for x in qpt_values],
        'interaction_count': [np.random.poisson(x / 30) for x in qpt_values]
    })

# Calcolo dei parametri della binomiale negativa
def fit_negative_binomial(data):
    mean = np.mean(data)
    variance = np.var(data)
    if variance > mean:
        p = mean / variance
        n = mean * p / (1 - p)
        return n, p
    else:
        raise ValueError("La varianza deve essere maggiore della media per una distribuzione binomiale negativa.")

# Visualizzazione e analisi dei dati
def plot_analysis(df):
    setup_plot_style()
    n_est, p_est = fit_negative_binomial(df['qpt_secondi'])
    
    x = np.arange(0, int(df['qpt_secondi'].max()))
    theoretical_pmf = nbinom.pmf(x, n_est, p_est)
    
    fig, axs = plt.subplots(2, 2, figsize=(15, 10))
    
    # Distribuzione QPT
    sns.histplot(df['qpt_secondi'], bins=30, stat='density', ax=axs[0, 0], alpha=0.6)
    axs[0, 0].plot(x, theoretical_pmf, 'r-', lw=2, label='Fit Binomiale Negativa')
    axs[0, 0].set_title('Distribuzione QPT con Modello')
    axs[0, 0].set_xlabel('QPT (secondi)')
    axs[0, 0].set_ylabel('Densità')
    axs[0, 0].legend()
    
    # QPT per tipo di utente
    sns.boxplot(data=df, x='tipo_utente', y='qpt_secondi', ax=axs[0, 1])
    axs[0, 1].set_title('Distribuzione QPT per Segmento')
    axs[0, 1].set_xlabel('Tipo di Utente')
    axs[0, 1].set_ylabel('QPT (secondi)')
    
    # Correlazione QPT vs Scroll Depth
    sns.scatterplot(data=df, x='qpt_secondi', y='scroll_depth', hue='tipo_utente', ax=axs[1, 0], alpha=0.6)
    axs[1, 0].set_title('Relazione QPT vs Profondità di Scroll')
    axs[1, 0].set_xlabel('QPT (secondi)')
    axs[1, 0].set_ylabel('Profondità di Scroll (%)')
    
    # Serie temporale QPT medio giornaliero
    daily_qpt = df.groupby(['data', 'tipo_utente'])['qpt_secondi'].mean().unstack()
    daily_qpt.plot(ax=axs[1, 1])
    axs[1, 1].set_title('Trend QPT per Segmento')
    axs[1, 1].set_xlabel('Data')
    axs[1, 1].set_ylabel('QPT Medio (secondi)')
    
    plt.tight_layout()
    plt.show()
    
    # Statistiche
    stats_by_segment = df.groupby('tipo_utente').agg({
        'qpt_secondi': ['count', 'mean', 'std', 'median'],
        'scroll_depth': 'mean',
        'interaction_count': 'mean'
    }).round(2)
    print("\nStatistiche per Segmento di Utenti:")
    print(stats_by_segment)
    
    mean_theoretical = n_est * (1 - p_est) / p_est
    variance_theoretical = n_est * (1 - p_est) / (p_est ** 2)
    print(f"\nParametri del Modello Binomiale Negativo:")
    print(f"n (numero di successi): {n_est:.2f}")
    print(f"p (probabilità di successo): {p_est:.2f}")
    print(f"Media teorica: {mean_theoretical:.2f}")
    print(f"Varianza teorica: {variance_theoretical:.2f}")

# Esecuzione
df_qpt = generate_qpt_data()
plot_analysis(df_qpt)

La Scelta della Distribuzione Binomiale Negativa

Forse potrebbe interessarti anche:  La Distribuzione Binomiale Negativa: Un'Analisi Approfondita con Esempi

La distribuzione binomiale negativa è stata scelta come modello statistico centrale per questa analisi per diverse ragioni:

  1. Sovradispersione dei Dati
    Nelle analisi del comportamento degli utenti, come il QPT, è comune osservare una varianza significativamente superiore alla media. Questa condizione, detta sovradispersione, non può essere modellata in modo efficace con la distribuzione di Poisson, ma è ben gestita dalla distribuzione binomiale negativa.
  2. Modellazione del Comportamento Raro
    La distribuzione binomiale negativa è particolarmente adatta per catturare il comportamento di power users, un segmento che trascorre tempi eccezionalmente lunghi sui contenuti. Essendo questi comportamenti rari ma significativi, il modello offre un livello di granularità maggiore rispetto ad altri approcci.
  3. Applicabilità a Eventi Contati
    Questa distribuzione è utile quando si modellano eventi discreti che avvengono in un determinato periodo di tempo o in base a una certa unità, come il numero di secondi di coinvolgimento qualificato.
  4. Flessibilità
    Il modello permette di stimare sia la media che la varianza in modo indipendente, garantendo maggiore precisione nella rappresentazione delle caratteristiche dei dati.
  5. Adattamento ai Segmenti di Utenti
    La distribuzione binomiale negativa consente di modellare in modo realistico la variabilità tra segmenti distinti (casual, engaged, power users), rendendo l’analisi più rappresentativa delle dinamiche reali.

La distribuzione binomiale negativa, quindi, non solo si adatta perfettamente alle caratteristiche dei dati QPT, ma offre anche una base solida per interpretare i risultati e prendere decisioni strategiche.

Spiegazione del Codice Passo-Passo

1. Configurazione dello Stile dei Grafici

La funzione setup_plot_style() configura lo stile dei grafici per migliorare la leggibilità e garantire un design professionale. Vengono impostati:

  • Colori per le linee e i marker.
  • Dimensioni dei font per titoli e assi.
  • Stile della griglia e spessore delle linee.

2. Generazione dei Dati Simulati

La funzione generate_qpt_data() genera dati sintetici rappresentativi del comportamento degli utenti.

  • Segmenti di Utenti:
    • Casual users: breve tempo di utilizzo e alta variabilità.
    • Engaged users: tempo di utilizzo moderato e variabilità media.
    • Power users: lungo tempo di utilizzo e bassa variabilità.
  • Ogni segmento è modellato con la distribuzione binomiale negativa, scalando il tempo in secondi per riflettere comportamenti realistici.
  • Aggiunta di Rumore: Per simulare la variabilità naturale, è aggiunto un rumore gaussiano ai dati.
  • Variabili Correlate:
    • Scroll depth: proporzionale al QPT ma con variabilità casuale.
    • Interaction count: eventi discreti generati con una distribuzione di Poisson in base al QPT.

3. Calcolo dei Parametri della Binomiale Negativa

La funzione fit_negative_binomial() calcola i parametri della distribuzione binomiale negativa:

  • Media e Varianza: Sono usate per stimare i parametri n (numero di successi) e p (probabilità di successo).
  • Il metodo verifica che la varianza sia maggiore della media, condizione necessaria per applicare questa distribuzione.

4. Visualizzazione dei Dati

La funzione plot_analysis() crea una griglia di grafici:

  • Distribuzione del QPT: Istogramma sovrapposto alla probabilità teorica della binomiale negativa.
  • Distribuzione per Segmento: Boxplot per visualizzare le differenze tra casual, engaged e power users.
  • Relazione QPT-Scroll Depth: Scatterplot che evidenzia la correlazione tra il tempo speso e la profondità di scroll.
  • Serie Temporale: Lineplot del QPT medio giornaliero per ogni segmento.

5. Statistiche Descrittive

Le statistiche per segmento sono calcolate utilizzando groupby e agg() su colonne chiave:

  • Numero di osservazioni, media, deviazione standard e mediana per il QPT.
  • Media della profondità di scroll e del numero di interazioni.

6. Output Testuale dei Parametri del Modello

Il codice calcola:

  • Media e varianza teoriche basate sui parametri stimati della binomiale negativa.
  • Parametri stimati n e p, stampandoli per confronto con i dati osservati.
analisi del Tempo di Permanenza Qualificato come Indicatore di Engagement

Discussione dei Risultati

Analisi dei Segmenti di Utenti

L’analisi dei dati simulati ha evidenziato differenze significative tra i tre segmenti di utenti: casual, engaged e power users. Queste differenze non solo offrono una comprensione dettagliata dei comportamenti di navigazione, ma forniscono anche insight utili per sviluppare strategie mirate.

  1. Casual Users:
    • Caratteristiche principali: Tempi di permanenza brevi, bassa profondità di scroll e numero limitato di interazioni.
    • Implicazioni strategiche:
      • Contenuti più concisi e accattivanti possono essere più efficaci per catturare l’attenzione di questo segmento.
      • L’ottimizzazione delle prime impressioni, come titoli o immagini d’impatto, può aumentare il loro tempo di permanenza.
  2. Engaged Users:
    • Caratteristiche principali: Tempi di permanenza moderati, profondità di scroll significativa e un buon numero di interazioni.
    • Implicazioni strategiche:
      • Questo segmento rappresenta un target ideale per contenuti più approfonditi e interattivi, come articoli di lunga durata, video o quiz.
      • Strategie per favorire la fidelizzazione, come l’invio di newsletter personalizzate o l’invito a iscriversi a un account, potrebbero rivelarsi particolarmente efficaci.
  3. Power Users:
    • Caratteristiche principali: Tempi di permanenza molto lunghi, alta profondità di scroll e frequenza elevata di interazioni.
    • Implicazioni strategiche:
      • Questo gruppo è spesso costituito da utenti più affezionati o clienti abituali. Creare contenuti premium o programmi di fidelizzazione esclusivi potrebbe rafforzare ulteriormente il loro coinvolgimento.
      • È importante monitorare costantemente il comportamento di questo segmento, in quanto rappresenta una fetta significativa del valore generato dalla piattaforma.

Insight Generali sui Risultati

  1. Distribuzione del QPT:
    • La distribuzione binomiale negativa ha dimostrato di essere un modello appropriato per rappresentare la variabilità osservata nei dati. La varianza più elevata rispetto alla media è un indicatore della presenza di una minoranza di utenti estremamente attivi (power users) che influenzano fortemente le metriche aggregate.
    • Questo suggerisce che il calcolo di metriche medie (ad esempio, il tempo medio di permanenza) senza considerare i segmenti potrebbe portare a interpretazioni distorte.
  2. Correlazioni tra QPT e Variabili Correlate:
    • La correlazione positiva tra QPT e profondità di scroll implica che un maggiore coinvolgimento temporale si traduce spesso in una navigazione più approfondita. Ciò conferma che il QPT può essere utilizzato come proxy per misurare l’effettivo interesse dell’utente verso i contenuti.
    • Il legame tra QPT e numero di interazioni evidenzia che un tempo maggiore sul sito è associato a un comportamento più attivo, offrendo opportunità per stimolare azioni specifiche (ad esempio, iscrizioni o acquisti).

Implicazioni per l’Ottimizzazione dei Contenuti

I risultati dell’analisi possono guidare diverse strategie di ottimizzazione:

  1. Personalizzazione dei Contenuti:
    • Adattare i contenuti alle esigenze di ciascun segmento può migliorare l’esperienza utente complessiva e aumentare i tassi di conversione. Ad esempio, offrire percorsi rapidi per i casual users e approfondimenti dettagliati per i power users.
  2. Segmentazione Dinamica:
    • Implementare sistemi di personalizzazione in tempo reale per riconoscere e rispondere ai comportamenti degli utenti. Ad esempio, suggerire contenuti basati sulla profondità di scroll o sulle interazioni registrate.
  3. Allocazione delle Risorse:
    • Investire maggiormente in strategie che mirano agli engaged e power users, che hanno un potenziale maggiore di generare valore a lungo termine, senza trascurare iniziative per convertire i casual users in segmenti più coinvolti.
  4. Monitoraggio e Iterazione:
    • I risultati ottenuti da questa analisi possono essere utilizzati come benchmark per monitorare l’efficacia delle strategie di ottimizzazione nel tempo. Un’analisi periodica dei segmenti e delle metriche correlate garantisce una continua evoluzione delle strategie.

Conclusione

La segmentazione degli utenti e l’utilizzo del QPT come metrica di engagement offrono un potente strumento per comprendere il comportamento degli utenti e ottimizzare i contenuti digitali. Le differenze osservate tra i segmenti non solo aiutano a personalizzare l’esperienza utente, ma offrono anche indicazioni pratiche su dove concentrare gli sforzi di marketing e sviluppo dei contenuti.

Pubblicità