La lunghezza del testo aiuta il ranking? I backlink portano traffico? Le pagine più veloci convertono di più?
Prese una alla volta, queste domande hanno quasi sempre la stessa risposta pigra: «sì, un po’». Il guaio è che nella realtà i fattori non arrivano mai uno alla volta. Le pagine lunghe tendono anche ad attirare più link; quelle con più link sono spesso le più curate, e magari anche le più lente. Tutto si muove insieme, e la domanda che conta davvero è un’altra: quale di questi fattori pesa sul traffico al netto degli altri?
Abbiamo visto, parlando di correlazione, che si può misurare quanto due variabili si muovono insieme; e con la regressione lineare semplice che si può usarne una per prevedere l’altra.
Ma una correlazione alla volta è cieca di fronte all’intreccio: rischia di darci la stessa medaglia a un fattore e al suo compare, senza saperli distinguere. È l’anticamera di una trappola che conosciamo già, il paradosso di Simpson: un’associazione che cambia segno o svanisce non appena teniamo conto di una terza variabile. La regressione multipla è lo strumento che affronta di petto proprio questo — molte cause insieme, ciascuna misurata tenendo ferme le altre.
In sintesi: la regressione multipla è una tecnica che misura quanto ciascun fattore contribuisce a un risultato tenendo fermi tutti gli altri — risponde alla domanda “a parità di backlink, la lunghezza conta ancora?”. L’equazione combina più cause in un solo effetto: \(Y = b_0 + b_1 X_1 + b_2 X_2 + \dots + b_k X_k\), e i coefficienti \(b_i\) dicono quanto pesa ogni fattore al netto degli altri. È lo strumento che smaschera l’intreccio tra variabili che una correlazione alla volta non sa distinguere.
Di cosa parleremo:
Immaginiamo di misurare, sul nostro sito, la correlazione fra la lunghezza dei contenuti e il traffico che ricevono. Quasi certamente la troveremo positiva: le pagine più lunghe ricevono più traffico.
La tentazione, a quel punto, è la scorciatoia di ogni consulente di fretta: «scrivo più lungo e il traffico sale». Ma quella correlazione, da sola, non ci dice perché le pagine lunghe vanno meglio. Vanno meglio perché sono lunghe, o perché — essendo lunghe e ben fatte — hanno raccolto negli anni più backlink, e sono i link a portare il traffico?
Sono due storie completamente diverse, con due piani d’azione opposti, e la correlazione fra traffico e lunghezza le confonde in un unico numero. Per separarle dobbiamo poter chiedere: a parità di backlink, la lunghezza conta ancora?
È esattamente la domanda a cui la regressione multipla sa rispondere. La regressione multipla non misura se un fattore è associato al risultato, ma quanto vi contribuisce una volta che tutti gli altri sono tenuti fermi: è la differenza tra guardare il mondo una variabile alla volta e guardarlo per intero.
La forma dell’equazione è la naturale espansione di quella della regressione semplice: al posto di una sola variabile predittiva ne mettiamo diverse, ciascuna con il suo coefficiente. Vogliamo spiegare una variabile responso (unica) a partire da un insieme di variabili predittive:
\( y = b + a_1 x_1 + a_2 x_2 + \dots + a_k x_k \\ \)dove \( y \) è la variabile che vogliamo spiegare (il traffico), \( x_1, x_2, \dots, x_k \) sono le variabili predittive (lunghezza, backlink, velocità), \( a_1, a_2, \dots, a_k \) sono i coefficienti di regressione e \( b \) è l’intercetta.
Il cuore di tutto è il significato di ciascun \( a_i \): è di quanto cambia \( y \) quando \( x_i \) aumenta di un’unità e tutte le altre variabili restano costanti. Quel «restano costanti» è la magia — e la responsabilità — del metodo: è lì che avviene la separazione degli effetti che a occhio nudo restano ingarbugliati.
In altri termini: la regressione multipla stima simultaneamente il contributo di ogni fattore, depurato da quello di tutti gli altri presenti nel modello. Il modo migliore per capirlo è vederlo smontare un caso costruito apposta per ingannarci.
Costruisco in R una tabella d’esempio con sessanta pagine di un sito. Per ciascuna ho il traffico mensile, il numero di parole, i backlink ricevuti e il tempo di caricamento in secondi. Nella realtà questi dati si esportano da Search Console, da un crawler e da un tool per i link; qui, trattandosi di un esempio, li simulo — ma con un meccanismo preciso in testa, che sarà il nostro banco di prova:
set.seed(42)
n <- 60
parole <- round(rnorm(n, 1200, 380)); parole[parole < 350] <- 350
velocita <- round(pmax(0.6, rnorm(n, 2.6, 0.8)), 2)
# i contenuti piu' lunghi attirano piu' backlink: ecco l'intreccio
backlink <- round(pmax(0, 0.018 * parole + rnorm(n, 0, 6)))
# il traffico e' guidato DA backlink e velocita', NON dalle parole
traffico <- round(38 * backlink - 260 * velocita + 900 + rnorm(n, 0, 220))
traffico[traffico < 0] <- 0
pagine <- data.frame(traffico, parole, backlink, velocita) Ho costruito i dati in modo che il traffico dipenda davvero solo dai backlink e dalla velocità, mentre la lunghezza non ha alcun effetto diretto. Ma ho anche legato la lunghezza ai backlink — le pagine lunghe ne attirano di più — così come accade nella realtà. Quanto sono legati?
cor(pagine$parole, pagine$backlink)
# [1] 0.81 Un legame forte: 0,81. Vediamo ora cosa succede se, ingenuamente, studiamo il traffico guardando solo la lunghezza, con una regressione semplice:
coef(summary(lm(traffico ~ parole, data = pagine)))
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 241.1577 137.9404 1.748 0.0857...
# parole 0.6128 0.1088 5.635 0.0000... Il verdetto sembra schiacciante: ogni cento parole in più valgono una sessantina di sessioni in più, con un p-value minuscolo (sotto lo 0,001). La lunghezza «conta», e conta parecchio.
Se ci fermassimo qui, andremmo a scrivere una direttiva editoriale — facciamo tutti i contenuti più lunghi — su una base che sta per rivelarsi un miraggio. Aggiungiamo al modello gli altri due fattori e guardiamo cosa resta della lunghezza:
modello <- lm(traffico ~ parole + backlink + velocita, data = pagine)
coef(summary(modello))
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 1100.797 120.119 9.164 0.0000
# parole 0.107 0.102 1.041 0.3025
# backlink 29.444 4.804 6.129 0.0000
# velocita -322.943 34.515 -9.357 0.0000 Ecco il ribaltamento. Il coefficiente della lunghezza è crollato da 0,613 a 0,107, e il suo p-value è schizzato a 0,30: non più distinguibile dallo zero.
La lunghezza, a parità di backlink e velocità, non porta praticamente nulla. Quel che nella regressione semplice sembrava il suo merito era in realtà un riflesso dei backlink: le pagine lunghe ricevono più traffico non perché lunghe, ma perché — essendo lunghe — attirano più link, e sono i link a fare il lavoro.
È questo il senso profondo della regressione multipla: distingue il fattore che agisce da quello che si limita ad accompagnarlo. Un compito che nessuna correlazione presa singolarmente potrà mai svolgere.
Dal modello completo ricaviamo tre coefficienti, ma confrontarli così come sono sarebbe un errore: hanno unità di misura diverse. Il coefficiente delle parole (0,107) è per parola, quello dei backlink (29,4) è per link, quello della velocità (−323) è per secondo. Dire che la velocità «conta di più» perché il suo numero è più grande non ha senso: un secondo e una parola non sono la stessa cosa.
Per confrontarli bisogna metterli sulla stessa scala. Il modo standard è standardizzare tutte le variabili — esprimerle in deviazioni standard — e rifare la regressione: i coefficienti che ne escono, detti coefficienti standardizzati (o beta), dicono di quante deviazioni standard cambia il traffico per una deviazione standard in più di ciascun fattore. Ora sono confrontabili. Li calcolo in R standardizzando i dati con scale:
z <- as.data.frame(scale(pagine))
round(coef(lm(traffico ~ parole + backlink + velocita, data = z))[-1], 3)
# parole backlink velocita
# 0.104 0.610 -0.552 Il quadro diventa leggibile a colpo d’occhio: i backlink sono il motore (+0,61), la velocità una potente zavorra (−0,55: più una pagina è lenta, meno traffico raccoglie), e le parole un’inezia (+0,10) che, come già sappiamo, non è nemmeno distinguibile dal caso.
Un coefficiente da solo, però, non basta a fidarsi: attorno a ogni stima c’è un margine d’incertezza. Se l’intervallo di confidenza di un coefficiente include lo zero, quel fattore potrebbe benissimo non avere alcun effetto — è precisamente la situazione della lunghezza.
Un avvertimento: nel nostro esempio parole e backlink erano correlati all’81%, e questo non è un dettaglio innocuo. Quando due predittori si somigliano troppo, il modello fa fatica a separare i loro effetti, e i coefficienti diventano instabili e imprecisi — è la multicollinearità, una delle insidie che affronteremo parlando di diagnostica del modello. Qui ha giocato a nostro favore, aiutando a smascherare il finto effetto della lunghezza; ma in generale un coefficiente non significativo non prova che un fattore sia irrilevante: può solo dirci che, dati questi predittori così intrecciati, non riusciamo a isolarne il contributo.
Sapere quali fattori contano è metà del lavoro; l’altra metà è chiedersi quanto bene, nel complesso, il modello ricostruisce la realtà. La misura di riferimento è il coefficiente di determinazione \( R^2 \): la quota di variabilità del traffico che il modello riesce a spiegare, da 0 (nulla) a 1 (tutto). Lo leggo dal riepilogo:
summary(modello)$r.squared # 0.805
summary(modello)$adj.r.squared # 0.795 Un \( R^2 \) di 0,805 dice che i nostri tre fattori spiegano insieme l’80,5% della variabilità del traffico fra le pagine — il resto è rumore, o fattori che non abbiamo incluso.
Accanto compare l’\( R^2 \) aggiustato (0,795), un valore leggermente più basso: penalizza l’aggiunta di variabili inutili, e va guardato al posto dell’\( R^2 \) grezzo quando si confrontano modelli con un numero diverso di predittori. Serve a non farsi ingannare: aggiungere variabili fa sempre salire l’\( R^2 \) grezzo, anche quando quelle variabili non aggiungono nulla di reale.
Il modo più onesto per giudicare un modello, però, è guardarlo all’opera: mettere il traffico che predice contro quello osservato, pagina per pagina. Più i punti si stringono attorno alla bisettrice, meglio il modello coglie la realtà.
Un \( R^2 \) alto, va detto, non è una promozione automatica: dietro c’è una lista di requisiti che il modello dà per scontati — che le relazioni siano lineari, che i residui si comportino bene, che i predittori non siano ridondanti (la multicollinearità di poco fa). Quando queste assunzioni saltano, i coefficienti restano numeri, ma smettono di essere affidabili. È il territorio della diagnostica, e merita un discorso a parte.
È una tecnica statistica che stima quanto ciascun fattore contribuisce a un risultato tenendo fermi tutti gli altri. Non misura se un fattore è associato all’esito, ma quanto vi contribuisce al netto delle altre variabili: risponde a domande del tipo “a parità di backlink, la lunghezza del testo conta ancora?”.
La regressione semplice usa un solo predittore per spiegare il risultato; la multipla ne usa molti insieme. È la differenza tra guardare il mondo una variabile alla volta e guardarlo per intero: la multipla separa l’effetto di ciascun fattore dall’intreccio con gli altri, cosa che una correlazione alla volta non può fare.
Ogni coefficiente dice quanto cambia il risultato quando quel fattore aumenta di un’unità, con tutti gli altri tenuti fermi. Un coefficiente vicino a zero (con l’intervallo di confidenza che attraversa lo zero) indica un effetto non distinguibile dal caso; un coefficiente lontano da zero da un lato netto dice che quel fattore pesa davvero.
Che i predittori inclusi nel modello spiegano insieme l’80% della variabilità del risultato. Il restante 20% è rumore o fattori non considerati. Meglio guardare l’R² aggiustato, che penalizza le variabili inutili: a differenza dell’R² grezzo, non sale solo perché abbiamo aggiunto un predittore qualsiasi.
Perché le pagine lunghe tendono ad attirare più backlink e quelli portano traffico: la correlazione semplice tra lunghezza e traffico “regala” ai link il merito che è loro. Tenendo fermi i backlink, la regressione multipla fa emergere che la lunghezza, da sola, conta quasi nulla. È l’anticamera del paradosso di Simpson: un’associazione che svanisce quando si controlla una terza variabile.
Il modello dà per scontati alcuni requisiti: relazioni lineari, residui ben comportati, predittori non ridondanti (niente multicollinearità). Quando queste assunzioni saltano, i coefficienti restano numeri ma smettono di essere affidabili — ed è lì che serve la diagnostica del modello.
Il modo migliore per fissare il meccanismo è metterci le mani sopra. Riprendendo il codice qui sopra, ci sono tre direzioni interessanti da esplorare:
lm(traffico ~ parole + velocita) — e osserva cosa succede al coefficiente delle parole: torna grande e «significativo». È la controprova che quel finto effetto vive solo finché il confondente resta fuori dal modello.pagine$rumore <- rnorm(60)) e rimettila nel modello: guarda l’\( R^2 \) grezzo salire di un pelo e l’\( R^2 \) aggiustato restare fermo o scendere. È il senso pratico dell’aggiustamento.+ 0.3 * parole alla formula del traffico) e verifica che ora, nel modello completo, il coefficiente della lunghezza sopravvive. Serve a sentire la differenza fra un effetto vero e uno solo apparente.Suggerimento: la struttura non cambia mai — si stima il modello, si leggono i coefficienti a parità degli altri, si controlla l’\( R^2 \) e la nuvola osservati-predetti. È giocando con le variabili dentro e fuori dal modello che si capisce quanto di ciò che chiamiamo «fattore di ranking» sia causa e quanto, semplicemente, compagnia.
Finora la nostra variabile risposta è stata un numero che scorre senza salti — il traffico, che può valere 300 sessioni come 1.520. Ma moltissime domande della SEO non hanno questa forma: una pagina converte o non converte, un utente torna o non torna, una keyword entra in prima pagina o resta fuori. La risposta è un sì o un no, e allora una retta che predice numeri continui non basta più: servirebbe un modello che predica una probabilità, costretta a stare fra 0 e 1. È il mestiere della regressione logistica, il passo naturale da cui proseguire.
Se vuoi approfondire la regressione multipla, l’interpretazione dei coefficienti a parità degli altri e la lettura dell’\( R^2 \) — l’ossatura esatta di ciò che abbiamo costruito qui — Introduzione all’econometria di Stock e Watson è il riferimento che consiglio: costruisce il metodo con cura partendo sempre da problemi applicati, e dedica pagine limpide proprio al significato del «tenere ferme le altre variabili» e alle trappole dei fattori correlati.
Capita spesso che si esporti l'elenco delle keyword da Search Console o da un tool,…
Chi passa le giornate dentro Search Console conosce bene una situazione di questo tipo: una…
Nell'articolo sul multi-armed bandit abbiamo usato Bayes per decidere fra varianti: spostare il traffico verso…
Nell'articolo sull'A/B test bayesiano abbiamo confrontato due varianti a campione fisso: si raccolgono i dati…
Abbiamo avuto modo di esaminare, nell'articolo sull'A/B testing classico, come confrontare due varianti con il…
Abbiamo avuto modo di esaminare, nell'articolo sulle fondamenta della statistica bayesiana, come l'aggiornamento bayesiano funzioni…