Activando librerias
library(readxl)
library(dplyr)
library(carData)
library(car)
library(ggplot2)
library(GGally)
#Importando la data
library(readxl)
df_facebook = read_excel("dataset_Facebook.xlsx")
table(df_facebook$Type)
Link Photo Status Video
22 426 45 7
Luego de importar el archivo dataset_Facebook.xlsx se observa que la variable Type contiene 4 categorías y que le dataframe cargado con los datos de dataset_Facebook.xlsx tiene 500 filas.
Realizamos un breve análisis descriptivo para visualizar la distribución de los datos:
#Analisis descriptivo
library(dplyr)
summarise(group_by(df_facebook,Type), mean(like),sd(like),n())
Nota: En todas las pruebas de hipótesis consideraremos el nivel de significancia de alpha = 0.05.
La regla de decisión es la siguiente:
A continuación realizamos el test de Levene para analizar la homogeneidad de varianzas. La prueba de hipótesis es la siguiente:
ho: var_link = var_photo = var_status = var_video
h1: Existe al menos una diferencia entre las varianzas
library(carData)
library(car)
leveneTest(like~Type, data= df_facebook)
group coerced to factor.
Levene's Test for Homogeneity of Variance (center = median)
Df F value Pr(>F)
group 3 0.538 0.6565
496
El p-value = 0.6565 > 0.05 => Aceptamos ho, es decir, hay homogeneidad en las varianzas.
Luego, realizamos el test de One-Way. Las hipótesis son las siguientes:
ho: prom_link = prom_photo = prom_status = prom_video
h1: Existe al menos una diferencia entre los promedios
oneway.test( like~Type, data=df_facebook, var.equal = T)
One-way analysis of means
data: like and Type
F = 0.85624, num df = 3, denom df = 496, p-value = 0.4637
El p-value = 0.4637 > 0.05, Aceptamos ho, es decir, el promedio de los tipos de publicaciones son iguales.
Test de Pairwise
ho: Al menos uno promedios son iguales dos a dos h1: Los promedios son diferentes dos a dos
pairwise.t.test(df_facebook$like, df_facebook$Type)
Pairwise comparisons using t tests with pooled SD
data: df_facebook$like and df_facebook$Type
Link Photo Status
Photo 0.75 - -
Status 1.00 1.00 -
Video 1.00 1.00 1.00
P value adjustment method: holm
Como p-value > 0.05 para todos los casos, aceptamos ho, es decir, al menos existe dos grupos cuyos promedios son iguales.
Mostramos una tabla resumen
summarise(group_by(df_facebook,Type), n())
A continuación mostramos un gráfico de barras:
library(ggplot2)
ggplot(df_facebook, aes(x = Type,fill=Type )) + geom_bar()
que solamente tenga los registros del Tipo de contenido con mayor cantidad (analizado en el punto 2)
df_total = summarise(group_by(df_facebook,Type), total= n())
max_total = max(df_total$total)
df_facebook_2=filter(df_facebook,
Type == filter(df_total, total == max_total)$Type)
Verificados la estructura de dataframe df_facebook_2
library(GGally)
colnames( df_facebook_2)
[1] "Page total likes"
[2] "Type"
[3] "Category"
[4] "Post Month"
[5] "Post Weekday"
[6] "Post Hour"
[7] "Paid"
[8] "Lifetime Post Total Reach"
[9] "Lifetime Post Total Impressions"
[10] "Lifetime Engaged Users"
[11] "Lifetime Post Consumers"
[12] "Lifetime Post Consumptions"
[13] "Lifetime Post Impressions by people who have liked your Page"
[14] "Lifetime Post reach by people who like your Page"
[15] "Lifetime People who have liked your Page and engaged with your post"
[16] "comment"
[17] "like"
[18] "share"
[19] "Total Interactions"
head(df_facebook_2)
En esta nueva data: dataset_Facebook_2: Desarrollar un modelo de regresión lineal múltiple, considerar las siguientes variables como independientes (X) y dependiente (Y).
Y: Lifetime post total reach
X1: Lifetime post total impressions
X2: Lifetime engaged users
X3: Lifetime post consumers
X4: Comments
X5: Likes
X6: Shares
Eliminando variables y cambiando de nombre
df_facebook_2 = select(df_facebook_2, "Lifetime Post Total Reach",
"Lifetime Post Total Impressions",
"Lifetime Engaged Users",
"Lifetime Post Consumers",
"comment",
"like",
"share")
names(df_facebook_2) = c("Y","X1","X2","X3","X4","X5","X6")
head(df_facebook_2)
Determinamos el modelo de regresión lineal
mo_lineal_multipe = lm(Y~X1+X2+X3+X4+X5+X6,data = df_facebook_2)
summary(mo_lineal_multipe)
Call:
lm(formula = Y ~ X1 + X2 + X3 + X4 + X5 + X6, data = df_facebook_2)
Residuals:
Min 1Q Median 3Q Max
-117415 -3181 -1829 74 77751
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -3.004e+02 9.378e+02 -0.320 0.749
X1 1.328e-01 8.476e-03 15.673 < 2e-16 ***
X2 1.238e+02 2.125e+01 5.827 1.13e-08 ***
X3 -1.125e+02 2.099e+01 -5.360 1.38e-07 ***
X4 -8.474e+01 6.522e+01 -1.299 0.195
X5 -8.136e+01 2.035e+01 -3.999 7.54e-05 ***
X6 4.951e+01 4.190e+01 1.182 0.238
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Residual standard error: 12580 on 415 degrees of freedom
(4 observations deleted due to missingness)
Multiple R-squared: 0.7041, Adjusted R-squared: 0.6999
F-statistic: 164.6 on 6 and 415 DF, p-value: < 2.2e-16
Prueba de linealidad
ho: bo = b1 = b2 = b3 = b4 = b5 = b6 = 0
h1: Al menos un bi i:0 a 6, es diferente de cero
p-value: < 2.2e-16 < 0.05, entonces rechazamos ho y aceptams h1. Al menos uno de los bi es diferente de 0.
Adjusted R-squared: 0.6999
Estimate Std. Error t value Pr(>|t|)
(Intercept) -3.004e+02 9.378e+02 -0.320 0.749
X1 1.328e-01 8.476e-03 15.673 < 2e-16 ***
X2 1.238e+02 2.125e+01 5.827 1.13e-08 ***
X3 -1.125e+02 2.099e+01 -5.360 1.38e-07 ***
X4 -8.474e+01 6.522e+01 -1.299 0.195
X5 -8.136e+01 2.035e+01 -3.999 7.54e-05 ***
X6 4.951e+01 4.190e+01 1.182 0.238
Coeficientes significatvios: b1, b2, b3 y b5 Coeficientes no significativo: b0, b4 y b6
Los coeficientes postivos indican una relación directa entre la variable independendiente e la dependiente. Por ejemplp
Y: Lifetime post total reach
X1: Lifetime post total impressions
library(ggplot2)
ggplot(df_facebook_2, aes(x=X1, y=Y)) + geom_point()
En cambio, los coeficientes negativos indican una relación inversa entre la variable independendiente e la dependiente. Por ejemplp
Y: Lifetime post total reach
X5: Likes
library(ggplot2)
ggplot(df_facebook_2, aes(x=X5, y=Y)) + geom_point()
Elaborado un módelo sólo con los coefcientes sigificativos:
mo_lineal_multipe = lm(Y~X1+X2+X3+X5 -1,data = df_facebook_2)
summary(mo_lineal_multipe)
Call:
lm(formula = Y ~ X1 + X2 + X3 + X5 - 1, data = df_facebook_2)
Residuals:
Min 1Q Median 3Q Max
-116291 -3056 -1672 377 77651
Coefficients:
Estimate Std. Error t value Pr(>|t|)
X1 1.313e-01 8.347e-03 15.727 < 2e-16 ***
X2 1.239e+02 1.696e+01 7.306 1.38e-12 ***
X3 -1.125e+02 1.664e+01 -6.761 4.58e-11 ***
X5 -8.010e+01 1.376e+01 -5.819 1.17e-08 ***
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Residual standard error: 12510 on 422 degrees of freedom
Multiple R-squared: 0.777, Adjusted R-squared: 0.7748
F-statistic: 367.5 on 4 and 422 DF, p-value: < 2.2e-16
Adjusted R-squared: 0.7748 ha mejorado.
Esto debido a la correlación que se evidencias en las variables:
X4: Comments
X5: Likes
X6: Shares