Esempi di Business Analytics/Statistiche per il marketing
Caricamento librerie
modificalibrary(dplyr)
library(ggplot2)
library(GGally)
library(statsr)
Parte 1: Dati
modificaI 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
modificaSi vuole fare un'analisi statistica delle campagne pubblicitarie evidenziando medie, mediane, range, inferenze, correlazioni, modellizzazioni, previsioni ecc.
Parte 3: Esplorazione dati
modificaInnanzitutto 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:
modificaPer 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
modificaCome 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
modificaSi 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.