  <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>seo &#8211; paologironi blog</title>
	<atom:link href="https://www.gironi.it/blog/category/seo-it/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.gironi.it/blog</link>
	<description>Appunti sparsi di (retro) informatica, analisi dei dati, statistica, seo, e cose che cambiano</description>
	<lastBuildDate>Thu, 18 Jun 2026 13:21:39 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>La biblioteca di Statistica e SEO: i libri che consiglio (e perché)</title>
		<link>https://www.gironi.it/blog/biblioteca-statistica-seo/</link>
					<comments>https://www.gironi.it/blog/biblioteca-statistica-seo/#respond</comments>
		
		<dc:creator><![CDATA[Paolo Gironi]]></dc:creator>
		<pubDate>Thu, 11 Jun 2026 08:11:44 +0000</pubDate>
				<category><![CDATA[statistica]]></category>
		<category><![CDATA[seo]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=3638</guid>

					<description><![CDATA[C&#8217;è una domanda che torna, puntuale, ogni volta che pubblico un articolo di questo percorso: «ma per studiare queste cose, che libro consigli?». Finora ho risposto un pezzo alla volta, nella sezione &#8220;Per approfondire&#8221; che chiude ogni articolo. Qui faccio l&#8217;operazione inversa: raccolgo tutta la biblioteca in una pagina sola, con il motivo per cui &#8230; <a href="https://www.gironi.it/blog/biblioteca-statistica-seo/" class="more-link">Leggi tutto<span class="screen-reader-text"> "La biblioteca di Statistica e SEO: i libri che consiglio (e perché)"</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">C&#8217;è una domanda che torna, puntuale, ogni volta che pubblico un articolo di questo percorso: <em>«ma per studiare queste cose, che libro consigli?»</em>. Finora ho risposto un pezzo alla volta, nella sezione &#8220;Per approfondire&#8221; che chiude ogni articolo. Qui faccio l&#8217;operazione inversa: raccolgo tutta la biblioteca in una pagina sola, con il motivo per cui ogni titolo si è guadagnato il posto.</p>



<p class="wp-block-paragraph">Non è una classifica e non è un catalogo: sono <strong>i libri che uso davvero</strong>, quelli da cui provengono molti degli esempi e delle spiegazioni che trovate negli articoli. Pochi, scelti con un criterio semplice: ogni libro deve far fare un passo avanti concreto a chi lavora con i dati nella SEO e nel marketing, senza richiedere una laurea in matematica.</p>





<span id="more-3638"></span>



<p class="wp-block-paragraph">Una nota di trasparenza, prima di cominciare: i link che seguono sono affiliati Amazon. Se acquistate un libro passando da qui, il blog riceve una piccola commissione, senza alcun costo aggiuntivo per voi: è il modo più indolore che ho trovato per coprire le spese del server.</p>



<h2 class="wp-block-heading">Da dove cominciare</h2>



<h3 class="wp-block-heading">L&#8217;arte della statistica — David Spiegelhalter</h3>



<p class="wp-block-paragraph">Se dovessi salvarne uno solo, sarebbe questo. <a href="https://www.amazon.it/dp/8806246623?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>L&#8217;arte della statistica</em></a> non insegna le formule: insegna <strong>a ragionare sui dati prima di fidarsene</strong>, che è esattamente la competenza che manca a chi legge un report di Search Console e trae conclusioni affrettate. Spiegelhalter — professore a Cambridge e divulgatore di rara chiarezza — costruisce ogni capitolo attorno a un caso reale: sondaggi sbagliati, statistiche mediche fraintese, il celebre caso delle ammissioni a Berkeley (lo stesso caso che ho raccontato parlando del <a href="https://www.gironi.it/blog/il-paradosso-di-simpson-nella-seo-quando-i-dati-aggregati-possono-mentire/">Paradosso di Simpson</a>).</p>



<p class="wp-block-paragraph">Lo cito praticamente ovunque nel blog: dal <a href="https://www.gironi.it/blog/campionamento-e-dimensione-campionaria-quanti-dati-servono/">campionamento</a> agli <a href="https://www.gironi.it/blog/intervalli-di-confidenza/">intervalli di confidenza</a>, passando per il <a href="https://www.gironi.it/blog/teorema-del-limite-centrale/">Teorema del Limite Centrale</a>. Si legge senza carta e penna, e si rilegge con profitto. (Per chi preferisce l&#8217;originale inglese: <a href="https://www.amazon.it/dp/0241258766?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>The Art of Statistics</em></a>.)</p>



<h3 class="wp-block-heading">Finalmente ho capito la statistica — Maurizio De Pra</h3>



<p class="wp-block-paragraph">Il titolo dice tutto. <a href="https://www.amazon.it/dp/8867319396?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>Finalmente ho capito la statistica</em></a> è il libro per chi parte da zero e vuole un percorso graduale, con tanti esempi e un prezzo contenuto. Copre bene il territorio delle <strong>distribuzioni di probabilità</strong> — quelle che nel percorso del blog vanno dalla <a href="https://www.gironi.it/blog/la-distribuzione-di-poisson/">Poisson</a> alla <a href="https://www.gironi.it/blog/la-distribuzione-beta-spiegata-semplice/">Beta</a> — e i fondamenti del <a href="https://www.gironi.it/blog/probabilita-permutazioni-e-combinazioni/">ragionamento probabilistico</a>. Non sostituisce un manuale, ma fa quello che un manuale non sa fare: togliere la paura.</p>



<h2 class="wp-block-heading">Quando i dati mentono</h2>



<h3 class="wp-block-heading">Mentire con le statistiche — Darrell Huff</h3>



<p class="wp-block-paragraph">Scritto nel 1954 e mai invecchiato. <a href="https://www.amazon.it/dp/8889479094?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>Mentire con le statistiche</em></a> è il catalogo, breve e velenoso, dei trucchi con cui i numeri possono essere usati per ingannare: campioni distorti, medie scelte ad arte, grafici con gli assi tagliati, percentuali senza contesto. Huff scriveva per i lettori dei giornali; io lo consiglio a chi legge i report dei tool SEO e le slide dei fornitori, dove quegli stessi trucchi prosperano ancora oggi. Chi è passato per il <a href="https://www.gironi.it/blog/il-paradosso-di-simpson-nella-seo-quando-i-dati-aggregati-possono-mentire/">Paradosso di Simpson</a> sa già che i dati aggregati possono mentire: Huff completa il quadro con tutti gli altri modi.</p>



<p class="wp-block-paragraph">Si legge in un pomeriggio, e da quel pomeriggio in poi i grafici non si guardano più con gli stessi occhi. (Originale inglese: <a href="https://www.amazon.it/dp/0140213007?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>How to Lie with Statistics</em></a>.)</p>



<h2 class="wp-block-heading">Il manuale per fare sul serio: l&#8217;inferenza</h2>



<h3 class="wp-block-heading">Statistica — Newbold, Carlson, Thorne</h3>



<p class="wp-block-paragraph">Prima o poi arriva il momento in cui la divulgazione non basta più: servono le condizioni di applicabilità di un test, le formule complete, gli esercizi per verificare di aver capito. <a href="https://www.amazon.it/dp/8891910651?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>Statistica</em></a> di Newbold, Carlson e Thorne è il manuale universitario di riferimento in italiano per tutta l&#8217;inferenza: <a href="https://www.gironi.it/blog/il-test-delle-ipotesi/">test delle ipotesi</a>, intervalli di confidenza, chi quadrato, ANOVA — in pratica, la spina dorsale teorica della mia <a href="https://www.gironi.it/blog/guida-ai-test-statistici-per-analisi-a-b/">guida ai test statistici per le analisi A/B</a>.</p>



<p class="wp-block-paragraph">Va detto con franchezza: è un manuale universitario, e costa come un manuale universitario. Ma è uno di quei libri che si comprano una volta e si consultano per anni.</p>



<h2 class="wp-block-heading">Regressione, serie storiche, modelli</h2>



<h3 class="wp-block-heading">Introduzione all&#8217;econometria — Stock, Watson</h3>



<p class="wp-block-paragraph">Il nome può intimidire (econometria?), ma il contenuto è esattamente ciò che serve a chi vuole andare oltre la <a href="https://www.gironi.it/blog/regressione-lineare-semplice/">regressione lineare</a> di base: regressione multipla, variabili omesse, diagnostica, <a href="https://www.gironi.it/blog/analisi-delle-serie-storiche0-e-previsioni-di-serie-temporali-in-r-con-il-metodo-holt-winters/">serie storiche</a>. <a href="https://www.amazon.it/dp/8891906190?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>Introduzione all&#8217;econometria</em></a> di Stock e Watson ha una qualità che nei manuali è rara: l&#8217;attenzione costante all&#8217;<strong>interpretazione</strong> dei risultati, non solo al loro calcolo. Che poi è il punto in cui si gioca la differenza tra un&#8217;analisi utile e un esercizio di stile.</p>



<h2 class="wp-block-heading">L&#8217;arte (fallibile) della previsione</h2>



<h3 class="wp-block-heading">Il segnale e il rumore — Nate Silver</h3>



<p class="wp-block-paragraph">Chi lavora con i dati prima o poi deve fare una previsione — e una stima del traffico organico del prossimo trimestre è una previsione a tutti gli effetti. <a href="https://www.amazon.it/dp/8860443865?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>Il segnale e il rumore</em></a> racconta perché le previsioni falliscono così spesso: troppa fiducia nei modelli, la tentazione di scambiare il rumore per il segnale, l&#8217;incapacità di ragionare in termini di probabilità. Silver — l&#8217;uomo che azzeccò l&#8217;esito delle presidenziali USA del 2012 in tutti e cinquanta gli stati — attraversa poker, terremoti, meteorologia e finanza, e strada facendo offre la migliore introduzione narrativa al <a href="https://www.gironi.it/blog/statistica-bayesiana/">ragionamento bayesiano</a> che io conosca. È il complemento divulgativo del capitolo sulle <a href="https://www.gironi.it/blog/analisi-delle-serie-storiche0-e-previsioni-di-serie-temporali-in-r-con-il-metodo-holt-winters/">serie storiche</a>: prima si impara a costruire una previsione, poi si impara a diffidarne. (Originale inglese: <a href="https://www.amazon.it/dp/0141975652?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>The Signal and the Noise</em></a>.)</p>



<h2 class="wp-block-heading">La sperimentazione online</h2>



<h3 class="wp-block-heading">Trustworthy Online Controlled Experiments — Kohavi, Tang, Xu</h3>



<p class="wp-block-paragraph">Sull&#8217;<a href="https://www.gironi.it/blog/ab-testing/">A/B testing</a> non esiste un equivalente italiano, e francamente nemmeno un equivalente inglese: <a href="https://www.amazon.it/dp/1108724264?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>Trustworthy Online Controlled Experiments</em></a> è <strong>il</strong> libro sull&#8217;argomento, scritto da chi ha guidato la sperimentazione in Microsoft, Google e LinkedIn. Dentro c&#8217;è tutto quello che ho toccato negli articoli — sample size, potenza del test, errori da evitare — più dieci anni di casi reali su cosa va storto negli esperimenti veri. L&#8217;ho usato anche per costruire il mio <a href="https://www.gironi.it/blog/calcolatore-sample-size-ab-test/">calcolatore di sample size</a>. In inglese, ma di lettura scorrevole.</p>



<h2 class="wp-block-heading">Il percorso bayesiano</h2>



<h3 class="wp-block-heading">Bayesian Statistics the Fun Way — Will Kurt</h3>



<p class="wp-block-paragraph">La <a href="https://www.gironi.it/blog/statistica-bayesiana/">statistica bayesiana</a> ha fama di essere ostica, e i suoi manuali fanno di tutto per confermarla. <a href="https://www.amazon.it/dp/1593279566?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>Bayesian Statistics the Fun Way</em></a> fa il contrario: Will Kurt spiega prior, posterior e aggiornamento bayesiano con esempi presi da Star Wars e dai Lego, e — cosa che apprezzo particolarmente — usa R per la parte computazionale, esattamente come faccio qui. È il libro giusto per capire la logica bayesiana (e il perché della <a href="https://www.gironi.it/blog/la-distribuzione-beta-spiegata-semplice/">distribuzione Beta</a>) prima di affrontare la teoria formale.</p>



<h2 class="wp-block-heading">Verso il machine learning</h2>



<h3 class="wp-block-heading">An Introduction to Statistical Learning — James, Witten, Hastie, Tibshirani</h3>



<p class="wp-block-paragraph">Il classico contemporaneo dell&#8217;apprendimento statistico, noto a tutti come &#8220;ISL&#8221;. <a href="https://www.amazon.it/dp/1461471370?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>An Introduction to Statistical Learning</em></a> copre con il giusto equilibrio tra intuizione e formalismo gli argomenti della parte più avanzata del percorso: regressione logistica, <a href="https://www.gironi.it/blog/come-usare-gli-alberi-decisionali-per-classificare-i-dati/">alberi decisionali</a>, <a href="https://www.gironi.it/blog/una-introduzione-allanalisi-delle-componenti-principali-pca/">PCA</a>, con laboratori pratici in R. N.b.: gli autori distribuiscono gratuitamente il PDF dal loro sito — la versione cartacea resta per chi, come me, sui libri di studio preferisce scrivere a matita.</p>



<h3 class="wp-block-heading">Introduction to Machine Learning — Ethem Alpaydın</h3>



<p class="wp-block-paragraph">Per chi vuole le fondamenta teoriche del machine learning — quelle che in un corso universitario starebbero prima dei laboratori — <a href="https://www.amazon.it/dp/0262028182?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>Introduction to Machine Learning</em></a> di Alpaydın è il riferimento che ho citato nella mia <a href="https://www.gironi.it/blog/machine-learning-una-guida-per-i-principianti/">guida introduttiva al ML</a>. Più formale di ISL: da prendere dopo, non al posto di.</p>



<h2 class="wp-block-heading">Il linguaggio di lavoro: R</h2>



<h3 class="wp-block-heading">R for Data Science — Wickham, Çetinkaya-Rundel, Grolemund</h3>



<p class="wp-block-paragraph">C&#8217;era un buco evidente in questo scaffale: il codice R compare in quasi ogni articolo del blog — dal <a href="https://www.gironi.it/blog/il-test-del-chi-quadrato/">test del chi quadrato</a> alle <a href="https://www.gironi.it/blog/analisi-delle-serie-storiche0-e-previsioni-di-serie-temporali-in-r-con-il-metodo-holt-winters/">serie storiche</a> — ma mancava il libro per impararlo. <a href="https://www.amazon.it/dp/1492097403?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>R for Data Science</em></a> (seconda edizione) colma il buco: Hadley Wickham è l&#8217;autore del tidyverse, l&#8217;ecosistema di pacchetti che ha reso R moderno, e il libro insegna l&#8217;intero flusso di lavoro — importare, pulire, trasformare, visualizzare, comunicare — su dati veri, senza teoria superflua. Anche questo, come ISL, si legge gratuitamente online sul sito degli autori: un motivo in più per non avere scuse.</p>



<h2 class="wp-block-heading">Comunicare i dati</h2>



<h3 class="wp-block-heading">Storytelling with Data — Cole Nussbaumer Knaflic</h3>



<p class="wp-block-paragraph">L&#8217;analisi più rigorosa del mondo vale poco se chi la riceve non la capisce — e nel marketing un&#8217;analisi va quasi sempre raccontata a qualcuno: un cliente, un responsabile, una riunione. <a href="https://www.amazon.it/dp/1119002257?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>Storytelling with Data</em></a> insegna a trasformare i grafici di default di Excel e Looker Studio in messaggi chiari: scegliere il grafico giusto, eliminare l&#8217;inchiostro che non informa, guidare l&#8217;attenzione dove serve, costruire una narrazione attorno al numero. Di tutto lo scaffale è probabilmente il libro che si ripaga più in fretta: si applica già al prossimo report. (Per chi preferisce l&#8217;italiano: <a href="https://www.amazon.it/dp/8850333846?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>Data storytelling</em></a>, edizioni Apogeo.)</p>



<h2 class="wp-block-heading">Una lettura di nicchia</h2>



<h3 class="wp-block-heading">Monte Carlo Methods in Financial Engineering — Paul Glasserman</h3>



<p class="wp-block-paragraph">Questo è il libro più specialistico dello scaffale, e lo segnalo per onestà verso chi è arrivato al <a href="https://www.gironi.it/blog/il-metodo-montecarlo/">metodo Monte Carlo</a> e vuole andare fino in fondo: <a href="https://www.amazon.it/dp/1441915753?tag=consulenzeinf-21&#038;ascsubtag=biblioteca-statistica-seo" rel="nofollow sponsored noopener" target="_blank"><em>Monte Carlo Methods in Financial Engineering</em></a> di Glasserman è il riferimento completo sulla simulazione applicata alla finanza. Non è una lettura da ombrellone: è il testo a cui si arriva quando gli altri non bastano più.</p>



<h2 class="wp-block-heading">La biblioteca in uno sguardo</h2>



<p class="wp-block-paragraph">Per orientarsi al volo, ecco lo scaffale completo in forma di tabella:</p>



<figure class="wp-block-table"><table><thead><tr><th>Libro</th><th>Per chi</th><th>Lingua</th></tr></thead><tbody><tr><td><em>L&#8217;arte della statistica</em> — Spiegelhalter</td><td>Tutti: il punto di partenza</td><td>IT (anche EN)</td></tr><tr><td><em>Finalmente ho capito la statistica</em> — De Pra</td><td>Chi parte da zero, distribuzioni</td><td>IT</td></tr><tr><td><em>Mentire con le statistiche</em> — Huff</td><td>Difendersi dai numeri truccati</td><td>IT (anche EN)</td></tr><tr><td><em>Statistica</em> — Newbold, Carlson, Thorne</td><td>Chi vuole il rigore: inferenza e test</td><td>IT</td></tr><tr><td><em>Introduzione all&#8217;econometria</em> — Stock, Watson</td><td>Regressione e serie storiche</td><td>IT</td></tr><tr><td><em>Il segnale e il rumore</em> — Silver</td><td>Capire perché le previsioni falliscono</td><td>IT (anche EN)</td></tr><tr><td><em>Trustworthy Online Controlled Experiments</em> — Kohavi et al.</td><td>A/B testing e sperimentazione</td><td>EN</td></tr><tr><td><em>Bayesian Statistics the Fun Way</em> — Kurt</td><td>Approccio bayesiano, con R</td><td>EN</td></tr><tr><td><em>An Introduction to Statistical Learning</em> — James et al.</td><td>Machine learning pratico, con R</td><td>EN</td></tr><tr><td><em>Introduction to Machine Learning</em> — Alpaydın</td><td>Fondamenta teoriche del ML</td><td>EN</td></tr><tr><td><em>R for Data Science</em> — Wickham et al.</td><td>Imparare R, dal dato grezzo al grafico</td><td>EN</td></tr><tr><td><em>Storytelling with Data</em> — Knaflic</td><td>Comunicare dati e report</td><td>EN (anche IT)</td></tr><tr><td><em>Monte Carlo Methods in Financial Engineering</em> — Glasserman</td><td>Simulazione avanzata</td><td>EN</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Questo scaffale non è chiuso. Man mano che il percorso del blog si allarga — i paradossi statistici di cui ho cominciato a parlare, il bootstrap, l&#8217;analisi dei testi — si allargherà anche la biblioteca, e questa pagina verrà aggiornata di conseguenza. Nel frattempo, se un solo consiglio dovesse bastare: si parta da Spiegelhalter, e gli articoli di questo blog facciano da palestra.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/biblioteca-statistica-seo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Il Paradosso di Simpson nella SEO: quando i dati aggregati possono mentire</title>
		<link>https://www.gironi.it/blog/il-paradosso-di-simpson-nella-seo-quando-i-dati-aggregati-possono-mentire/</link>
					<comments>https://www.gironi.it/blog/il-paradosso-di-simpson-nella-seo-quando-i-dati-aggregati-possono-mentire/#respond</comments>
		
		<dc:creator><![CDATA[Paolo Gironi]]></dc:creator>
		<pubDate>Wed, 27 May 2026 12:38:52 +0000</pubDate>
				<category><![CDATA[seo]]></category>
		<category><![CDATA[statistica]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=3569</guid>

					<description><![CDATA[È l&#8217;ultimo giorno del mese. Stiamo preparando il report SEO per il cliente principale. Apriamo Google Search Console, impostiamo il confronto mese su mese e un brivido ci corre lungo la schiena: il CTR organico globale del sito è crollato dal 4,5% al 3,5%. Prima di scrivere l&#8217;email con le cattive notizie e prepararci a &#8230; <a href="https://www.gironi.it/blog/il-paradosso-di-simpson-nella-seo-quando-i-dati-aggregati-possono-mentire/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Il Paradosso di Simpson nella SEO: quando i dati aggregati possono mentire"</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">È l&#8217;ultimo giorno del mese. Stiamo preparando il report SEO per il cliente principale. Apriamo Google Search Console, impostiamo il confronto mese su mese e un brivido ci corre lungo la schiena: <strong>il CTR organico globale del sito è crollato dal 4,5% al 3,5%</strong>.</p>



<p class="wp-block-paragraph">Prima di scrivere l&#8217;email con le cattive notizie e prepararci a giustificare il calo, facciamo la cosa giusta: disaggreghiamo i dati per capire <strong>dove</strong> stiamo perdendo colpi. Guardiamo le performance per dispositivo e scopriamo una cosa apparentemente impossibile:</p>



<ul class="wp-block-list">
<li>Il CTR su <strong>Desktop</strong> è salito dal 5,0% al 5,5%.</li>



<li>Il CTR su <strong>Mobile</strong> è salito dal 2,0% al 2,5%.</li>
</ul>



<p class="wp-block-paragraph">Fissiamo lo schermo. Com&#8217;è matematicamente possibile che le performance siano migliorate ovunque, ma il totale generale sia crollato di un punto percentuale netto?</p>



<span id="more-3569"></span>



<p class="wp-block-paragraph">Non abbiamo rotto Google Search Console e non abbiamo dimenticato la matematica delle elementari. Siamo semplicemente appena diventati vittime del <strong>Paradosso di Simpson</strong>.</p>



<h2 class="wp-block-heading">Cos&#8217;è il Paradosso di Simpson</h2>



<p class="wp-block-paragraph">Il Paradosso di Simpson è un fenomeno statistico in cui un trend che appare evidente all&#8217;interno di diversi gruppi di dati scompare — o addirittura si inverte — quando i gruppi vengono combinati in un unico totale.</p>



<p class="wp-block-paragraph">Nella pratica quotidiana della SEO e del marketing questo accade quasi sempre per colpa di una <strong>variabile confondente</strong> nascosta (come dicono gli anglosassoni, una <em>confounding variable</em>): nel nostro caso, <strong>il peso relativo dei segmenti che stiamo analizzando</strong>. È lo stesso ragionamento che incontriamo parlando di <a href="https://www.gironi.it/blog/tabelle-di-contingenza-e-probabilita-condizionata/">probabilità condizionata</a>, dove ciò che conta non è il dato marginale ma quello condizionato a un sottogruppo.</p>



<p class="wp-block-paragraph">Quando lavoriamo con tassi e percentuali (il CTR, il Conversion Rate, il Bounce Rate), guardare il dato aggregato senza considerare i volumi sottostanti è una delle trappole più insidiose per chi analizza i dati.</p>



<h2 class="wp-block-heading">La dimostrazione: anatomia di un finto crollo</h2>



<p class="wp-block-paragraph">Torniamo al nostro report mensile e mettiamo i numeri assoluti dietro a quelle percentuali. Solo così capiamo cosa è successo davvero tra il Mese 1 e il Mese 2.</p>



<figure class="wp-block-table"><table><thead><tr><th>Segmento</th><th>Mese 1 (impr. · clic · CTR)</th><th>Mese 2 (impr. · clic · CTR)</th><th>Andamento</th></tr></thead><tbody><tr><td><strong>Desktop</strong></td><td>10.000 · 500 · 5,0%</td><td>10.000 · 550 · 5,5%</td><td>in crescita</td></tr><tr><td><strong>Mobile</strong></td><td>2.000 · 40 · 2,0%</td><td>20.000 · 500 · 2,5%</td><td>in crescita</td></tr><tr><td><em>Totale aggregato</em></td><td>12.000 · 540 · 4,5%</td><td>30.000 · 1.050 · 3,5%</td><td>in calo</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Ecco il punto: non abbiamo un problema di SEO, al contrario abbiamo avuto un successo notevole. I posizionamenti su Mobile sono esplosi, portando 18.000 impression in più rispetto al mese precedente.</p>



<p class="wp-block-paragraph">Il traffico Mobile, però, ha storicamente un CTR strutturalmente più basso del Desktop (più rumore in SERP, scrolling veloce, distrazioni). Quell&#8217;enorme afflusso di impression a basso CTR ha &#8220;annacquato&#8221; la media globale, trascinandola verso il basso. Il dato aggregato ci diceva <em>&#8220;stiamo peggiorando&#8221;</em>; il dato disaggregato ci dice <em>&#8220;stiamo migliorando su tutta la linea, ma è cambiato il mix di traffico&#8221;</em>.</p>



<p class="wp-block-paragraph">La ragione matematica è semplice e va sempre tenuta bene a mente: <strong>il CTR aggregato non è la media dei CTR dei segmenti, ma una loro media <em>pesata</em></strong>, dove i pesi sono le quote di impression di ciascun segmento. In formula:</p>



\(
\text{CTR}_{\text{agg}} = \frac{\sum_i \text{clic}_i}{\sum_i \text{impression}_i} = \sum_i w_i \cdot \text{CTR}_i, \qquad w_i = \frac{\text{impression}_i}{\sum_j \text{impression}_j} \\
\)



<p class="wp-block-paragraph">dove \(\text{CTR}_i\) è il CTR del segmento <em>i</em> e \(w_i\) è il suo peso, cioè la frazione di impression che gli appartiene. Nel Mese 2 il peso del Mobile è passato da 1/6 a 2/3 del totale: anche se ogni singolo CTR è salito, la media si è spostata verso il valore (basso) del segmento diventato dominante. Non è la matematica a essere impazzita: è il <em>mix</em> a essere cambiato.</p>



<p class="wp-block-paragraph">Ricostruiamo il tutto in R, così vediamo il meccanismo all&#8217;opera invece di prenderlo sulla fiducia:</p>



<pre class="wp-block-code"><code># Ricostruisco i dati dei due mesi
dati &lt;- data.frame(
  segmento   = c("Desktop", "Mobile", "Desktop", "Mobile"),
  mese       = c("Mese 1",  "Mese 1", "Mese 2",  "Mese 2"),
  impression = c(10000,     2000,     10000,     20000),
  clic       = c(500,       40,       550,       500)
)

# CTR di ciascun segmento
dati$ctr &lt;- dati$clic / dati$impression

# CTR aggregato per mese: media PESATA sulle impression,
# NON la media aritmetica dei CTR
agg &lt;- aggregate(cbind(clic, impression) ~ mese, data = dati, FUN = sum)
agg$ctr_aggregato &lt;- agg$clic / agg$impression
print(agg)</code></pre>



<p class="wp-block-paragraph">Come si vede dall&#8217;output, l&#8217;aggregato scende da 4,5% a 3,5% mentre entrambi i segmenti salgono. n.b.: la media aritmetica dei due CTR del Mese 2 sarebbe il 4% (la semplice media tra 5,5% e 2,5%), ben diversa dal 3,5% reale. Tutta la differenza è nei pesi.</p>



<h2 class="wp-block-heading">Altri due scenari SEO dove il paradosso colpisce</h2>



<p class="wp-block-paragraph">Il CTR per dispositivo è l&#8217;esempio da manuale, ma il Paradosso di Simpson si annida un po&#8217; ovunque nelle nostre dashboard.</p>



<h3 class="wp-block-heading">1. Il crollo del Conversion Rate (intento informazionale vs transazionale)</h3>



<p class="wp-block-paragraph">Lavoriamo su un e-commerce e il Conversion Rate organico passa dal 3% all&#8217;1,5%. Un disastro? Non necessariamente. Se abbiamo appena lanciato un blog aziendale che ha iniziato a posizionarsi bene per centinaia di keyword informazionali top-of-the-funnel, abbiamo portato sul sito migliaia di utenti lontani dall&#8217;acquisto (con un CR fisiologico vicino allo 0,1%). Il CR delle pagine prodotto può essere stabile o in crescita, ma la mole di traffico del blog ha distorto la media aggregata.</p>



<h3 class="wp-block-heading">2. Cannibalizzazione o espansione del ranking?</h3>



<p class="wp-block-paragraph">Una nostra pagina prodotto storica rankava solo per 5 keyword transazionali esatte: 100 impression, 10 clic, CTR 10%. Decidiamo di ottimizzarne i contenuti e il mese dopo Google ne premia la semantica, posizionandola per 80 nuove keyword long-tail e correlate. Ora la pagina fa 5.000 impression e 100 clic: CTR 2%. Se guardiamo solo il CTR medio su Search Console sembra che l&#8217;ottimizzazione l&#8217;abbia distrutta; se guardiamo i clic assoluti, li abbiamo decuplicati.</p>



<h2 class="wp-block-heading">Come difendersi (i takeaway per chi analizza)</h2>



<p class="wp-block-paragraph">Come sopravviviamo al Paradosso di Simpson quando presentiamo i dati a un cliente o a uno stakeholder? Quattro accortezze.</p>



<ol class="wp-block-list">

<li><strong>Non fidiamoci mai del solo dato aggregato.</strong> Quando analizziamo metriche relative (tassi di conversione, di clic, medie), il totale globale è spesso il numero meno utile di tutti.</li>


<li><strong>Segmentiamo fino a trovare l&#8217;omogeneità.</strong> Dividiamo i dati per dimensioni logiche prima di trarre conclusioni: per dispositivo (Desktop/Mobile), per tipo di query (brand/non-brand), per tipo di pagina (blog/prodotto).</li>


<li><strong>Cerchiamo il cambiamento dei pesi.</strong> Se un tasso globale crolla ma i sottogruppi tengono, chiediamoci: <em>&#8220;è cambiato il mix del traffico?&#8221;</em>. Quasi sempre un segmento a bassa performance ha aumentato di colpo i propri volumi.</li>


<li><strong>Educhiamo il cliente.</strong> In un report non limitiamoci a mostrare il calo del CTR: mostriamo la tabella disaggregata. Spiegare il meccanismo non salva soltanto il report del mese, ci posiziona come analisti che ragionano sui dati invece di subirli.</li>

</ol>



<p class="wp-block-paragraph">I dati non mentono, ma i dati aggregati sono ottimi prestigiatori. La difesa più solida, però, non è statistica ma sperimentale: quando possiamo decidere noi <em>come</em> assegnare il traffico — randomizzando gli utenti tra due versioni di una pagina — il mix smette di essere una variabile fuori controllo. È esattamente ciò che facciamo con un <a href="https://www.gironi.it/blog/ab-testing/">A/B test condotto in modo rigoroso</a>, il prossimo passo del nostro percorso: vedere come un esperimento controllato neutralizza alla radice le variabili confondenti che qui ci siamo limitati a smascherare.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading" id="per-approfondire">Per approfondire</h3>



<p class="wp-block-paragraph">Se vogliamo approfondire il Paradosso di Simpson e l&#8217;arte di leggere i dati senza farci ingannare, <a href="https://www.amazon.it/dp/8806246623?tag=consulenzeinf-21&#038;ascsubtag=il-paradosso-di-simpson-nella-seo-quando-i-dati-aggregati-possono-mentire" rel="nofollow sponsored noopener" target="_blank"><em>L&#8217;arte della statistica</em></a> di David Spiegelhalter è la lettura giusta: dedica pagine limpide proprio a questo paradosso — incluso il celebre caso delle ammissioni a Berkeley — mostrando come un numero aggregato possa raccontare l&#8217;esatto contrario di ciò che è successo nei dati.</p>



<p class="wp-block-paragraph">E per scoprire quanti altri modi esistono di farsi ingannare dai numeri — campioni distorti, medie scelte ad arte, grafici truccati — <a href="https://www.amazon.it/dp/8889479094?tag=consulenzeinf-21&#038;ascsubtag=il-paradosso-di-simpson-nella-seo-quando-i-dati-aggregati-possono-mentire" rel="nofollow sponsored noopener" target="_blank"><em>Mentire con le statistiche</em></a> di Darrell Huff è il piccolo classico del genere: scritto nel 1954, si legge in un pomeriggio e vale da vaccino permanente.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/il-paradosso-di-simpson-nella-seo-quando-i-dati-aggregati-possono-mentire/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Campionamento e Dimensione Campionaria: Quanti Dati Servono?</title>
		<link>https://www.gironi.it/blog/campionamento-e-dimensione-campionaria-quanti-dati-servono/</link>
					<comments>https://www.gironi.it/blog/campionamento-e-dimensione-campionaria-quanti-dati-servono/#respond</comments>
		
		<dc:creator><![CDATA[Paolo Gironi]]></dc:creator>
		<pubDate>Wed, 06 May 2026 14:45:50 +0000</pubDate>
				<category><![CDATA[seo]]></category>
		<category><![CDATA[statistica]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=3558</guid>

					<description><![CDATA[In questo articolo: Come scegliere chi misurare: i tipi di campionamento La dimensione campionaria: la matematica dietro la stima Calcoliamolo in R e Python Dalla stima all&#8217;A/B Testing Errore campionario vs Bias Prova tu Nella vita di tutti i giorni, come nella web analytics, dobbiamo spesso prendere decisioni basate su informazioni incomplete. Quanti dati mi &#8230; <a href="https://www.gironi.it/blog/campionamento-e-dimensione-campionaria-quanti-dati-servono/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Campionamento e Dimensione Campionaria: Quanti Dati Servono?"</span></a>]]></description>
										<content:encoded><![CDATA[
<div style="background-color: #f8f9fa;padding: 20px;border-radius: 8px;margin-bottom: 30px;border-left: 4px solid #4a90e2">
<h3 style="margin-top: 0">In questo articolo:</h3>
<ul style="margin-bottom: 0">
<li><a href="#tipi-campionamento">Come scegliere chi misurare: i tipi di campionamento</a></li>
<li><a href="#formula-dimensione">La dimensione campionaria: la matematica dietro la stima</a></li>
<li><a href="#esempio-codice">Calcoliamolo in R e Python</a></li>
<li><a href="#collegamento-ab-test">Dalla stima all&#8217;A/B Testing</a></li>
<li><a href="#bias-errore">Errore campionario vs Bias</a></li>
<li><a href="#prova-tu">Prova tu</a></li>
</ul>
</div>



<p class="wp-block-paragraph">Nella vita di tutti i giorni, come nella web analytics, dobbiamo spesso prendere decisioni basate su informazioni incomplete. Quanti dati mi servono per capire se questa modifica alla landing page ha funzionato? Mille visite bastano? Diecimila sono troppe?</p>



<span id="more-3558"></span>



<p class="wp-block-paragraph">Non possiamo quasi mai misurare l&#8217;intera popolazione (ad esempio, tutti i futuri visitatori di un sito). Dobbiamo lavorare su un <strong>campione</strong>. E qui sta l&#8217;equilibrio delicato: un campione troppo piccolo porta a conclusioni sbagliate, uno inutilmente grande fa sprecare tempo e risorse. La domanda diventa allora: <strong>quanti dati ci servono davvero?</strong></p>



<h2 class="wp-block-heading" id="tipi-campionamento">Come scegliere chi misurare: i tipi di campionamento</h2>



<p class="wp-block-paragraph">Prima di capire <em>quanti</em> dati ci servono, dobbiamo capire <em>come</em> raccoglierli. I tre metodi principali sono:</p>



<ul class="wp-block-list">
<li><strong>Campionamento casuale semplice:</strong> Ogni utente ha esattamente la stessa probabilità di essere scelto. È il gold standard, quello che cerchiamo di ottenere quando randomizziamo gli utenti in un A/B test.</li>
<li><strong>Campionamento stratificato:</strong> Dividiamo gli utenti in gruppi (es. traffico Mobile e Desktop) e campioniamo casualmente all&#8217;interno di ogni gruppo, rispettando le proporzioni originali. Assicura che nessuna minoranza importante venga ignorata.</li>
<li><strong>Campionamento sistematico:</strong> Scegliamo un utente ogni <em>k</em> (es. un utente ogni 10). Facile da implementare, ma insidioso quando nei dati si nasconde una ciclicità (immaginiamo di campionare un utente ogni 7: se prendiamo solo i lunedì, la stima sarà deformata in partenza).</li>
</ul>



<h2 class="wp-block-heading" id="formula-dimensione">La dimensione campionaria: la matematica dietro la stima</h2>



<p class="wp-block-paragraph">L&#8217;intuizione è semplice: più è piccolo l&#8217;effetto che cerchiamo (o più i dati sono variabili), più dati ci servono per distinguerlo dal rumore di fondo. Sembra difficile da formalizzare? È più lineare di quanto sembri.</p>



<p class="wp-block-paragraph">Per calcolare il numero esatto, ci servono tre ingredienti:</p>



<ul class="wp-block-list">
<li><strong>Livello di confidenza:</strong> Quanto vogliamo essere sicuri? Di solito si usa il 95% (che corrisponde a uno Z-score di 1.96).</li>
<li><strong>Margine di errore (E):</strong> L&#8217;errore massimo che siamo disposti ad accettare (es. 1% o 0.01).</li>
<li><strong>Proporzione attesa (p):</strong> La stima del tasso di conversione. Se non ne abbiamo idea, usiamo 0.5 (50%): è il caso di massima incertezza e darà il campione più grande possibile, quindi la scelta più conservativa.</li>
</ul>



<p class="wp-block-paragraph">La formula per stimare una proporzione (come il Conversion Rate) è:</p>



<p class="wp-block-paragraph" style="text-align: center;font-size: 1.2em"><strong>n = (Z&sup2; &times; p(1 &#8211; p)) / E&sup2;</strong></p>



<h2 class="wp-block-heading" id="esempio-codice">Calcoliamolo in R e Python</h2>



<p class="wp-block-paragraph">Facciamo un esempio al volo. Vogliamo stimare il Conversion Rate di una nuova pagina con un margine di errore dell&#8217;1% (0.01) e un livello di confidenza del 95% (Z = 1.96). Per cautela, impostiamo p = 0.5.</p>



<p class="wp-block-paragraph">Gli esempi seguono sia in R sia in Python: ognuno scelga il linguaggio con cui ha più familiarità.</p>



<p class="wp-block-paragraph">Calcoliamo in R:</p>



<pre><code class="language-r"># Calcolo della dimensione campionaria per una proporzione
Z &lt;- 1.96
p &lt;- 0.5
E &lt;- 0.01

n &lt;- (Z^2 * p * (1-p)) / E^2
print(paste("Dimensione necessaria:", round(n)))
# Output: Dimensione necessaria: 9604</code></pre>



<p class="wp-block-paragraph">Verifichiamo in Python:</p>



<pre><code class="language-python"># Calcolo della dimensione campionaria per una proporzione
Z = 1.96
p = 0.5
E = 0.01

n = (Z**2 * p * (1-p)) / E**2
print(f"Dimensione necessaria: {round(n)}")
# Output: Dimensione necessaria: 9604</code></pre>



<p class="wp-block-paragraph">Come si vede, servono circa 9.604 utenti per avere quella precisione. n.b.: se accettassimo un margine di errore del 2% (E=0.02), il numero crollerebbe a circa 2.401. È l&#8217;effetto dell&#8217;<em>E</em> al quadrato a denominatore: dimezzare la pretesa di precisione significa dividere per quattro il campione richiesto. Va sempre tenuto bene a mente quando si decide quale margine accettare.</p>



<h2 class="wp-block-heading" id="collegamento-ab-test">Dalla stima all&#8217;A/B Testing</h2>



<p class="wp-block-paragraph">La formula vista finora serve a stimare una singola proporzione. Ma nella pratica quotidiana della CRO (Conversion Rate Optimization) il problema è quasi sempre un altro: <em>confrontare</em> due proporzioni, come in un A/B test.</p>



<p class="wp-block-paragraph">In quel caso la logica è la stessa, ma la formula si complica perché entrano in gioco due concetti nuovi: l&#8217;<strong>Effect Size</strong> (la minima differenza che vogliamo rilevare) e la <strong>Potenza Statistica</strong> (come dicono gli anglosassoni, <em>power</em>).</p>



<p class="wp-block-paragraph">Per evitare di calcolarlo a mano ho preparato un <a href="/blog/calcolatore-sample-size-ab-test/">calcolatore interattivo del sample size per A/B test</a>: fa il lavoro sporco al posto nostro e indica anche per quanti giorni far girare il test, dato il traffico medio della pagina.</p>



<h2 class="wp-block-heading" id="bias-errore">Errore campionario vs Bias</h2>



<p class="wp-block-paragraph">Va sempre tenuto bene a mente un punto, prima di chiudere. L&#8217;errore di campionamento (quello che la formula gestisce) è inevitabile e si riduce aumentando i dati. Ma c&#8217;è un nemico molto più insidioso, e nessuna formula lo cattura: il <strong>bias</strong>.</p>



<p class="wp-block-paragraph">Se testiamo una pagina solo durante il weekend, possiamo anche raccogliere un milione di visite (errore campionario praticamente nullo), ma il campione non sarà rappresentativo degli utenti infrasettimanali. Dunque: nessuna formula può salvare un campione distorto all&#8217;origine. Meglio mille osservazioni ben raccolte di un milione raccolte male.</p>



<h2 class="wp-block-heading" id="prova-tu">Prova tu</h2>



<p class="wp-block-paragraph">Una pagina prodotto riceve circa 10.000 impressioni al mese su Google, con un CTR osservato del 3,5%. Vogliamo stimare il vero CTR con un margine di errore di 1 punto percentuale (E = 0,01) e una confidenza del 95%.</p>



<ol class="wp-block-list">
<li>Calcola la dimensione campionaria necessaria con la formula vista, prima usando p = 0,5 (caso conservativo) e poi p = 0,035 (CTR osservato).</li>
<li>Confronta i due risultati: di quanto cambia il fabbisogno di dati quando abbiamo una stima ragionevole di p?</li>
<li>Considerando le 10.000 impressioni al mese, in quanti mesi raccogliamo abbastanza dati per soddisfare la stima conservativa?</li>
<li>Se accettassimo un margine del 2% (E = 0,02), come cambierebbe il tempo di raccolta?</li>
</ol>



<p class="wp-block-paragraph">Suggerimento: in R basta una funzione minima — <code>sample_size &lt;- function(Z, p, E) ceiling((Z^2 * p * (1-p)) / E^2)</code> — da chiamare due volte con i due valori di <em>p</em>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<p class="wp-block-paragraph">Adesso sappiamo come raccogliere un campione adeguato e quanti dati ci servono. Resta una domanda: come usiamo quel campione per confrontare in modo rigoroso due versioni della stessa pagina? È qui che entra in gioco l&#8217;<a href="/blog/guida-ai-test-statistici-per-analisi-a-b/">A/B testing vero e proprio</a>, ed è il prossimo tassello del percorso.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h3 class="wp-block-heading" id="per-approfondire">Per approfondire</h3>



<p class="wp-block-paragraph">Se vuoi approfondire il tema del campionamento, dei bias che possono distorcerlo e della logica dell&#8217;inferenza statistica, <a href="https://www.amazon.it/dp/8806246623?tag=consulenzeinf-21&#038;ascsubtag=campionamento-e-dimensione-campionaria-quanti-dati-servono" rel="nofollow sponsored noopener" target="_blank"><em>L&#8217;arte della statistica</em></a> di David Spiegelhalter è il compagno di viaggio più adatto. Spiegelhalter dedica pagine illuminanti a casi reali — sondaggi sbagliati, campioni di convenienza, statistiche che ingannano — e mostra come la matematica del campionamento valga poco senza una riflessione attenta su <em>come</em> i dati vengono raccolti.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/campionamento-e-dimensione-campionaria-quanti-dati-servono/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tracciare i moduli Elementor con Google Tag Manager</title>
		<link>https://www.gironi.it/blog/tracciare-i-moduli-elementor-con-google-tag-manager/</link>
					<comments>https://www.gironi.it/blog/tracciare-i-moduli-elementor-con-google-tag-manager/#comments</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Tue, 04 Aug 2020 08:05:28 +0000</pubDate>
				<category><![CDATA[analytics]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[Tag Manager]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[elementor]]></category>
		<category><![CDATA[tag manager]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=1794</guid>

					<description><![CDATA[In un precedente post abbiamo visto in dettaglio come tracciare in Google Analytics via Google Tag Manager i moduli generati dal plugin CF7 in WordPress. In questo post vedremo come ottenere il medesimo risultato con un altro strumento WordPress ad altissima diffusione: il visual builder Elementor. Elementor utilizza Ajax , facendo comparire a schermo un &#8230; <a href="https://www.gironi.it/blog/tracciare-i-moduli-elementor-con-google-tag-manager/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Tracciare i moduli Elementor con Google Tag Manager"</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In un <a href="https://www.gironi.it/blog/tracciare-i-moduli-contact-form-7-con-tag-manager-il-modo-piu-semplice/">precedente post</a> abbiamo visto in dettaglio come tracciare in Google Analytics via Google Tag Manager i moduli generati dal plugin CF7 in WordPress.</p>



<p class="wp-block-paragraph">In questo post vedremo come ottenere il medesimo risultato con un altro strumento WordPress ad altissima diffusione: il visual builder Elementor.</p>



<span id="more-1794"></span>



<p class="wp-block-paragraph">Elementor utilizza Ajax , facendo comparire a schermo un messaggio di ringraziamento dopo che è avvenuto l’invio del modulo.</p>



<p class="wp-block-paragraph"><strong>Questo significa che per far scattare il nostro attivatore in Tag Manager, al fine di conteggiare un evento, dobbiamo intercettare proprio la comparsa di questo messaggio sullo schermo.</strong></p>



<figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2020/08/elementor-css.jpg" alt="messaggio ringraziamento form Elementor" class="wp-image-1795" width="596" height="116" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/08/elementor-css.jpg 794w, https://www.gironi.it/blog/wp-content/uploads/2020/08/elementor-css-300x58.jpg 300w" sizes="(max-width: 596px) 85vw, 596px" /><figcaption>il messaggio di ringraziamento all&#8217;avvenuto invio di un modulo Elementor</figcaption></figure>



<h2 class="wp-block-heading">Creazione dell&#8217;attivatore Tag Manager</h2>



<p class="wp-block-paragraph">Creo l’attivatore. Nell’interfaccia di GTM vado su Attivatori &gt; Nuovo &gt; e come tipo di elemento scelgo “<em>Visibilità di un elemento</em>”:</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2020/08/attivatore-elementor-1024x743.png" alt="Configurazione attivatore Tag Manager per tracciare modulo Elementor" class="wp-image-1796" width="768" height="557" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/08/attivatore-elementor-1024x743.png 1024w, https://www.gironi.it/blog/wp-content/uploads/2020/08/attivatore-elementor-300x218.png 300w, https://www.gironi.it/blog/wp-content/uploads/2020/08/attivatore-elementor.png 1130w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption>La configurazione dell&#8217; attivatore Tag Manager per tracciare modulo Elementor</figcaption></figure>



<p class="wp-block-paragraph">Dobbiamo indicare a Google Tag Manager quale elemento esatto ci interessa.</p>



<p class="wp-block-paragraph">Apro l’inspector del browser per vedere se ci sono id oppure classi css associate al messaggio di invio riuscito.</p>



<p class="wp-block-paragraph"><strong>Nel mio caso ho trovato un div associato alla classe .elementor-message-success</strong>.</p>



<p class="wp-block-paragraph">Quindi flaggo la voce “<em>Rileva modifiche nel DOM</em>”.</p>



<p class="wp-block-paragraph">Salvo, aggiorno la modalità Anteprima e debug, quindi aggiorno la pagina che contiene il modulo Elementor e controllo facendo un modulo di prova.</p>



<h2 class="wp-block-heading"><strong>Google Analytics tag per tracciare il Form Elementor</strong></h2>



<p class="wp-block-paragraph">Il prossimo passo è inviare un evento a Google Analytics ogni volta che quel messaggio di ringraziamento appare sullo schermo.</p>



<p class="wp-block-paragraph">Nell&#8217;interfaccia di Google Tag Manager, vado su Tag&gt; Nuovo&gt; e scelgo Universal Analytics. Quindi uso le seguenti impostazioni:</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2020/08/elementor-tag-1024x723.png" alt="Configurazione del tag " class="wp-image-1798" width="768" height="542" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/08/elementor-tag-1024x723.png 1024w, https://www.gironi.it/blog/wp-content/uploads/2020/08/elementor-tag-300x212.png 300w, https://www.gironi.it/blog/wp-content/uploads/2020/08/elementor-tag.png 1177w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption>Configurazione del tag</figcaption></figure>



<p class="wp-block-paragraph">Ovviamente posso nominare i valori di Categoria, Azione ed Etichetta come preferisco.<br>Quindi faccio clic sulla sezione Attivazione e scelgo il trigger creato in precedenza (<em>Visibilità dell&#8217;elemento</em>).</p>



<h2 class="wp-block-heading">Test e messa in produzione</h2>



<p class="wp-block-paragraph">Salvo tutte le modifiche nel contenitore di Google Tag Manager, aggiorno la modalità Anteprima e Debug, aggiorno la pagina in cui è presente il modulo Elementor. Compilo tutti i campi e invio il modulo.</p>



<p class="wp-block-paragraph">• L&#8217;evento di visibilità dell&#8217;elemento dovrebbe apparire nella modalità Anteprima e debug.</p>



<p class="wp-block-paragraph">• Facendo clic sull&#8217;evento nella console di debug si dovrebbe visualizzare il tag GA Event attivato</p>



<p class="wp-block-paragraph">Ora vado ai rapporti sugli eventi in tempo reale di GA e controllo se l&#8217;evento è visibile.</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2020/08/temporeale-1024x329.png" alt="Analytics tempo reale - verifica conteggio modulo come evento" class="wp-image-1799" width="768" height="247" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/08/temporeale-1024x329.png 1024w, https://www.gironi.it/blog/wp-content/uploads/2020/08/temporeale-300x96.png 300w, https://www.gironi.it/blog/wp-content/uploads/2020/08/temporeale-1536x493.png 1536w, https://www.gironi.it/blog/wp-content/uploads/2020/08/temporeale-1200x385.png 1200w, https://www.gironi.it/blog/wp-content/uploads/2020/08/temporeale.png 1633w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption>Analytics in tempo reale &#8211; verifica conteggio modulo come evento</figcaption></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/tracciare-i-moduli-elementor-con-google-tag-manager/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Analisi delle serie storiche e previsioni di serie temporali in R</title>
		<link>https://www.gironi.it/blog/analisi-delle-serie-storiche0-e-previsioni-di-serie-temporali-in-r-con-il-metodo-holt-winters/</link>
					<comments>https://www.gironi.it/blog/analisi-delle-serie-storiche0-e-previsioni-di-serie-temporali-in-r-con-il-metodo-holt-winters/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Sat, 28 Dec 2019 12:42:24 +0000</pubDate>
				<category><![CDATA[seo]]></category>
		<category><![CDATA[statistica]]></category>
		<category><![CDATA[holt-winters]]></category>
		<category><![CDATA[lisciatori]]></category>
		<category><![CDATA[livellamento]]></category>
		<category><![CDATA[serie storica]]></category>
		<category><![CDATA[trend]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=1496</guid>

					<description><![CDATA[Cosa si intende per serie storica, o serie temporale Una serie storica consta dei valori osservati in un insieme di periodi ordinati sequenzialmente. Questo, per chi fa SEO, è già un elemento del massimo interesse. I dati di traffico del nostro sito web, considerati lungo una sequenza temporale, sono infatti un esempio di serie storica. &#8230; <a href="https://www.gironi.it/blog/analisi-delle-serie-storiche0-e-previsioni-di-serie-temporali-in-r-con-il-metodo-holt-winters/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Analisi delle serie storiche e previsioni di serie temporali in R"</span></a>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Cosa si intende per serie storica, o serie temporale</h2>



<p class="wp-block-paragraph">Una <strong>serie storica</strong> consta dei valori osservati in un insieme di periodi ordinati sequenzialmente.  <strong>Questo, per chi fa SEO, è già un elemento del massimo interesse</strong>.       </p>



<p class="has-light-gray-background-color has-background wp-block-paragraph"><strong>I dati di traffico del nostro sito web, considerati lungo una sequenza temporale, sono infatti un esempio di serie storica. </strong>            </p>



<p class="wp-block-paragraph">L&#8217;analisi delle serie storiche è un insieme di metodi che ci consentono di ricavare schemi o statistiche significative dai dati con informazioni temporali.</p>



<p class="has-light-gray-background-color has-background wp-block-paragraph">In termini molto generali, possiamo dire che <strong>una serie temporale è una sequenza di variabili casuali indicizzate nel tempo</strong>.       </p>



<p class="wp-block-paragraph">Lo scopo dell&#8217;analisi di una serie storica può essere di tipo <strong>descrittivo</strong> (si pensi alla decomposizione della serie per rimuovere elementi di stagionalità o per evidenziare tendenze di fondo) oppure <strong>inferenziale</strong>, includendo in quest&#8217;ultimo la previsione dei valori per periodi di tempo futuri, ancora non occorsi (<em>forecasting</em>).             </p>



<span id="more-1496"></span>



<div style="border:1px solid #ccc;padding:1.2em 1.5em;margin:1.5em 0;border-radius:6px">
<h3 style="margin-top:0">Di cosa parleremo</h3>
<ul>
<li><a href="#teoria-decomposizione">Un po&#8217; di teoria: la decomposizione di una serie storica</a></li>
<li><a href="#creare-serie-r">Creare una serie temporale in R</a></li>
<li><a href="#disegnare-serie">Disegnare una o più serie storiche</a></li>
<li><a href="#smoothing">Tecniche di lisciamento (smoothing)</a></li>
<li><a href="#esempio-seo-ga4">Un esempio SEO: da Google Analytics 4 alla serie storica</a></li>
<li><a href="#seasonal-plot">Il seasonal plot: la stagionalità a colpo d&#8217;occhio</a></li>
<li><a href="#holt-winters">Livellamento esponenziale con Holt-Winters e previsione</a></li>
<li><a href="#arima">Indagare le serie storiche con i modelli ARIMA</a></li>
<li><a href="#arima-esempio">Un esempio pratico di modello ARIMA</a></li>
<li><a href="#prova-tu">Prova tu</a></li>
</ul>
</div>



<hr class="wp-block-separator has-css-opacity"/>



<h3 class="wp-block-heading" id="teoria-decomposizione">Un po&#8217; di teoria. L&#8217;analisi classica delle serie temporali. La decomposizione di una serie storica.</h3>



<p class="wp-block-paragraph"> Il metodo classico di analisi delle serie storiche individua quattro influenze, o <strong>componenti</strong>:             </p>



<ol class="wp-block-list">
<li> <strong>Trend (T) </strong>:<strong> </strong>il movimento generale a lungo termine dei valori (Y) della serie storica, in un periodo di tempo ampio.                 </li>



<li> <strong>Fluttuazioni cicliche (C) </strong>: movimenti ricorrenti di lunga durata.                 </li>



<li> <strong>Variazioni stagionali (S) </strong>: fluttuazioni dovute al particolare periodo dell&#8217;anno, ad esempio la stagione estiva rispetto ai mesi invernali.                 </li>



<li> <strong>Movimenti erratici o irregolari (I)</strong> : deviazioni irregolari dalla tendenza, che non possono essere ascritte a influenze cicliche oppure stagionali.                 </li>
</ol>



<p class="wp-block-paragraph"><strong>Secondo il modello dell&#8217;analisi classica delle serie storiche, il valore della variabile in ogni periodo è determinato dalle influenze delle quattro componenti.     </strong>        </p>



<p class="wp-block-paragraph">Lo scopo principale dell&#8217;analisi classica delle serie temporali è proprio quello di <strong>scomporre la serie</strong>, per isolare le influenze delle varie componenti che determinano i valori della serie storica.             </p>



<h3 class="wp-block-heading">Le quattro componenti &#8220;classiche&#8221; e il loro legame</h3>



<p class="wp-block-paragraph">Le quattro componenti possono essere tra loro legate <strong>in modo additivo:</strong>             </p>



<p class="wp-block-paragraph">
<strong>Y = T + C + S + I</strong>
            </p>



<p class="wp-block-paragraph"> ovvero in modo <strong>moltiplicativo:</strong>             </p>



<p class="wp-block-paragraph">
<strong>Y = T x C x S x I</strong>
            </p>



<p class="wp-block-paragraph">Ricordo che un modello moltiplicativo può essere trasformato nel modello additivo sfruttando le proprietà dei logaritmi:             </p>



<p class="wp-block-paragraph"> <strong>log(Y) = log(T) + log(C) + log(S) + log(I)</strong>             </p>



<hr class="wp-block-separator has-css-opacity"/>



<h3 class="wp-block-heading">Un breve ripasso: le utili proprietà dei logaritmi</h3>



<p class="has-background has-light-gray-background-color">
Il logaritmo di un numero <i>n</i> nella base <i>c</i> (con c diverso da 1 e c &gt;0) è l&#8217;esponente al quale è necessario elevare la base <i>c</i> per ottenere <i>n</i>.<br><br>Dunque, se n = c<sup>b</sup> allora log<sub>c</sub> n = b
</p>



<ul class="wp-block-list">
<li>Quando si moltiplicano tra loro dei numeri, il logaritmo del loro prodotto è la somma dei loro logaritmi.</li>



<li>Il logaritmo di una frazione è il logaritmo del numeratore meno il logaritmo del denominatore.</li>



<li>Il logaritmo di un numero con esponente è il logaritmo moltiplicato per l&#8217;esponente del numero.</li>
</ul>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading" id="creare-serie-r">Creare una serie temporale in R partendo da un vettore o un data frame</h2>



<p class="wp-block-paragraph">Esistono vari modi per trasformare un vettore di dati, una matrice oppure un data frame in una serie temporale.<br>In questa sede ci limiteremo agli strumenti offerti, per ottenere tale risultato, dal pacchetto base R.<br>La funzione di nostro interesse si chiama semplicemente <strong>ts()</strong> ed ha un utilizzo piuttosto intuitivo.</p>



<p class="wp-block-paragraph">Vediamo un esempio pratico. Supponiamo di avere un vettore di dati salvato con il nome mieidati.csv nella cartella /home del mio pc.</p>



<p class="wp-block-paragraph">La prima cosa che farò, sarà quella di importare in R i miei dati che ipotizzo presenti in un file csv:</p>



<pre class="wp-block-preformatted"><strong># importo i dati da file csv in un dataframe</strong><br>dfmieidati &lt;- read.csv("/home/mieidati.csv")</pre>



<pre class="wp-block-preformatted"><strong># creo un vettore con i dati che mi interessano</strong><br>mieidati &lt;- dfmieidati$miaosservazione</pre>



<p class="wp-block-paragraph">Ora non mi resta che invocare la funzione ts() con gli opportuni valori di inizio e di frequenza per creare la mia serie temporale.</p>



<p class="wp-block-paragraph">Ipotizziamo che i dati siano mensili e comincino con gennaio 2012 e vadano fino a dicembre 2018:</p>



<pre class="wp-block-preformatted">serietemporale &lt;- ts(mieidati, start=c(2012,1), end=c(2018,12), frequency=12)</pre>



<p class="wp-block-paragraph">come si vede la forma tipica della funzione ts() è </p>



<pre class="wp-block-preformatted">ts(vettore, inizio, fine, frequenza) </pre>



<p class="wp-block-paragraph">dove per <strong>frequenza si intende il numero di osservazioni per unità di tempo</strong>.</p>



<p class="wp-block-paragraph"><strong>Quindi avremo 1= annuale, 4=trimestrale, 12=mensile…</strong><br></p>



<h3 class="wp-block-heading">Utili funzioni relative a una serie temporale</h3>



<p class="wp-block-paragraph">Posso facilmente conoscere il tempo della prima osservazione di una serie storica usando il comando:</p>



<pre class="wp-block-preformatted">start()</pre>



<p class="wp-block-paragraph">Analogamente, posso trovare l’ultima osservazione con:</p>



<pre class="wp-block-preformatted">end()</pre>



<p class="wp-block-paragraph">Il comando:</p>



<pre class="wp-block-preformatted">frequency()</pre>



<p class="wp-block-paragraph">mi restituisce il numero delle osservazioni per unità di tempo, mentre l’utilissimo comando</p>



<pre class="wp-block-preformatted">window()</pre>



<p class="wp-block-paragraph">consente di estrarre un sottoinsieme di dati. </p>



<p class="wp-block-paragraph">Usando a mo&#8217; d&#8217;esempio un dataset compreso in R chiamato <em>Nile</em> contenente 100 letture annuali del fiume Nilo ad Aswan per gli anni dal 1871 al 1970 (lo useremo anche nel paragrafo che segue) il comando si presenta così:</p>



<pre class="wp-block-preformatted">nile_sub &lt;- window(Nile, start=1940,end=1960)</pre>



<h2 class="wp-block-heading" id="disegnare-serie">Disegnare una o più serie storiche</h2>



<p class="wp-block-paragraph">Uno dei vantaggi nell’uso delle serie temporali è rappresentato dalla semplicità nella rappresentazione grafica. Usando il dataset di esempio <em><strong>Nile</strong></em> presente in R, che è già un oggetto serie temporale – e posso verificarlo con il comando <strong>is.ts(Nile)</strong> -, mi basterà il comando:</p>



<pre class="wp-block-preformatted">plot.ts(Nile)</pre>



<p class="wp-block-paragraph">per avere un grafico dell’andamento nel tempo della mia variabile. Ovviamente posso usare i vari attributi <em>xlab</em>, <em>ylab</em>,<em>main</em> ecc&#8230; per rendere ancora più significativo e chiaro il mio grafico:</p>



<pre class="wp-block-preformatted">plot(Nile, xlab="Anno", ylab="Flusso annuale del fiume Nilo", main="Serie Storica di esempio Nilo")</pre>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img decoding="async" width="855" height="540" src="https://www.gironi.it/blog/wp-content/uploads/2020/07/nilo-esempio.png" alt="serie storica di esempio: Nile" class="wp-image-1747" style="width:641px;height:405px" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/07/nilo-esempio.png 855w, https://www.gironi.it/blog/wp-content/uploads/2020/07/nilo-esempio-300x189.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption class="wp-element-caption">plot della serie storica Nile</figcaption></figure>
</div>


<p class="wp-block-paragraph">Se il dataset contiene più di un oggetto serie temporale, potrò ottenere il grafico dei vari oggetti.</p>



<p class="wp-block-paragraph">Usiamo un altro dataset di esempio presente in R chiamato <em>EuStockMarkets</em> che contiene, come si può facilmente immaginare, le quotazioni dei listini FTSE, CAC, DAX e SMI :</p>



<pre class="wp-block-preformatted">plot(EuStockMarkets, plot.type = "multiple")</pre>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="855" height="540" src="https://www.gironi.it/blog/wp-content/uploads/2020/07/eustockmarkets-multiple.png" alt="Plot di più oggetti temporali - esempio" class="wp-image-1748" style="width:641px;height:405px" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/07/eustockmarkets-multiple.png 855w, https://www.gironi.it/blog/wp-content/uploads/2020/07/eustockmarkets-multiple-300x189.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption class="wp-element-caption">Plot di più oggetti temporali</figcaption></figure>



<p class="wp-block-paragraph">Oppure potrò disegnare i vari oggetti serie temporale tutti insieme – con colori differenti – nello stesso grafico:</p>



<pre class="wp-block-preformatted">plot.ts(EuStockMarkets, plot.type = "single", col=c("red","black","blue","green"))</pre>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img decoding="async" width="855" height="540" src="https://www.gironi.it/blog/wp-content/uploads/2020/07/eustockmarkets-insieme.png" alt="Plot di più oggetti temporali nello stesso grafico - esempio" class="wp-image-1750" style="width:641px;height:405px" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/07/eustockmarkets-insieme.png 855w, https://www.gironi.it/blog/wp-content/uploads/2020/07/eustockmarkets-insieme-300x189.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption class="wp-element-caption">Plot di più oggetti temporali nello stesso grafico</figcaption></figure>
</div>


<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading" id="smoothing">Tecniche di lisciamento (<em>smoothing</em>)</h2>



<p class="wp-block-paragraph">Se andiamo a rappresentare graficamente una serie temporale, noteremo quasi sempre tutta una serie di piccole variazioni che possono rendere assai arduo l&#8217;obiettivo di individuare tendenze importanti e fare previsioni per il futuro. Proprio per approcciare questo problema sono state sviluppate varie tecniche di «<strong>lisciamento</strong>» (<em>smoothing</em>), che possiamo per semplicità suddividere in due grandi famiglie: le tecniche che si basano su <strong>medie mobili</strong> e le <strong>tecniche esponenziali</strong>.       </p>



<p class="has-yellow-background-color has-background wp-block-paragraph"><strong>MEDIA MOBILE</strong><br>Al posto del dato relativo al mese X calcolo la media di un numero n di mesi di cui X è il punto centrale. <br>La componente casuale, si compensa se mettiamo assieme diversi mesi, la sua media è uguale a 0 per un numero ragionevole di periodi.<br>La componente stagionale si ripete regolarmente nel corso dell’anno, allora se distribuisco l’effetto stagionale su tutti i 12 mesi, l’effetto scompare. <br>Con la media mobile ottengo tutte e due gli effetti voluti: compenso la casualità e “distribuisco” la stagionalità.</p>



<p class="wp-block-paragraph">R, come vedremo a breve, ci fornisce un aiuto fondamentale mettendoci a disposizione tutta una serie di strumenti per effettuare le nostre analisi con la massima praticità.</p>



<h2 class="wp-block-heading" id="esempio-seo-ga4">Un esempio SEO: da Google Analytics 4 alla serie storica</h2>



<p class="wp-block-paragraph">Come abbiamo visto, possiamo creare facilmente una serie storica in R usando il comando di base ts().</p>



<p class="wp-block-paragraph">Dal momento che ho intenzione di usare l&#8217;analisi delle serie storiche a fini SEO per ricavare una tendenza e fare una previsione, ho bisogno di <strong>importare in R i dati della mia proprietà Google Analytics 4</strong>. (n.b.: la prima versione di questo articolo usava l&#8217;API di Universal Analytics, che Google ha definitivamente dismesso a luglio 2024; il codice che segue è aggiornato alla <strong>Data API di GA4</strong>.)<br><br>Posso farlo in maniera &#8220;automatica&#8221;, usando l&#8217;utilissima libreria <strong><a aria-label="googleAnalyticsR (apre in una nuova scheda)" rel="noreferrer noopener" href="https://code.markedmondson.me/googleAnalyticsR/" target="_blank">googleAnalyticsR</a></strong> — che supporta GA4 con la funzione <strong>ga_data()</strong> — oppure esportando manualmente i dati in un file csv.<br><br>Vediamo il primo caso:</p>



<pre class="wp-block-preformatted"># uso la libreria googleAnalyticsR
# che ovviamente devo aver 
# correttamente installato
library(googleAnalyticsR)

# Autorizzo Google Analytics
ga_auth()

# setto l'ID numerico della proprietà GA4
# (Amministrazione &gt; Proprietà &gt; Dettagli proprietà)
property_id &lt;- 123456789

# Recupero i dati che mi servono:
# le sessioni mensili di tre anni
# dalla Data API di GA4
gadata &lt;- ga_data(property_id, 
          metrics = "sessions", 
          dimensions = "yearMonth",
          date_range = c("2023-01-01", "2025-12-31"),
          limit = -1)

# La Data API non garantisce l'ordine delle righe:
# ordino per mese prima di costruire la serie
gadata &lt;- gadata[order(gadata$yearMonth), ]

# Converto i dati in una serie temporale 
# con cadenza mensile indicando frequency=12:
ga_ts &lt;- ts(gadata$sessions, start = c(2023,1), frequency = 12)</pre>



<p class="has-white-background-color has-background wp-block-paragraph">La procedura per ottenere lo stesso risultato senza passare dall&#8217;API è altrettanto semplice.<br><br>Dall&#8217;interfaccia di GA4 apro il report che mi interessa (per esempio <em>Report &gt; Ciclo di vita &gt; Acquisizione &gt; Acquisizione traffico</em>), imposto l&#8217;intervallo di date e uso il bottone di condivisione per scaricare il file csv. In alternativa posso interrogare la Data API direttamente dal browser con il <a aria-label="Query Explorer GA4 (apre in una nuova scheda)" rel="noreferrer noopener" href="https://ga-dev-tools.google.com/ga4/query-explorer/" target="_blank"><strong>Query Explorer per GA4</strong></a>: scelgo la proprietà, la metrica (<em>sessions</em>), la dimensione (<em>yearMonth</em>), l&#8217;intervallo di date, e scarico il risultato.<br><br>Apro poi il file con un editor di testo ed elimino le eventuali righe di intestazione generale e i totali in fondo. Se voglio, posso rinominare le colonne (&#8220;data&#8221; e &#8220;sessioni&#8221;) per una migliore leggibilità.<br><br>Non ci resta che importare il csv e creare la serie temporale. Questione di due righe:</p>



<pre class="wp-block-preformatted"># Importo un semplicissimo dataset 
# con mese e sessioni
sitomese &lt;- read.csv("percorso/sessioni-mensili.csv", header = TRUE)

# Converto i dati in una serie temporale
sitomese_ts &lt;- ts(sitomese$sessioni, start = c(2023,1), frequency = 12)</pre>



<p class="has-white-background-color has-background wp-block-paragraph">Ora che ho la mia serie temporale, ho a disposizione una molteplicità di pacchetti R che mi forniscono tutti gli strumenti utili per analisi di qualunque tipo, dalle più elementari a quelle più approfondite.</p>



<h3 class="wp-block-heading">Limitare l&#8217;effetto della stagionalità attraverso le medie mobili</h3>



<p class="wp-block-paragraph">Installo il pacchetto <em>forecast</em> per poter usare l&#8217;utilissima funzione <strong>ma()</strong>:</p>



<pre class="wp-block-preformatted">library(forecast)
sitomese.filt&lt;-ma(sitomese_ts,order=12)
sitomese.filt</pre>



<p class="wp-block-paragraph">In questo modo si è applicata una <strong>media ponderata</strong> alla nostra serie temporale, in modo da <strong>limitare l&#8217;effetto  della stagionalità</strong>. Posso ora visualizzare la tendenza stimata con il sistema della media mobile:</p>



<pre class="wp-block-preformatted">lines(sitomese.filt,col="red")</pre>



<h3 class="wp-block-heading">Elimino il trend stagionale usando la differenza</h3>



<p class="wp-block-paragraph">Usando la differenza con la funzione diff() e un lag appropriato, ho la possibilità di eliminare il trend stagionale, qualora presente. Nel caso di una serie storica con dati mensili che comprende più anni di osservazioni, mi basta usare un lag=12, come in questo banale esempio nel quale ipotizzo di lavorare su una serie temporale x:</p>



<pre class="wp-block-preformatted"># elimino il trend stagionale
# ipotizzo dati mensili e la presenza di stagionalità
dx &lt;- diff(x, lag=12)
ts.plot(dx, main="Tendenza utenti destagionalizzata")</pre>



<h3 class="wp-block-heading">Decompongo la serie storica attraverso le medie mobili</h3>



<p class="wp-block-paragraph">Abbiamo visto nel corso dell’articolo che il metodo classico di analisi delle serie storiche individua quattro influenze, o <strong>componenti </strong><strong>e che l</strong><strong>o scopo principale è proprio quello di </strong><strong>scomporre la serie</strong><strong>, per isolare le influenze delle varie componenti che determinano i valori della serie storica.</strong></p>



<p class="wp-block-paragraph">Passando dalla teoria alla pratica, vediamo come possiamo procedere.<br>Posso sfruttare la funzione <strong>decompose()</strong> del pacchetto <em>stats</em> per operare una classica decomposizione della mia serie temporale nelle componenti usando il sistema delle medie mobili e rappresentando in un solo chiarissimo grafico il tutto:</p>



<pre class="wp-block-preformatted"># decompongo la serie temporale. Ho scelto una decomposizione 
# moltiplicativa, ovviamente avrei
# potuto scegliere una additiva
componenti &lt;- decompose(sitomese_ts, type ="multiplicative")
names(componenti)
# esploro nel grafico le componenti della serie storica
plot(componenti)</pre>



<h3 class="wp-block-heading">Decompongo la serie con il metodo LOESS</h3>



<p class="wp-block-paragraph">Un&#8217;alternativa più raffinata per la decomposizione della serie è quella che usa il metodo <strong>loess</strong> (Locally Weighted Smoothing). Si tratta di un insieme di metodi non-parametrici che adattano i modelli di regressione polinomiale ai sottoinsiemi di dati. Utilizziamo a tale scopo la funzione <strong>stl() </strong>del pacchetto <em>stats</em>:</p>



<pre class="wp-block-preformatted"># uso stl per un decompose di tipo LOESS
sitomese_loess &lt;- stl(sitomese_ts, s.window="periodic")
head(sitomese_loess$time.series)
plot(sitomese_loess)</pre>



<p class="wp-block-paragraph">Rispetto a decompose(), <strong>stl()</strong> ha due vantaggi che nella realtà operativa pesano: consente alla componente stagionale di evolvere nel tempo (passando a s.window un valore numerico invece di &#8220;periodic&#8221;) ed è più robusta in presenza di valori anomali. E dalla decomposizione posso ricavare al volo la <strong>serie destagionalizzata</strong> — il traffico &#8220;depurato&#8221; dalla stagionalità, quello che ci dice se stiamo davvero crescendo o se è soltanto alta stagione — grazie alla funzione seasadj() del pacchetto <em>forecast</em>:</p>



<pre class="wp-block-preformatted">library(forecast)
# la serie destagionalizzata: trend + residui
sitomese_dest &lt;- seasadj(sitomese_loess)
plot(sitomese_dest, main="Sessioni destagionalizzate")</pre>



<h3 class="wp-block-heading" id="seasonal-plot">Il seasonal plot: la stagionalità a colpo d&#8217;occhio</h3>



<p class="wp-block-paragraph">C&#8217;è poi un grafico che, nella pratica quotidiana, vale da solo metà dell&#8217;analisi della stagionalità: il <strong>seasonal plot</strong> (grafico stagionale). L&#8217;idea è semplice: invece di disegnare la serie come un&#8217;unica linea continua, sovrappongo gli anni — i mesi sull&#8217;asse orizzontale, una linea per ogni anno. Se le linee si somigliano (il crollo di agosto, il picco di novembre), la stagionalità c&#8217;è, si vede e si ripete; se una linea si stacca dalle altre, in quell&#8217;anno è successo qualcosa che merita un&#8217;indagine. Disegno il seasonal plot con la funzione ggseasonplot() del pacchetto <em>forecast</em>:</p>



<pre class="wp-block-preformatted">library(forecast)
# una linea per ogni anno, i mesi sull'asse x
ggseasonplot(sitomese_ts, year.labels = TRUE)

# variante "polare": i mesi disposti in cerchio
ggseasonplot(sitomese_ts, polar = TRUE)</pre>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="962" height="608" src="https://www.gironi.it/blog/wp-content/uploads/2026/06/seasonal-plot-sessioni-mensili.png" alt="Seasonal plot di tre anni di sessioni mensili: una linea per ogni anno, con il calo estivo che si ripete" class="wp-image-3670" srcset="https://www.gironi.it/blog/wp-content/uploads/2026/06/seasonal-plot-sessioni-mensili.png 962w, https://www.gironi.it/blog/wp-content/uploads/2026/06/seasonal-plot-sessioni-mensili-300x190.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption class="wp-element-caption">Il seasonal plot: tre anni sovrapposti, il profilo stagionale si ripete</figcaption></figure>
</div>


<p class="wp-block-paragraph">Tre anni a confronto in un colpo d&#8217;occhio: la crescita da un anno all&#8217;altro (le linee si spostano verso l&#8217;alto) e il profilo stagionale che si ripete, con il minimo estivo e la ripresa autunnale. In alternativa, il comando monthplot(sitomese_ts) di base R raggruppa le osservazioni per mese, mostrando per ogni mese la media e l&#8217;evoluzione negli anni.</p>



<h2 class="wp-block-heading" id="holt-winters">Livellamento esponenziale con il metodo di Holt-Winters e previsione</h2>



<p class="wp-block-paragraph">Le tecniche di lisciamento (<em>smoothing</em>) e previsione (<em>forecast</em>) ci offrono potenti modalità operative al fine di prevedere valori futuri dei dati delle serie temporali.</p>



<p class="wp-block-paragraph">Al livello più elementare, il livellamento può essere realizzato utilizzando le <strong>medie mobili</strong>.</p>



<p class="wp-block-paragraph">In R, possiamo usare <strong>HoltWinters</strong>, una funzione per eseguire il livellamento delle serie storiche.<br>La funzione contiene tre metodi di <em>smoothing</em> esponenziali. Tutti e tre i metodi usano la stessa funzione, HoltWinters. Tuttavia, possiamo invocarli separatamente in base ai valori dei parametri alpha, beta e gamma.</p>



<p class="wp-block-paragraph">Il livellamento esponenziale Holt-Winters fornisce previsioni attendibili solo se non è presente autocorrelazione nei dati della serie temporale, cosa che può essere verificata, come vedremo tra breve in pratica, con la funzione <strong>acf</strong> e con un <strong>test Box–Pierce o Ljung–Box</strong>.</p>



<p class="wp-block-paragraph">Dopo aver creato un modello di previsione, dobbiamo infatti valutarlo per capire se rappresenta correttamente i dati. In maniera analoga ad un modello di regressione, possiamo usare per questo scopo i <strong>residui</strong>. Se i residui seguono una distribuzione di tipo <strong>rumore bianco</strong> (<em>white noise</em>), allora la sequenza (o errore) dei residui è generata da un processo di tipo stocastico. E quindi il nostro modello ben rappresenta la serie temporale.</p>



<p class="wp-block-paragraph">Vediamo un esempio. Supponiamo di avere una serie storica x :</p>



<pre class="wp-block-preformatted"># Usiamo la funzione forecast per una previsione: prossimi 6 periodi
x.hw &lt;- HoltWinters(x)
futuro.pre &lt;- forecast(x.hw, h=6)
# stampiamo a video un riepilogo
summary(futuro.pre)
# disegniamo il grafico
plot(futuro.pre)

# disegniamo il grafico dei residui per stimare l’autocorrelazione
acf(futuro.pre$residuals,na.action = na.pass)
# facciamo un test di autocorrelazione
Box.test(futuro.pre$residuals)</pre>



<p class="wp-block-paragraph"><strong>L’autocorrelazione ci indica se i termini di una serie storica dipendono dal proprio passato.</strong><br><br>Se consideriamo una serie temporale x di lunghezza n, l’autocorrelazione di lag 1 può essere stimata come la correlazione della coppia di osservazioni (x[t], x[t-1]).</p>



<p class="wp-block-paragraph">R ci mette a disposizione un comodo comando: <strong>acf()</strong>.<br>Usando:</p>



<pre class="wp-block-preformatted">acf(x, lag.max = 1, plot = FALSE)</pre>



<p class="wp-block-paragraph">sulla serie x viene automaticamente calcolata l’autocorrelazione di grado -1.</p>



<p class="wp-block-paragraph">di default il comando acf(x) traccia un grafico, che mostra due righe orizzontali blu tratteggiate, che rappresentano l’intervallo di confidenza al 95%. <br>La stima dell’autocorrelazione è indicata dall’altezza delle barre verticali (<em>ovviamente l’autocorrelazione al grado 0 è sempre 1</em>).</p>



<p class="wp-block-paragraph">L’intervallo di confidenza è usato per determinare la significatività statistica dell’autocorrelazione.</p>



<p class="wp-block-paragraph">Mostro a mo’ d’esempio l’output della funzione acf() sulla serie storica Nile fornita da R:</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="855" height="540" src="https://www.gironi.it/blog/wp-content/uploads/2020/07/acf-nile.png" alt="Esempio di grafico acf di autocorrelazione di una serie storica" class="wp-image-1772" style="width:641px;height:405px" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/07/acf-nile.png 855w, https://www.gironi.it/blog/wp-content/uploads/2020/07/acf-nile-300x189.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></figure>



<p class="wp-block-paragraph">Se il coefficiente di autocorrelazione diminuisce e cade rapidamente tra i bordi, ciò significa che i residui seguono una distribuzione di tipo rumore bianco. Non c&#8217;è evidente autocorrelazione.<br>Al contrario, se i coefficienti sono sempre sopra o sotto il limite, ciò significa che i residui sono autocorrelati.</p>



<p class="wp-block-paragraph">Un test di autocorrelazione <strong>Ljung-Box</strong> è una forma particolare di test delle ipotesi, e fornisce un valore<em> p</em> come output, valore che ci consente di capire se rigettare l&#8217;ipotesi nulla o meno.</p>



<p class="wp-block-paragraph">Applichiamo la funzione box.test sulla sequenza residua; troviamo il valore p. Se esso è superiore al valore di α non possiamo rifiutare l&#8217;ipotesi nulla. Cioè, i residui sono rumore bianco e ciò dimostra che il nostro modello &#8220;funziona bene&#8221; nella previsione del valore.</p>



<p class="wp-block-paragraph">Vediamo il tutto in azione nel nostro esempio SEO relativo al traffico di un sito web, usando anche la libreria <em>highcharter</em> per una migliore visualizzazione dell&#8217;output:</p>



<pre class="wp-block-preformatted"># Per prima cosa carico le librerie che mi servono

<strong>library(googleAnalyticsR)</strong> 
# per leggere i dati di Google Analytics 4

<strong>library(forecast)</strong> 
# per le previsioni su serie temporali

<strong>library(highcharter) </strong>
# per ottenere il grafico

# ID numerico della proprietà GA4
# (Amministrazione &gt; Proprietà &gt; Dettagli proprietà)
<strong>property_id &lt;- 123456789</strong>

# Autorizzo Google Analytics
<strong>ga_auth()</strong>

# e poi recupero i dati dalla Data API di GA4
<strong>sitomese &lt;- ga_data(property_id, 
            metrics = "sessions", 
            dimensions = "yearMonth",
            date_range = c("2023-01-01", "2025-12-31"),
            limit = -1)</strong>
# nb: la dimensione dei miei dati è annomese
# e ordino le righe per mese
sitomese &lt;- sitomese[order(sitomese$yearMonth), ]

# Ora esprimo i dati come serie temporale
<strong>sitomese_ts &lt;- ts(sitomese$sessions, start = c(2023,1), frequency = 12)</strong>
 
# Calcolo il livellamento Holt-Winters
<strong>previsione &lt;- HoltWinters(sitomese_ts)</strong>

# Genero una previsione per i prossimi 12 mesi
<strong>hchart(forecast(previsione, h = 12))</strong></pre>



<p class="wp-block-paragraph">A chi legge il compito di testare la bontà del modello previsionale.</p>



<h2 class="wp-block-heading" id="arima">Indagare le serie storiche con i modelli ARIMA</h2>



<p class="wp-block-paragraph">L&#8217;uso del metodo di livellamento esponenziale richiede che i residui non siano correlati. Nei casi reali, questo è abbastanza improbabile. Abbiamo però altri strumenti a disposizione per affrontare anche questi casi: R ci fornisce la funzione ARIMA per costruire modelli di serie temporale che prendano in considerazione l’autocorrelazione.</p>



<h3 class="wp-block-heading">Il rumore bianco (white noise)</h3>



<p class="wp-block-paragraph">L’utilissima funzione arima.sim consente di simulare un processo ARIMA generando i dati di una serie temporale ad hoc.</p>



<p class="wp-block-paragraph">Attraverso questa funzione, dunque, possiamo iniziare a vedere due modelli di serie temporali basilari: il <strong>rumore bianco</strong> (<em><strong>white noise</strong></em>) e la <strong>passeggiata </strong><strong>aleatoria</strong> (<em><strong>random walk</strong></em>).</p>



<p class="wp-block-paragraph">Un modello ARIMA consta di tre componenti: ARIMA(p,d,q).</p>



<ul class="wp-block-list">
<li>p è l’ordine di autoregressione</li>



<li>d è l’ordine dell’integrazione</li>



<li>q è l’ordine della media mobile</li>
</ul>



<p class="wp-block-paragraph">Il rumore bianco è l’esempio più elementare di processo stazionario. Le caratteristiche salienti:</p>



<ol class="wp-block-list">
<li>Presenta una media fissa, costante.</li>



<li>Ha varianza costante.</li>



<li>Non segue nessuna correlazione temporale.</li>
</ol>



<p class="wp-block-paragraph">Il modello white noise in termini ARIMA è dunque ARIMA(0,0,0).</p>



<p class="wp-block-paragraph">Andiamo allora a simulare una serie temporale di questo tipo:</p>



<pre class="wp-block-preformatted">wn &lt;- arima.sim(model = list(order = c(0,0,0)), n=100)
ts.plot(wn)</pre>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="855" height="540" src="https://www.gironi.it/blog/wp-content/uploads/2020/08/rumore-bianco-ts.png" alt="Esempio di serie temporale Rumore Bianco (White Noise)" class="wp-image-1781" style="width:641px;height:405px" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/08/rumore-bianco-ts.png 855w, https://www.gironi.it/blog/wp-content/uploads/2020/08/rumore-bianco-ts-300x189.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption class="wp-element-caption">Un esempio di serie temporale di un processo White Noise</figcaption></figure>



<h3 class="wp-block-heading">La passeggiata aleatoria (random walk)</h3>



<p class="wp-block-paragraph">Il Random Walk è un semplice esempio di <strong>processo non-stazionario</strong>. Presenta queste caratteristiche salienti:</p>



<ul class="wp-block-list">
<li>Non ha una media o una varianza specifici</li>



<li>Mostra una forte dipendenza temporale</li>



<li>I suoi cambiamenti o incrementi sono di tipo Rumore Bianco (White Noise)</li>
</ul>



<p class="wp-block-paragraph">Anche il modello della passeggiata aleatoria è un modello di base di serie temporale, e può essere facilmente simulato con la nostra funzione arima.sim.<br>Il modello Random Walk è la somma cumulativa di serie Rumore Bianco aventi media zero.<br>Da questo discende che la prima serie differenziata di una serie Random Walk è una serie White Noise!</p>



<p class="wp-block-paragraph">Il modello ARIMA per una serie Random Walk è ARIMA(0,1,0).</p>



<p class="wp-block-paragraph">Generiamo una serie di questo tipo e visualizziamola:</p>



<pre class="wp-block-preformatted">RW &lt;- arima.sim(model = list(order = c(0,1,0)), n = 100)
ts.plot(RW)</pre>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="855" height="540" src="https://www.gironi.it/blog/wp-content/uploads/2020/08/RW-ts.png" alt="Esempio di modello Passeggiata aleatoria (Random Walk)" class="wp-image-1783" style="width:641px;height:405px" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/08/RW-ts.png 855w, https://www.gironi.it/blog/wp-content/uploads/2020/08/RW-ts-300x189.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption class="wp-element-caption">Grafico di una serie storica di tipo Random Walk</figcaption></figure>



<p class="wp-block-paragraph">vediamo la controprova di quanto affermato sopra:</p>



<pre class="wp-block-preformatted">RWdiff &lt;- diff(RW)
ts.plot(RWdiff)</pre>



<p class="wp-block-paragraph">Otteniamo proprio una serie di tipo White Noise:</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="855" height="540" src="https://www.gironi.it/blog/wp-content/uploads/2020/08/RWdiff.png" alt="Diff serie Random Walk" class="wp-image-1784" style="width:641px;height:405px" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/08/RWdiff.png 855w, https://www.gironi.it/blog/wp-content/uploads/2020/08/RWdiff-300x189.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></figure>



<h2 class="wp-block-heading">Il modello ARIMA in azione</h2>



<p class="wp-block-paragraph">Il modello autoregressivo integrato a media mobile (ARIMA &#8211; <em>AutoRegressive Integrated Moving Average</em>) è noto anche come <strong>modello Box-Jenkins</strong>, dal nome degli statistici George Box e Gwilym Jenkins.</p>



<p class="wp-block-paragraph">Lo scopo di ARIMA è di trovare il modello che meglio rappresenti i valori di una serie storica.</p>



<p class="wp-block-paragraph">Un modello ARIMA può essere espresso come ARIMA (p, d, q), dove, come abbiamo già visto, p è l&#8217;ordine del modello autoregressivo, d indica il grado di differenziazione e q indica l&#8217;ordine della media mobile..</p>



<p class="wp-block-paragraph"><strong>Operativamente, possiamo definire cinque passaggi per adattare le serie storiche a un modello ARIMA</strong>:</p>



<ol class="wp-block-list">
<li>Visualizzare le serie temporali con un grafico.</li>



<li>Differenziare le serie storiche non stazionarie per ottenere serie temporali stazionarie.</li>



<li>Tracciare grafici ACF e PACF per trovare i valori ottimali di p e q, oppure ricavarli usando la funzione auto.arima.</li>



<li>Costruire il modello ARIMA.</li>



<li>Fare la previsione.</li>
</ol>



<h2 class="wp-block-heading" id="arima-esempio">Vediamo un esempio pratico di modello ARIMA</h2>



<p class="wp-block-paragraph">1. Simulo un processo ARIMA grazie alla funzione arima.sim() e disegno il grafico:</p>



<pre class="wp-block-preformatted">simts &lt;- arima.sim(list(order = c(1,1,0), ar = 0.64), n = 100)
plot(simts)</pre>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="855" height="540" src="https://www.gironi.it/blog/wp-content/uploads/2020/08/arimasim.png" alt="simulazione modello ARIMA" class="wp-image-1788" style="width:641px;height:405px" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/08/arimasim.png 855w, https://www.gironi.it/blog/wp-content/uploads/2020/08/arimasim-300x189.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></figure>



<p class="wp-block-paragraph">2. Faccio la differenza per ottenere una serie storica stazionaria e traccio il grafico:</p>



<pre class="wp-block-preformatted">simts.diff &lt;- diff(simts)
plot(simts.diff)</pre>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="855" height="540" src="https://www.gironi.it/blog/wp-content/uploads/2020/08/simts-diff.png" alt="serie stazionaria" class="wp-image-1789" style="width:641px;height:405px" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/08/simts-diff.png 855w, https://www.gironi.it/blog/wp-content/uploads/2020/08/simts-diff-300x189.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></figure>



<p class="wp-block-paragraph">3. Uso la funzione auto.arima per stimare i migliori valori di p,d, e q:</p>



<pre class="wp-block-preformatted">auto.arima(simts, ic="bic")


Series: simts 
ARIMA(1,1,0) 
Coefficients: 
ar1 0.6331 
s.e. 0.0760 
sigma^2 estimated as 0.9433: log likelihood=-138.73 
AIC=281.46 AICc=281.58 BIC=286.67</pre>



<p class="wp-block-paragraph">4. Creo il modello ARIMA con i valori p,d e q indicati (nel nostro esempio 1,1,0):</p>



<pre class="wp-block-preformatted">fit &lt;- Arima(simts, order=c(1,1,0))
summary(fit)</pre>



<p class="wp-block-paragraph">5. Basandoci ora sul nostro modello ARIMA possiamo passare alla previsione di valori futuri della serie e a tracciare il grafico:</p>



<pre class="wp-block-preformatted">fit.prev &lt;- forecast(fit)
summary(fit.prev)
plot(fit.prev)</pre>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="855" height="540" src="https://www.gironi.it/blog/wp-content/uploads/2020/08/arimaprev.png" alt="forecast arima" class="wp-image-1790" style="width:641px;height:405px" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/08/arimaprev.png 855w, https://www.gironi.it/blog/wp-content/uploads/2020/08/arimaprev-300x189.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></figure>



<p class="wp-block-paragraph">Le aree colorate mostrano gli intervalli di confidenza all’80% e al 95%.</p>



<p class="wp-block-paragraph">Passiamo infine a valutare la bontà del nostro modello con un grafico acf():</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="855" height="540" src="https://www.gironi.it/blog/wp-content/uploads/2020/08/prev-res.png" alt="autocorrelologramma" class="wp-image-1791" style="width:641px;height:405px" srcset="https://www.gironi.it/blog/wp-content/uploads/2020/08/prev-res.png 855w, https://www.gironi.it/blog/wp-content/uploads/2020/08/prev-res-300x189.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></figure>



<p class="wp-block-paragraph">Come per il modello di livellamento esponenziale, possiamo usare la funzione acf per calcolare i residui e creare il diagramma di autocorrelazione. Poiché il coefficiente di autocorrelazione diminuisce rapidamente, i residui sono rumore bianco.</p>



<p class="wp-block-paragraph">Possiamo anche fare un test Box-Pierce:</p>



<pre class="wp-block-preformatted">Box.test(fit.prev$residuals)

Box-Pierce test 
data: fit.prev$residuals 
X-squared = 0.020633, df = 1, p-value = 0.8858</pre>



<p class="wp-block-paragraph">e otteniamo un valore p che indica la non rigettabilità dell’ipotesi nulla.</p>



<h2 class="wp-block-heading" id="prova-tu">Prova tu</h2>



<p class="wp-block-paragraph">Per consolidare il tutto, ecco un esercizio completo che non richiede né un sito né un accesso a Google Analytics: i dati ce li generiamo da soli. Costruiamo in R tre anni di sessioni mensili realistiche — una crescita di fondo, un calo estivo marcato (come capita a molti siti B2B) e un po&#8217; di rumore casuale:</p>



<pre class="wp-block-preformatted">set.seed(42)

# 36 mesi: trend in crescita + stagionalità + rumore
trend &lt;- seq(8000, 14000, length.out = 36)
stagionalita &lt;- rep(c(1.05, 1.08, 1.12, 1.04, 0.98, 0.88,
                      0.72, 0.65, 1.02, 1.12, 1.16, 1.10), 3)
rumore &lt;- rnorm(36, mean = 1, sd = 0.04)
sessioni &lt;- round(trend * stagionalita * rumore)

# la serie temporale: mensile, da gennaio 2023
traffico_ts &lt;- ts(sessioni, start = c(2023, 1), frequency = 12)</pre>



<p class="wp-block-paragraph">L&#8217;esercizio ripercorre l&#8217;intero articolo, in cinque passi:</p>



<ol class="wp-block-list">
<li>Disegniamo la serie con plot.ts(traffico_ts): trend e stagionalità si vedono già a occhio nudo?</li>



<li>Il seasonal plot con ggseasonplot(traffico_ts, year.labels = TRUE): è proprio il grafico mostrato più sopra — il crollo di agosto è riconoscibile al primo sguardo?</li>



<li>Decomponiamo con stl(traffico_ts, s.window = &#8220;periodic&#8221;), disegniamo le componenti con plot() e ricaviamo la serie destagionalizzata con seasadj().</li>



<li>Stimiamo modello e previsione: futuro &lt;- forecast(HoltWinters(traffico_ts), h = 6), poi plot(futuro).</li>



<li>Valutiamo i residui: acf(residuals(futuro), na.action = na.pass) e Box.test(residuals(futuro), type = &#8220;Ljung-Box&#8221;). Il modello regge?</li>
</ol>



<p class="wp-block-paragraph">Se tutto fila liscio, la previsione per i primi sei mesi del 2026 dovrebbe proseguire la crescita rispettando il profilo stagionale (n.b.: con seed 42, il punto di previsione di gennaio si aggira sulle 15.300 sessioni), e il test di Ljung-Box sui residui dovrebbe restituire un p-value abbondantemente sopra 0,05: i residui sono rumore bianco, il modello ha catturato la struttura della serie.</p>



<p class="wp-block-paragraph">Un&#8217;ultima avvertenza, prima di chiudere, perché lo strumento è potente ma insidioso: un modello di previsione — Holt-Winters o ARIMA che sia — <strong>proietta nel futuro le regolarità del passato</strong>. Funziona finché il mondo continua a comportarsi come si è comportato: un core update di Google, una migrazione fatta male, un competitor aggressivo non sono nel modello, e nessuna banda di confidenza li può prevedere. Per questo, nella pratica SEO, la previsione serve meno a indovinare il futuro e più ad accorgersi in fretta che il presente se ne sta scostando: quando il traffico reale esce dalle bande della previsione, è lì che dobbiamo andare a guardare. Di questo uso &#8220;in negativo&#8221; dei modelli abbiamo parlato nell&#8217;articolo sull&#8217;<a href="https://www.gironi.it/blog/anomaly-detection/">anomaly detection</a>, e torneremo presto sulla decomposizione del traffico organico con un caso di studio dedicato.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Per approfondire</h3>



<p class="wp-block-paragraph">Per approfondire l&#8217;analisi delle serie storiche &mdash; stazionariet&agrave;, autocorrelazione, modelli previsivi &mdash; <a href="https://www.amazon.it/dp/8891906190?tag=consulenzeinf-21&#038;ascsubtag=analisi-delle-serie-storiche0-e-previsioni-di-serie-temporali-in-r-con-il-metodo-holt-winters" rel="nofollow sponsored noopener" target="_blank"><em>Introduzione all&#8217;econometria</em></a> di Stock e Watson dedica all&#8217;argomento capitoli chiari e rigorosi.</p>



<p class="wp-block-paragraph">Sul versante divulgativo, <a href="https://www.amazon.it/dp/8860443865?tag=consulenzeinf-21&#038;ascsubtag=analisi-delle-serie-storiche0-e-previsioni-di-serie-temporali-in-r-con-il-metodo-holt-winters" rel="nofollow sponsored noopener" target="_blank"><em>Il segnale e il rumore</em></a> di Nate Silver racconta perché le previsioni falliscono così spesso — e come ragionano i bravi previsori: il complemento ideale, da leggere senza computer davanti.</p>


<!-- internal-links-section -->
<h3>Potrebbe interessarti anche</h3>
<ul>
<li><a href="https://www.gironi.it/blog/anomaly-detection/">Anomaly detection: come identificare valori anomali nei dati</a></li>
<li><a href="https://www.gironi.it/blog/il-paradosso-di-simpson-nella-seo-quando-i-dati-aggregati-possono-mentire/">Il Paradosso di Simpson nella SEO: quando i dati aggregati possono mentire</a></li>
</ul>]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/analisi-delle-serie-storiche0-e-previsioni-di-serie-temporali-in-r-con-il-metodo-holt-winters/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Come redirigere gli indirizzi http verso https</title>
		<link>https://www.gironi.it/blog/come-redirigere-gli-indirizzi-http-verso-https/</link>
					<comments>https://www.gironi.it/blog/come-redirigere-gli-indirizzi-http-verso-https/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Thu, 07 Nov 2019 10:08:40 +0000</pubDate>
				<category><![CDATA[seo]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=1366</guid>

					<description><![CDATA[Più che un post, questo è un memo-express.Senza perdermi in spiegazioni, che rimando magari a un post più dettagliato (e sensato) futuro, ecco la soluzione quick-and-dirty via .htaccess: RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.nomedeldominio.it/$1 [R,L]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Più che un post, questo è un memo-express.<br>Senza perdermi in spiegazioni, che rimando magari a un post più dettagliato (e sensato) futuro, ecco la soluzione quick-and-dirty via .htaccess:</p>



<pre class="wp-block-preformatted">RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.nomedeldominio.it/$1 [R,L]</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/come-redirigere-gli-indirizzi-http-verso-https/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Come monitorare le telefonate Google Ads generate dal mio sito</title>
		<link>https://www.gironi.it/blog/monitorare-le-chiamate-telefoniche-sul-sito-attraverso-google-ads/</link>
					<comments>https://www.gironi.it/blog/monitorare-le-chiamate-telefoniche-sul-sito-attraverso-google-ads/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Wed, 06 Nov 2019 15:23:21 +0000</pubDate>
				<category><![CDATA[seo]]></category>
		<category><![CDATA[Tag Manager]]></category>
		<category><![CDATA[digital marketing]]></category>
		<category><![CDATA[Google Ads]]></category>
		<category><![CDATA[web analytics]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=1344</guid>

					<description><![CDATA[Google Ads e Google Tag Manager ci forniscono un metodo semplice, rapido da implementare e tremendamente utile per monitorare attraverso un numero di inoltro &#8220;trasparente&#8221; le telefonate in arrivo tramite il proprio sito web. Quello che un tempo era possibile fare con non pochi passaggi e &#8220;sporcandosi le mani&#8221; con un po&#8217; di lavoro sul &#8230; <a href="https://www.gironi.it/blog/monitorare-le-chiamate-telefoniche-sul-sito-attraverso-google-ads/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Come monitorare le telefonate Google Ads generate dal mio sito"</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Google Ads e Google Tag Manager ci forniscono un metodo semplice, rapido da implementare e tremendamente utile per <strong>monitorare attraverso un numero di inoltro</strong> &#8220;trasparente&#8221;<strong> le telefonate in arrivo tramite il proprio sito web</strong>.</p>



<p class="wp-block-paragraph">Quello che un tempo era possibile fare con non pochi passaggi e &#8220;sporcandosi le mani&#8221; con un po&#8217; di lavoro sul codice, oggi è davvero alla portata dell&#8217;utilizzatore medio, con qualche clic&#8230;</p>



<span id="more-1344"></span>



<h2 class="wp-block-heading">Monitorare le chiamate da web</h2>



<p class="wp-block-paragraph">Google ci fornisce un metodo molto efficace per far arrivare una telefonata <strong>transitando in maniera del tutto trasparente (per l&#8217;utente) da un numero &#8220;ponte&#8221;</strong>. Questo consente al sistema di <strong>misurare l&#8217;obiettivo</strong>, potendo fissare utili parametri, quale ad esempio il <strong>conteggiare la conversione solo se la chiamata ha avuto una durata superiore a tot secondi</strong>.</p>



<p class="wp-block-paragraph">Per usufruire di questa possibilità dovremo avere una <strong>campagna Google Ads</strong> attiva, un po&#8217; di <strong>tempo a disposizione</strong> e ovviamente <strong>Google Tag Manager</strong> configurato sul nostro sito. Prerequisiti davvero ragionevoli, si può partire&#8230;</p>



<h2 class="wp-block-heading">Ok Google, tracciami questo obiettivo</h2>



<p class="wp-block-paragraph">Apro il mio account Google Ads , vado sulla Chiave Inglese (&#8220;<em>Strumenti e Impostazioni</em>&#8220;) e scelgo &#8220;<em>Misurazione</em>&#8221; e poi &#8220;<em>Conversioni</em>&#8220;. Mi si apre l&#8217;elenco dei miei obiettivi di conversione. <br>Li ho settati, vero?</p>



<p class="wp-block-paragraph">Si tratta ora di crearne uno nuovo, quindi <strong>clicco sull&#8217;icona blu con il +</strong></p>



<p class="wp-block-paragraph">Ecco cosa devo scegliere:</p>



<figure class="wp-block-image is-resized"><img decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2019/11/google-ads-obiettivo-chiamata-sulsito.jpg" alt="google ads obiettivo chiamata sulsito" class="wp-image-1347" width="597" height="258" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/11/google-ads-obiettivo-chiamata-sulsito.jpg 1194w, https://www.gironi.it/blog/wp-content/uploads/2019/11/google-ads-obiettivo-chiamata-sulsito-300x129.jpg 300w, https://www.gironi.it/blog/wp-content/uploads/2019/11/google-ads-obiettivo-chiamata-sulsito-1024x442.jpg 1024w" sizes="(max-width: 597px) 85vw, 597px" /><figcaption>ovviamente scelgo l&#8217;opzione per tracciare le chiamate dal sito web</figcaption></figure>



<p class="wp-block-paragraph">Tra le opzioni proposte, scelgo di <strong>monitorare le telefonate che hanno origine sul mio sito web</strong>:</p>



<figure class="wp-block-image is-resized"><img decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2019/11/monitorare-chiamata-1024x616.jpg" alt="Monitorare chiamata telefonica sul mio sito web" class="wp-image-1350" width="512" height="308" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/11/monitorare-chiamata-1024x616.jpg 1024w, https://www.gironi.it/blog/wp-content/uploads/2019/11/monitorare-chiamata-300x180.jpg 300w, https://www.gironi.it/blog/wp-content/uploads/2019/11/monitorare-chiamata-1200x721.jpg 1200w, https://www.gironi.it/blog/wp-content/uploads/2019/11/monitorare-chiamata.jpg 1206w" sizes="(max-width: 512px) 85vw, 512px" /></figure>



<p class="wp-block-paragraph">La schermata che segue ci chiede di <strong>scegliere un nome</strong> per la nostra conversione, di fornire un <strong>valore per l&#8217;obiettivo</strong>, di inserire la <strong>durata minima della chiamata</strong> che vogliamo conteggiare come conversione&#8230;</p>



<figure class="wp-block-image is-resized"><img decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2019/11/impostazioni-982x1024.png" alt="impostazioni" class="wp-image-1353" width="491" height="512" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/11/impostazioni-982x1024.png 982w, https://www.gironi.it/blog/wp-content/uploads/2019/11/impostazioni-288x300.png 288w, https://www.gironi.it/blog/wp-content/uploads/2019/11/impostazioni-1200x1251.png 1200w, https://www.gironi.it/blog/wp-content/uploads/2019/11/impostazioni.png 1908w" sizes="(max-width: 491px) 85vw, 491px" /></figure>



<p class="wp-block-paragraph">A questo punto scelgo il metodo più semplice: Tag Manager</p>



<figure class="wp-block-image is-resized"><img decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2019/11/tagmanager-1024x346.jpg" alt="tagmanager" class="wp-image-1355" width="512" height="173" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/11/tagmanager-1024x346.jpg 1024w, https://www.gironi.it/blog/wp-content/uploads/2019/11/tagmanager-300x101.jpg 300w, https://www.gironi.it/blog/wp-content/uploads/2019/11/tagmanager-1200x406.jpg 1200w, https://www.gironi.it/blog/wp-content/uploads/2019/11/tagmanager.jpg 1605w" sizes="(max-width: 512px) 85vw, 512px" /></figure>



<h2 class="wp-block-heading">Mi sposto su Tag Manager</h2>



<p class="wp-block-paragraph">Google Ads, a questo punto genererà due valori fondamentali: </p>



<ol class="wp-block-list"><li><strong> ID conversione </strong></li><li><strong> Etichetta conversione</strong> </li></ol>



<p class="wp-block-paragraph">Questo è tutto ciò che ci serve lato Google Ads! Posso passare alle due azioni che mi servono lato Tag Manager per completare il mio lavoro.</p>



<ol class="wp-block-list"><li>Aggiungo un&nbsp; <strong>tag Linker conversioni</strong> e lo configuro perchè venga attivato in tutte le pagine web del sito.</li><li>Installo il<strong> tag di monitoraggio </strong>delle conversioni Google Ads.</li></ol>



<h2 class="wp-block-heading"> Creo il tag “Linker di Conversioni”</h2>



<p class="wp-block-paragraph">E&#8217; veramente semplicissimo. Apro il mio Tag Manager, creo un nuovo Tag e scelgo come tipo di Tag &#8220;<em>Linker Conversioni</em>&#8220;. E&#8217; già pronto. Scelgo di attivarlo su &#8220;<em>Tutte le pagine</em>&#8221; e questa è fatta. Facile, vero?</p>



<figure class="wp-block-image is-resized"><img decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2019/11/linker-conversioni-1024x517.jpg" alt="linker conversioni" class="wp-image-1357" width="512" height="259" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/11/linker-conversioni-1024x517.jpg 1024w, https://www.gironi.it/blog/wp-content/uploads/2019/11/linker-conversioni-300x151.jpg 300w, https://www.gironi.it/blog/wp-content/uploads/2019/11/linker-conversioni-1200x606.jpg 1200w, https://www.gironi.it/blog/wp-content/uploads/2019/11/linker-conversioni.jpg 1505w" sizes="(max-width: 512px) 85vw, 512px" /><figcaption>Due clic e il mio linker di conversioni è pronto all&#8217;uso!</figcaption></figure>



<h2 class="wp-block-heading">Google Ads &#8211; Chiamate dalla conversione sul sito web </h2>



<p class="wp-block-paragraph">Manca solo un passaggio: <strong>creo un nuovo tag di tipo  &#8220;<em>Google Ads &#8211; Chiamate dalla conversione sul sito web</em>&#8220;</strong>.</p>



<p class="wp-block-paragraph">I campi da valorizzare sono il<strong> numero di telefono da monitorare</strong> e i due valori rilasciati da Google Ads: &#8220;<strong>ID conversione</strong>&#8221; ed &#8220;<strong>Etichetta conversione</strong>&#8220;.</p>



<p class="wp-block-paragraph">Inserisco i dati e scelgo come attivatore &#8220;<em>Tutte le pagine</em>&#8220;, oppure posso decidere di monitorare con un attivatore specifico solo le pagine che contengono il numero di telefono. A voi la scelta.</p>



<h2 class="wp-block-heading">Tutto pronto: si parte!</h2>



<p class="wp-block-paragraph">Non mi resta che fare un check sull&#8217;attivazione del tag usando la <strong>modalità anteprima di Tag Manager</strong> e una volta verificato che è tutto ok procedere alla <strong>pubblicazione della versione</strong>. Non resta che tenere d&#8217;occhio il rapporto sulle azioni di conversione di Google Ads. Buona fortuna!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/monitorare-le-chiamate-telefoniche-sul-sito-attraverso-google-ads/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Un breve manifesto (personale) per l&#8217;attività SEO</title>
		<link>https://www.gironi.it/blog/un-breve-manifesto-personale-per-lattivita-seo/</link>
					<comments>https://www.gironi.it/blog/un-breve-manifesto-personale-per-lattivita-seo/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Thu, 27 Dec 2018 18:06:37 +0000</pubDate>
				<category><![CDATA[seo]]></category>
		<category><![CDATA[statistica]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=1196</guid>

					<description><![CDATA[L&#8217;esigenza che avverto, frutto di molti anni di attività nel settore, è quella di affermare l&#8217;importanza decisiva di un elementare rigore scientifico nell&#8217;analisi dei dati di traffico al fine di calibrare con accuratezza e non solo « a sentimento» (anche se i sentimenti sono importanti!) gli interventi SEO per i propri clienti. Gli strumenti a &#8230; <a href="https://www.gironi.it/blog/un-breve-manifesto-personale-per-lattivita-seo/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Un breve manifesto (personale) per l&#8217;attività SEO"</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">L&#8217;esigenza che avverto, frutto di molti anni di attività nel settore, è quella di affermare l&#8217;importanza decisiva di un elementare rigore scientifico nell&#8217;analisi dei dati di traffico al fine di calibrare con accuratezza e non solo « a sentimento» (anche se i sentimenti sono importanti!) gli interventi SEO per i propri clienti.</p>



<p class="wp-block-paragraph">Gli strumenti a disposizione del professionista SEO sono numerosissimi, eppure è innegabile che un senso di delusione risieda in noi. Troppe volte abbiamo a che fare con dati di apparente importanza strategica ma che risultano alla prova dei fatti fallaci, o imprecisi, puri specchietti per le allodole.</p>



<span id="more-1196"></span>



<p class="wp-block-paragraph">Alzi la mano che non ha avvertito un senso di frustrazione usando qualsiasi &#8211; proprio qualsiasi &#8211; tool di analisi della concorrenza, per fare un esempio concreto.</p>



<p class="wp-block-paragraph">Wittgenstein affermava che di <em>ciò di cui non possiamo parlare è necessario tacere</em>. </p>



<p class="wp-block-paragraph">Troppe volte traiamo delle conclusioni basandoci su dati assolutamente inaffidabili. Il tranello rappresentato da grafici accattivanti, conclusioni a portata di clic, effetti speciali è sempre con noi. Il tool che ci scodella l&#8217;analisi che serve, pronta all&#8217;uso, semplicemente non esiste.</p>



<p class="wp-block-paragraph">Troppe volte la SEO è trattata da chi la pratica non tanto come un&#8217;arte (questo sarebbe utile ed è persino necessario, per quanto non sufficiente) quanto come una sorta di armamentario di trucchi per apprendisti affabulatori, o come palestra di giochi di prestigio basati su numeri evanescenti. Sommatoria di qualche strumento per la SEO e di modelli di report buoni per tutte le evenienze. Oppure pratiche talvolta sciamanesche che si combinano in ricette miracolose.</p>



<p class="wp-block-paragraph">Tornare alla statistica. <strong>La SEO non è ovviamente solo statistica, ma poggia sui numeri</strong>.<br>La statistica di base, per iniziare. L&#8217;ABC della statistica descrittiva. </p>



<p class="wp-block-paragraph">Esaminare ciò che ci dicono i soli dati solidi che abbiamo, quelli che ci vengono dai nostri siti. Dati non campionari, dati non ricavati da traffici presunti sulla base di posizioni medie negli indici dei motori di ricerca, senza aggrapparsi a fantomatiche correlazioni mostrate come certe sulla base di r prossimi a 0&#8230;</p>



<p class="wp-block-paragraph"><strong>I nostri dati. Guardare a cosa ci dicono i nostri dati</strong>.</p>



<p class="wp-block-paragraph">Talvolta, ci sembra che ragionare in termini «semplici» &#8211; mediana e cinque numeri &#8211; boxplot e istogrammi, test delle ipotesi e medie mobili, sia riduttivo. Altre volte incontro professionisti che ritengono superflua anche solo una preparazione di base statistica, ignorando il fatto che la statistica ha un pregio fondamentale, insostituibile: quello di renderci scettici, e oltremodo dubbiosi.</p>



<p class="wp-block-paragraph"><strong>Sappiamo poco, in realtà</strong>. Poco è dato capire guardando numeri generati per lo più da ciò che un algoritmo ignoto nella composizione e nel bilanciamento delle sue variabili addensa in posizioni di un indice. <strong>Quel poco, tuttavia, deve essere ragionevolmente supportato dai dati e dal buon senso</strong>.</p>



<p class="wp-block-paragraph">Il resto è arte, appunto. Intuito, esperienza ed altro. Solo tracciando i confini tra ciò che è ragionevolmente (statisticamente) espresso dai dati in nostro possesso e ciò che la nostra esperienza suggerisce può far scaturire l&#8217;intuizione, l&#8217;esperimento dirimente. </p>



<p class="wp-block-paragraph">Solo così, io credo,  possiamo fornire un servizio di valore.</p>



<p class="wp-block-paragraph">La SEO è materia intrinsecamente insidiosa. Affrontarla richiede esperienza, una certa dose di coraggio e un necessario senso del limite.  </p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Per approfondire</h3>



<p class="wp-block-paragraph">Per chi vuole coltivare lo sguardo critico sui numeri che questo manifesto invoca, <a href="https://www.amazon.it/dp/8806246623?tag=consulenzeinf-21&#038;ascsubtag=un-breve-manifesto-personale-per-lattivita-seo" rel="nofollow sponsored noopener" target="_blank"><em>L&#8217;arte della statistica</em></a> di David Spiegelhalter &egrave; il punto di partenza ideale: un libro che insegna a interrogare i dati prima di fidarsene, esattamente l&#8217;attitudine che serve a chi fa SEO.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/un-breve-manifesto-personale-per-lattivita-seo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fare scraping dei meta dati in Fogli Google</title>
		<link>https://www.gironi.it/blog/scraping-dei-meta-dati-google-sheet/</link>
					<comments>https://www.gironi.it/blog/scraping-dei-meta-dati-google-sheet/#comments</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Thu, 05 Oct 2017 12:58:33 +0000</pubDate>
				<category><![CDATA[seo]]></category>
		<category><![CDATA[spreadsheet]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=535</guid>

					<description><![CDATA[Fogli di Google è uno strumento semplice quanto versatile, capace di automatizzare la risoluzione di noiose operazioni di routine in maniera rapida ed efficace. Esistono soluzioni interessantissime che si integrano in Fogli come risorse aggiuntive (penso a cose come Supermetrics, o Analytics Canvas per citare due esempi notissimi). Eppure, Fogli consente di fare mille cose &#8230; <a href="https://www.gironi.it/blog/scraping-dei-meta-dati-google-sheet/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Fare scraping dei meta dati in Fogli Google"</span></a>]]></description>
										<content:encoded><![CDATA[<p>Fogli di Google è uno strumento semplice quanto versatile, capace di automatizzare la risoluzione di noiose operazioni di routine in maniera rapida ed efficace.</p>
<p>Esistono soluzioni interessantissime che si integrano in Fogli come risorse aggiuntive (penso a cose come Supermetrics, o Analytics Canvas per citare due esempi notissimi). Eppure, Fogli consente di fare mille cose già con le funzioni base.<span id="more-535"></span></p>
<p>Veniamo dunque all&#8217;esempio.<br />
Parto dall&#8217;esigenza di ricavare, data una lista di URL, il contenuto dei tags <strong>Titolo</strong>, <strong>Meta Description</strong> e <strong>Meta Keywords.<br />
</strong>Fare cioè un po&#8217; di scraping di base, come si dice nel gergo seo&#8230;</p>
<p>In Fogli la soluzione è di una semplicità disarmante.</p>
<p>Per prima cosa apro un nuovo foglio e lo chiamo come voglio.</p>
<p>Nelle celle&nbsp;<strong>A1, B1, C1, D1</strong> metto i titoli:<br />
&#8220;URL&#8221;,&#8221;Titolo&#8221;,&#8221;Descrizione&#8221;,&#8221;Meta Keywords&#8221;.</p>
<p>Ora mi posiziono in A2 e incollo la lista delle URL da analizzare.</p>
<p>In B2 ecco la formula magica :). E&#8217; proprio semplice come sembra, e funziona.</p>
<pre>=IMPORTXML (A2;"//title/text ()")
</pre>
<p>Analogamente in C2:</p>
<pre>=IMPORTXML(A2; "//meta[@name='description']/@content")
</pre>
<p>E in D2:</p>
<pre>=IMPORTXML(A2;"//meta[@name='keywords']/@content")
</pre>
<p>Ora evidenzio le celle B1,C1,D1 e vado nell&#8217;angolo in basso a destra.<br />
Mi compare il simbolo del +</p>
<p>Trascino verso il basso fino ad arrivare all&#8217;ultima riga dove è presente una URL.</p>
<p>Fatto! I campi si popoleranno in pochi secondi con i dati richiesti.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/scraping-dei-meta-dati-google-sheet/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Marketing digitale: 3 metriche di base. CTR, CPL, ROAS</title>
		<link>https://www.gironi.it/blog/marketing-digitale-3-metriche-base/</link>
					<comments>https://www.gironi.it/blog/marketing-digitale-3-metriche-base/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Thu, 09 Jun 2016 07:40:42 +0000</pubDate>
				<category><![CDATA[analytics]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[digital marketing]]></category>
		<category><![CDATA[kpi]]></category>
		<category><![CDATA[metriche]]></category>
		<category><![CDATA[roas]]></category>
		<guid isPermaLink="false">http://www.gironi.it/blog/?p=482</guid>

					<description><![CDATA[CTR, CPL, ROAS&#8230; metriche di base Esistono numerose metriche utili per tenere sotto controllo e valutare il successo della nostra attività di marketing digitale. Immagino che sigle come CTR, CPL, ROAS non suonino del tutto ignote anche a persone che non hanno una specifica preparazione nel settore del marketing digitale. Mi sembra quindi non del &#8230; <a href="https://www.gironi.it/blog/marketing-digitale-3-metriche-base/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Marketing digitale: 3 metriche di base. CTR, CPL, ROAS"</span></a>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">CTR, CPL, ROAS&#8230; metriche di base</h2>



<p class="wp-block-paragraph">Esistono numerose<strong> metriche utili per tenere sotto controllo e valutare il successo della nostra attività di marketing digitale</strong>. Immagino che sigle come <a href="#ctr" class="rank-math-link">CTR</a>, <a href="#cpl" class="rank-math-link">CPL</a>, <a href="#roas" class="rank-math-link">ROAS</a> non suonino del tutto ignote anche a persone che non hanno una specifica preparazione nel settore del marketing digitale.</p>



<p class="wp-block-paragraph">Mi sembra quindi non del tutto superfluo ripassare insieme alcune di queste metriche di base, considerando le semplici formule necessario per calcolarne i valori e riflettendo brevemente sugli ambiti di utilizzo.</p>



<span id="more-482"></span>



<figure class="wp-block-image size-large is-resized wp-image-490 size-full"><img decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2021/04/grafico-1024x678.jpg" alt="grafico" class="wp-image-2210" width="512" height="339" srcset="https://www.gironi.it/blog/wp-content/uploads/2021/04/grafico-1024x678.jpg 1024w, https://www.gironi.it/blog/wp-content/uploads/2021/04/grafico-300x199.jpg 300w, https://www.gironi.it/blog/wp-content/uploads/2021/04/grafico-1536x1017.jpg 1536w, https://www.gironi.it/blog/wp-content/uploads/2021/04/grafico-2048x1356.jpg 2048w, https://www.gironi.it/blog/wp-content/uploads/2021/04/grafico-1200x795.jpg 1200w" sizes="(max-width: 512px) 85vw, 512px" /><figcaption>Roas, Ctr, CPL &#8211; 3 metriche di base per il marketing digitale Foto di <strong><a href="https://www.pexels.com/it-it/@goumbik?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels" target="_blank" rel="noopener">Lukas</a></strong> da <strong><a href="https://www.pexels.com/it-it/foto/laptop-nero-e-grigio-su-divano-componibile-nero-577210/?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels" target="_blank" rel="noopener">Pexels</a></strong></figcaption></figure>



<h3 class="wp-block-heading" id="roas">Come si calcola il &nbsp;ROAS, una metrica per l’e-commerce</h3>



<p class="wp-block-paragraph">La prima “sigla” che vorrei sfiorare in questa esposizione è il ROAS – ovvero <em>Return on ad spend</em>.</p>



<p class="wp-block-paragraph">Il nome direi che esplicita chiaramente il significato di questa metrica: <strong>è un valore che mi indica se ho speso in maniera proficua i miei soldi in investimenti pubblicitari</strong>. Inutile dire che l’e-commerce è un ambito “classico” di applicazione di questa misura.</p>



<p class="wp-block-paragraph">Come si calcola il ROAS? E’ molto semplice, come (quasi) sempre si tratta di un semplice rapporto, ed è espresso in termini percentuali.</p>



<div style="border: 1px dotted silver; padding: 10px;">\(ROAS\% = \frac{entrate}{importo \ speso \ in \ pubblicità} \times 100\)</div><br>



<p class="wp-block-paragraph"><strong>Esempio</strong>: vendo pipe di radica online ricavando 1800€ a fronte di costi pubblicitari di 1000€.</p>



<p class="wp-block-paragraph">Il ROAS sarà dunque:</p>



<p class="wp-block-paragraph"><strong>(1800€/1000€) x 100 = 180%</strong></p>



<h3 class="wp-block-heading" id="cpl"><strong>CPL : una metrica per la lead generation.</strong></h3>



<p class="wp-block-paragraph">CPL significa <em>Cost per Lead</em>, ovvero il costo per contatto.</p>



<p class="wp-block-paragraph">E’ una metrica di ovvia importanza per calcolare la bontà della mia strategia pubblicitaria finalizzata alla generazione di contatti.</p>



<p class="wp-block-paragraph">La formula è:</p>



<div style="border: 1px dotted silver; padding: 10px;">\(CPL = \frac{importo \ speso \ in \ pubblicità}{numero \ di \ leads} \)</div><br>



<p class="wp-block-paragraph">Esempio</p>



<p class="wp-block-paragraph"><strong>Il CPL è dunque: (5000/50)= 100€</strong></p>



<h3 class="wp-block-heading" id="ctr"><strong>Una misura dell’efficacia della mia campagna: il CTR</strong></h3>



<p class="wp-block-paragraph"><strong>CTR </strong>è l’acronimo per <em>click through rate</em>, ovvero la percentuale di clic.</p>



<p class="wp-block-paragraph">Il nome già dice tutto: si tratta anche in questo caso di un semplice rapporto, espresso in termini percentuali. Esso fornisce la <strong>percentuale di clic rispetto alle visualizzazioni (impressioni)</strong>, dunque in termini matematici si può esprimere in questi termini:</p>



<div style="border: 1px dotted silver; padding: 10px;">\(CTR = \frac{numero \ di \ clic}{numero \ di \ impressioni} \times 100 \)</div><br>



<p class="wp-block-paragraph">Se la mia pubblicità ha avuto 10000 visualizzazioni producendo 300 clic verso la mia landing page, il CTR dell’annuncio risulterà:</p>



<p class="wp-block-paragraph"><strong>(300/10000) x 100 = 3%</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/marketing-digitale-3-metriche-base/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
