Esempi di Business Analytics/Statistiche per il marketing
Caricamento librerie
[modifica | modifica sorgente]library(dplyr)
library(ggplot2)
library(GGally)
library(statsr)
Parte 1: Dati
[modifica | modifica sorgente]I dati utilizzati in questo progetto provengono da 3 campagne pubblicitarie sui social media di un'organizzazione anonima. Il file KAG_conversion_data.csv, scaricabile da kaggle, contiene 1143 osservazioni in 11 variabili. Di seguito sono riportate le descrizioni delle variabili:
- ad_id: un ID univoco per ogni annuncio.
- xyz_campaign_id: un ID associato a ciascuna campagna pubblicitaria dell'azienda XYZ. Le campagne sono 3: 916, 936 e 1178 .
- fb_campaign_id: un ID associato al modo in cui Facebook monitora ciascuna campagna.
- age: età della persona a cui viene mostrato l'annuncio.
- gender: sesso della persona a cui viene mostrato l'annuncio.
- interest: un codice che specifica la categoria a cui appartiene l'interesse della persona (gli interessi sono quelli menzionati nel profilo pubblico Facebook della persona).
- Impressions: il numero di volte in cui l'annuncio è stato mostrato.
- Clicks: numero di clic per quell'annuncio.
- Spent: importo pagato dalla società xyz a Facebook per mostrare l'annuncio.
- Total_Conversions: numero totale di persone che hanno chiesto informazioni sul prodotto dopo aver visto l'annuncio.
- Approved_Conversions : numero totale di persone che hanno acquistato il prodotto dopo aver visto l'annuncio.
Caricamento dati:
KAG_conversion_data <- read.csv("KAG_conversion_data.csv")
Parte 2: Domanda di ricerca
[modifica | modifica sorgente]Si vuole fare un'analisi statistica delle campagne pubblicitarie evidenziando medie, mediane, range, inferenze, correlazioni, modellizzazioni, previsioni ecc.
Parte 3: Esplorazione dati
[modifica | modifica sorgente]Innanzitutto attraverso la funzione summary di R è possibile visualizzare le statistiche di ogni variabile:
KAG_conversion_data$xyz_campaign_id <- as.factor(KAG_conversion_data$xyz_campaign_id)
KAG_conversion_data$age <- as.factor(KAG_conversion_data$age)
KAG_conversion_data$gender <- as.factor(KAG_conversion_data$gender)
summary(KAG_conversion_data)
ad_id xyz_campaign_id fb_campaign_id
Min. : 708746 916 : 54 Min. :103916
1st Qu.: 777632 936 :464 1st Qu.:115716
Median :1121185 1178:625 Median :144549
Mean : 987261 Mean :133784
3rd Qu.:1121804 3rd Qu.:144658
Max. :1314415 Max. :179982
age gender interest Impressions
30-34:426 F:551 Min. : 2.00 Min. : 87
35-39:248 M:592 1st Qu.: 16.00 1st Qu.: 6504
40-44:210 Median : 25.00 Median : 51509
45-49:259 Mean : 32.77 Mean : 186732
3rd Qu.: 31.00 3rd Qu.: 221769
Max. :114.00 Max. :3052003
Clicks Spent Total_Conversion
Min. : 0.00 Min. : 0.00 Min. : 0.000
1st Qu.: 1.00 1st Qu.: 1.48 1st Qu.: 1.000
Median : 8.00 Median : 12.37 Median : 1.000
Mean : 33.39 Mean : 51.36 Mean : 2.856
3rd Qu.: 37.50 3rd Qu.: 60.02 3rd Qu.: 3.000
Max. :421.00 Max. :639.95 Max. :60.000
Approved_Conversion
Min. : 0.000
1st Qu.: 0.000
Median : 1.000
Mean : 0.944
3rd Qu.: 1.000
Max. :21.000
Correlazioni:
[modifica | modifica sorgente]Per quanto riguarda la campagna 1178 si notano forti correlazioni positive tra le variabili per cui al crescere delle impressioni e della spesa, crescono i click e al crescere dei click crescono le conversioni. Ciò non accade per le campagne 916 e 936 che risultano fallimentari:
df_936 <- KAG_conversion_data %>%
filter(xyz_campaign_id==936)
df_1178 <- KAG_conversion_data %>%
filter(xyz_campaign_id==1178)
ggpairs(df_1178,columns = 7:11)
ggpairs(df_936,columns = 7:11)
Correlazioni campagna 1178:

Correlazioni campagna 936:

Inferenza
[modifica | modifica sorgente]Come si vede dalla seguente tabella la media delle conversioni totali e approvate delle campagne 916 e 936 risulta simile intorno a 1 e 0,5, mentre la media della campagna 1178 risulta superiore.
KAG_conversion_data %>%
group_by(xyz_campaign_id) %>%
summarise(media_total_conversion=mean(Total_Conversion),
media_approved_conversion=mean(Approved_Conversion))
xyz_campaign_id media_total_conversion media_approved_conversion 1 916 1.07 0.444 2 936 1.16 0.394 3 1178 4.27 1.40
Attraverso l'inferenza (t test) si vuole verificare che vale l'ipotesi nulla secondo cui la media delle conversioni della campagna 916 si può considerare uguale alla media della campagna 936 al 95%, infatti il p_value risulta sia per Total_conversion che per Approved_conversion maggiore di 0,05:
df_916_936 <- KAG_conversion_data %>%
filter(xyz_campaign_id %in% c(916,936))
inference(Total_Conversion, xyz_campaign_id, data=df_916_936,statistic = "mean",method = "theoretical", alternative = "twosided", type = "ht", null=0)
Response variable: numerical Explanatory variable: categorical (2 levels) n_916 = 54, y_bar_916 = 1.0741, s_916 = 0.2644 n_936 = 464, y_bar_936 = 1.1573, s_936 = 0.5248 H0: mu_916 = mu_936 HA: mu_916 != mu_936 t = -1.9162, df = 53 p_value = 0.0607
inference(Approved_Conversion, xyz_campaign_id, data=df_916_936,statistic = "mean",method = "theoretical", alternative = "twosided", type = "ht", null=0)
Response variable: numerical Explanatory variable: categorical (2 levels) n_916 = 54, y_bar_916 = 0.4444, s_916 = 0.5016 n_936 = 464, y_bar_936 = 0.3944, s_936 = 0.5396 H0: mu_916 = mu_936 HA: mu_916 != mu_936 t = 0.6883, df = 53 p_value = 0.4942
Parte 4: Modellizzazione
[modifica | modifica sorgente]Si vuole predire il numero totale di conversione in base alle visualizzazioni degli annunci (impressions) e alla spesa effettuata utilizzando un modello di regressione lineare :
model <- lm(Total_Conversion ~ Spent + Impressions, KAG_conversion_data)
summary(model)
Call:
lm(formula = Total_Conversion ~ Spent + Impressions, data = KAG_conversion_data)
Residuals:
Min 1Q Median 3Q Max
-12.1100 -0.5588 0.1668 0.2636 24.1277
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.363e-01 8.047e-02 9.15 <2e-16 ***
Spent -5.604e-02 3.289e-03 -17.04 <2e-16 ***
Impressions 2.676e-05 9.140e-07 29.28 <2e-16 ***
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.334 on 1140 degrees of freedom
Multiple R-squared: 0.7296, Adjusted R-squared: 0.7291
F-statistic: 1538 on 2 and 1140 DF, p-value: < 2.2e-16
Essendo R^2=72,91% la percentuale di variabilità delle conversioni totali espressa dal modello è pari al 72,91% . Poiché tale valore è ampio, c'è una relazione lineare tra le variabili Spent e Impressions con Total_Conversion. Quindi data la spesa effettuata e il numero di visualizzazioni si può predire il numero totale di conversioni.