rm(list = ls()) # Se utiliza para borrar todos los objetos del espacio de trabajo.
graphics.off() # Se utiliza para cerrar todas las ventanas gráficas abiertas.
#install.packages("tidyverse")
#install.packages("rvest")
#install.packages("readr")
#install.packages("readxl")
#install.packages("dplyr")
#install.packages("ggplot2")
#install.packages("plotly")
#install.packages("stringi")
#install.packages("tibble")
#install.packages("purrr")
#install.packages("knitr")
library(tidyverse) # Manipulación y visualización de datos.
library(rvest) # Extraer datos de páginas web (web scraping).
library(readr) # Lectura rápida de archivos de texto como CSV.
library(readxl) # Se usa para leer archivos Excel (.xlsx) en R.
library(dplyr) # Proporciona herramientas para manipulación de datos, como filtros, agrupaciones y resúmenes.
library(ggplot2) # Creación de gráficos estáticos y personalizados.
library(plotly) # Creación de gráficos interactivos.
library(stringi) # Manipulación avanzada de cadenas de texto.
library(tibble) # Es una versión mejorada del data frame que proporciona una visualización más clara y manejable.
library(purrr) # Se usa comúnmente para aplicar funciones a elementos de listas. (programación funcional).
library(knitr) # se utiliza para generar informes dinámicos.
search() #Para saber que paquetes tengo instalados
[1] ".GlobalEnv" "package:stringi" "package:plotly"
[4] "package:readxl" "package:rvest" "package:lubridate"
[7] "package:forcats" "package:stringr" "package:dplyr"
[10] "package:purrr" "package:readr" "package:tidyr"
[13] "package:tibble" "package:ggplot2" "package:tidyverse"
[16] "package:knitr" "package:stats" "package:graphics"
[19] "package:grDevices" "package:utils" "package:datasets"
[22] "package:methods" "Autoloads" "package:base"
setwd('C:/Users/john/Desktop/Practica DS/Universidad del Bosque/2. Probabilidad y estadistica/Trabajo Final') # Establecer el directorio de trabajo
getwd() # Verificar el directorio de trabajo actual
[1] "C:/Users/john/Desktop/Practica DS/Universidad del Bosque/2. Probabilidad y estadistica/Trabajo Final"
Dado que los aspectos medidos se encuentran agrupados en cuatro perfiles: Satisfacción del Consumidor (CS1 - CS5), Preferencia de Marca (BP1 - BP4), Actitud Hacia la Marca (BA1 - BA3) e Intenciones de Compra (PI1 - PI4), con puntuaciones entre 1 y 5 cada una, se requiere que los puntajes dados por cada persona en cada una de las características que conforman los cuatro perfiles queden agrupados (a manera de vector) en cada celda en una misma columna. Así, la base debe ser reducida, eliminando los puntajes originales, a un conjunto de datos como se muestra en la siguiente tabla de siete columnas:
Gender | Age | MaritalStatus | CS | BP | BA | PI |
---|---|---|---|---|---|---|
women | 19 | single | (5, 5, 5, 5, 5) | (5, 3, 3, 5) | (5, 5, 5) | (5, 5, 5, 5) |
women | 19 | single | (4, 5, 5, 5, 4) | (5, 5, 5, 5) | (5, 5, 5) | (5, 5, 5, 5) |
men | 24 | single | (4, 4, 4, 4, 3) | (1, 2, 2, 1) | (4, 5, 3) | (3, 4, 3, 4) |
Realice lo anterior empleando R. El objeto creado debe ser un objeto tipo tibble. Imprima las primeras filas del conjunto de datos creado.
Cargar Los Datos:
Data_Brand_1a <- read_excel('Brand.xlsx') ##Importa los datos a un objeto llamado tibble_Brand
head(Data_Brand_1a)
# A tibble: 6 × 19
Gender Age MaritalStatus CS1 CS2 CS3 CS4 CS5 BP1 BP2 BP3
<chr> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 women 19 single 5 5 5 5 5 5 3 3
2 women 19 single 4 5 5 5 4 5 5 5
3 men 24 single 4 4 4 4 3 1 2 2
4 men 44 married 5 5 5 5 5 3 3 2
5 women 21 single 3 4 3 4 3 1 1 1
6 men 31 single 5 5 5 5 4 4 5 5
# ℹ 8 more variables: BP4 <dbl>, BA1 <dbl>, BA2 <dbl>, BA3 <dbl>, PI1 <dbl>,
# PI2 <dbl>, PI3 <dbl>, PI4 <dbl>
# Cargar las librerías necesarias
library(dplyr)
library(purrr)
library(tibble)
# Asumimos que tu tibble original se llama Data_Brand
# Transformar el tibble
Data_Brand_Col_1a <- Data_Brand_1a %>%
mutate(
CS = pmap(list(CS1, CS2, CS3, CS4, CS5), c), # Combina las columnas CS1 a CS5 en una lista
BP = pmap(list(BP1, BP2, BP3, BP4), c), # Combina las columnas BP1 a BP4 en una lista
BA = pmap(list(BA1, BA2, BA3), c), # Combina las columnas BA1 a BA3 en una lista
PI = pmap(list(PI1, PI2, PI3, PI4), c) # Combina las columnas PI1 a PI4 en una lista
) %>%
select(Gender, Age, MaritalStatus, CS, BP, BA, PI) %>%
as_tibble() # Asegurarse de que el resultado sea un tibble
Data_Brand_Col_1a
# A tibble: 195 × 7
Gender Age MaritalStatus CS BP BA PI
<chr> <dbl> <chr> <list> <list> <list> <list>
1 women 19 single <dbl [5]> <dbl [4]> <dbl [3]> <dbl [4]>
2 women 19 single <dbl [5]> <dbl [4]> <dbl [3]> <dbl [4]>
3 men 24 single <dbl [5]> <dbl [4]> <dbl [3]> <dbl [4]>
4 men 44 married <dbl [5]> <dbl [4]> <dbl [3]> <dbl [4]>
5 women 21 single <dbl [5]> <dbl [4]> <dbl [3]> <dbl [4]>
6 men 31 single <dbl [5]> <dbl [4]> <dbl [3]> <dbl [4]>
7 men 39 married <dbl [5]> <dbl [4]> <dbl [3]> <dbl [4]>
8 women 18 single <dbl [5]> <dbl [4]> <dbl [3]> <dbl [4]>
9 women 25 single <dbl [5]> <dbl [4]> <dbl [3]> <dbl [4]>
10 women 30 married <dbl [5]> <dbl [4]> <dbl [3]> <dbl [4]>
# ℹ 185 more rows
glimpse(Data_Brand_Col_1a)
Rows: 195
Columns: 7
$ Gender <chr> "women", "women", "men", "men", "women", "men", "men", "…
$ Age <dbl> 19, 19, 24, 44, 21, 31, 39, 18, 25, 30, 20, 20, 20, 21, …
$ MaritalStatus <chr> "single", "single", "single", "married", "single", "sing…
$ CS <list> <5, 5, 5, 5, 5>, <4, 5, 5, 5, 4>, <4, 4, 4, 4, 3>, <5, …
$ BP <list> <5, 3, 3, 5>, <5, 5, 5, 5>, <1, 2, 2, 1>, <3, 3, 2, 2>,…
$ BA <list> <5, 5, 5>, <5, 5, 5>, <4, 5, 3>, <4, 4, 4>, <3, 4, 5>, …
$ PI <list> <5, 5, 5, 5>, <5, 5, 5, 5>, <3, 4, 3, 4>, <4, 3, 3, 3>,…
#print(Data_Brand_Col$Gender, n = Inf) # Para ver todas las filas
Conclusiones
En mi análisis de datos, he observado lo siguiente:
En mi dataset, tengo tanto a mujeres como a hombres. La presencia de ambos géneros me permite analizar posibles diferencias en las evaluaciones y percepciones de los participantes.
Las edades de los participantes en mi muestra varían desde 18 hasta 44 años. Esto indica que mi muestra incluye tanto a jóvenes adultos como a personas de mayor edad, lo que me permite explorar cómo diferentes grupos etarios pueden influir en las variables que estoy analizando.
Las puntuaciones de satisfacción del cliente en la columna CS van de 3 a 5. Esta variabilidad sugiere que los participantes tienen opiniones diversas sobre su satisfacción, y esto podría ayudarme a identificar patrones o áreas de mejora en el servicio o producto que estoy evaluando.
En cuanto a la columna BP, las puntuaciones varían de 1 a 5, lo que indica que hay una gama amplia de percepciones sobre el rendimiento empresarial. De manera similar, las puntuaciones en BA también oscilan entre 3 y 5. Al comparar estas evaluaciones, puedo obtener una visión más completa de cómo se percibe el rendimiento de la empresa y en qué áreas podría haber discrepancias.
Las puntuaciones en PI también van de 3 a 5, mostrando una variedad en las percepciones del índice de rendimiento. Esta variabilidad me ayudará a entender mejor cómo se percibe el rendimiento general y a identificar posibles inconsistencias en la percepción entre diferentes participantes.
Gender | Age | MaritalStatus | Tcs | Tbp | Tba | Tpi | Total |
---|---|---|---|---|---|---|---|
women | 19 | single | 25 | 16 | 15 | 20 | 61 |
women | 19 | single | 23 | 20 | 15 | 20 | 78 |
men | 24 | single | 19 | 6 | 12 | 14 | 51 |
# Paso 1: Calcular las sumas de las columnas
Data_Brand_1b <- Data_Brand_Col_1a %>%
mutate(
Tcs = map_dbl(CS, sum, na.rm = TRUE),
Tbp = map_dbl(BP, sum, na.rm = TRUE),
Tba = map_dbl(BA, sum, na.rm = TRUE),
Tpi = map_dbl(PI, sum, na.rm = TRUE),
Total = Tcs + Tbp + Tba + Tpi
) %>%
select(Gender, Age, MaritalStatus, Tcs, Tbp, Tba, Tpi, Total)
# Paso 3: Verificar el resultado
Data_Brand_1b
# A tibble: 195 × 8
Gender Age MaritalStatus Tcs Tbp Tba Tpi Total
<chr> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 women 19 single 25 16 15 20 76
2 women 19 single 23 20 15 20 78
3 men 24 single 19 6 12 14 51
4 men 44 married 25 10 12 13 60
5 women 21 single 17 4 12 11 44
6 men 31 single 24 19 15 17 75
7 men 39 married 25 12 12 16 65
8 women 18 single 24 20 15 20 79
9 women 25 single 15 4 9 12 40
10 women 30 married 21 9 9 16 55
# ℹ 185 more rows
Gender | Variable | Mín | Máx | Prom. | Med. | DE | CV | Q0.3 | Q0.7 |
---|---|---|---|---|---|---|---|---|---|
women | Tcs | ||||||||
women | Tbp | ||||||||
women | Tba | ||||||||
women | Tpi | ||||||||
women | Total | ||||||||
men | Tcs | ||||||||
men | Tbp | ||||||||
men | Tba | ||||||||
men | Tpi | ||||||||
men | Total |
library(dplyr)
# Transformar datos a formato largo
Data_Brand_1c <- Data_Brand_1b %>%
select(Gender, Tcs, Tbp, Tba, Tpi, Total) %>%
pivot_longer(cols = Tcs:Total, names_to = "Variable", values_to = "Value")
# Calcular estadísticas descriptivas
Data_Brand_Est_1c <- Data_Brand_1c %>%
group_by(Gender, Variable) %>%
summarise(
Min = min(Value, na.rm = TRUE),
Max = max(Value, na.rm = TRUE),
Prom = mean(Value, na.rm = TRUE),
Med = median(Value, na.rm = TRUE),
DE = sd(Value, na.rm = TRUE),
CV = sd(Value, na.rm = TRUE) / mean(Value, na.rm = TRUE),
Q0.3 = quantile(Value, 0.3, na.rm = TRUE),
Q0.7 = quantile(Value, 0.7, na.rm = TRUE),
.groups = 'drop' # Elimina el agrupamiento después del resumen
) %>%
mutate(Gender = factor(Gender, levels = c("women", "men"))) %>%
arrange(Gender, Variable) # Ordenar por Gender y luego por Variable
Data_Brand_Est_1c
# A tibble: 10 × 10
Gender Variable Min Max Prom Med DE CV Q0.3 Q0.7
<fct> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 women Tba 3 15 12.7 14 2.88 0.227 12 15
2 women Tbp 4 20 13.8 14 5.47 0.397 10 19
3 women Tcs 5 25 20.1 21 5.25 0.262 18 25
4 women Total 24 80 62.3 66 15.0 0.241 52 74
5 women Tpi 4 20 15.8 17 4.04 0.256 13 19
6 men Tba 5 15 12.3 13 2.82 0.230 11 15
7 men Tbp 4 20 13.6 14 5.11 0.375 12 16.8
8 men Tcs 5 25 18.7 20 6.14 0.329 17 23.8
9 men Total 19 80 59.9 63 16.3 0.272 52.6 71
10 men Tpi 5 20 15.3 16 4.17 0.272 13.2 19
Conclusiones
Al analizar los datos, he observado que, en general, las medias de las variables para mujeres y hombres son bastante similares, aunque los hombres tienden a tener medias ligeramente menores en la mayoría de las variables comparadas con las mujeres.
En cuanto a las variables específicas, para Tba, el promedio para las mujeres es 12.7 con un rango de 3 a 15 y una desviación estándar de 2.88, lo que indica una variabilidad moderada. Los hombres tienen un promedio de 12.3, con un rango de 5 a 15 y una desviación estándar ligeramente menor de 2.82, sugiriendo menor variabilidad. En Tbp, las mujeres muestran un promedio de 13.8 con un rango de 4 a 20 y una desviación estándar alta de 5.47, mientras que los hombres tienen un promedio similar de 13.6 con una desviación estándar de 5.11, que es ligeramente menor. Para Tcs, el promedio femenino es 20.1 con un rango de 5 a 25 y una desviación estándar de 5.25, indicando una variabilidad notable. En contraste, los hombres tienen un promedio de 18.7 con una desviación estándar mayor de 6.14, sugiriendo mayor variabilidad en comparación con las mujeres.
En la variable Total, el promedio para las mujeres es 62.3 con un rango de 24 a 80 y una desviación estándar alta de 15.0, mientras que para los hombres el promedio es 59.9 con un rango de 19 a 80 y una desviación estándar ligeramente mayor de 16.3. Finalmente, en Tpi, las mujeres tienen un promedio de 15.8 con un rango de 4 a 20 y una desviación estándar moderada de 4.04, mientras que los hombres presentan un promedio de 15.3 con un rango similar y una desviación estándar ligeramente mayor de 4.17.
En cuanto al coeficiente de variación (CV), he notado que las mujeres muestran un CV relativamente menor en la mayoría de las variables, lo que sugiere una mayor consistencia en sus mediciones comparado con los hombres. Los percentiles 30 (Q0.3) y 70 (Q0.7) indican que, en general, los valores de las variables para ambos géneros tienen una distribución relativamente homogénea, pero las mujeres tienden a tener percentiles más altos en la mayoría de las variables, indicando que la mayoría de sus valores se sitúan en el rango superior de la distribución en comparación con los hombres.
Aunque existen algunas diferencias en las estadísticas descriptivas entre mujeres y hombres, estas diferencias no son extremadamente grandes. Las mujeres tienden a tener valores promedio ligeramente más altos en las variables medidas, pero la variabilidad en los datos es comparable a la de los hombres en la mayoría de los casos.
Usando el conjunto de datos creado en el Ejercicio 1b, realice un gráfico de dispersión entre Age y el puntaje Total, donde cada punto tenga un tamaño proporcional a Tpi y esté coloreado de acuerdo a Gender, esto empleando el ggplot2 de R.
Gráfico de dispersión
# Extraer las columnas necesarias de Estadisticas
Data_Dispersion_1d <- Data_Brand_1b %>%
select(Age, Total, Tpi, Gender)
# Crear el gráfico de dispersión
ggplot(Data_Dispersion_1d, aes(x = Age, y = Total, color = Gender, size = Tpi)) +
geom_point(alpha = 0.7) + # Añadir puntos con algo de transparencia
scale_size_continuous(range = c(1, 6)) + # Ajustar el rango de tamaños de los puntos
labs(title = "Gráfico de Dispersión",
x = "Edad - Age", # Corregir etiqueta del eje X
y = "Total",
size = "Tpi",
color = "Género") +
theme_minimal() +
theme(legend.position = "right")
Gráfico de dispersión Interactivo
# Extraer las columnas necesarias de Estadisticas
Data_Dispersion <- Data_Brand_1b %>%
select(Age, Total, Tpi, Gender)
# Crear el gráfico de dispersión con ggplot2
ggplot_plot <- ggplot(Data_Dispersion, aes(x = Age, y = Total, color = Gender, size = Tpi)) +
geom_point(alpha = 0.7) + # Añadir puntos con algo de transparencia
scale_size_continuous(range = c(1, 4)) + # Ajustar el rango de tamaños de los puntos para que sean más pequeños
labs(title = "Gráfico de Dispersión",
x = "Edad", # Corregir etiqueta del eje X
y = "Total",
size = "Tpi",
color = "Género") +
theme_minimal() +
theme(legend.position = "right")
# Convertir el gráfico a interactivo con plotly
ggplotly(ggplot_plot)
Replique el Ejercicio 1 empleando Python.
Cree una función en R o Python que tome el puntaje Total obtenido en el Ejercicio 1b (o 2b) y calcule el índice de Gini Adaptado para Puntajes, el cual es una medida de dispersión que varía entre 0 y 1, donde 0 indica una distribución perfectamente uniforme (todos los puntajes son iguales) y 1 indica máxima desigualdad (un puntaje concentra todo el valor). El índice de Gini nos da una idea de la dispersión o variabilidad en los puntajes. La fórmula de cálculo del índice es:
\[ \text{Gini} = \frac{\sum_{i=1}^n \sum_{j=1}^n |x_i - x_j|}{2n^2 * \bar{x}} \]
donde:
\(x_i\) es el puntaje total de la persona \(i\)-ésima.
\(| . |\) denota el valor absoluto de un número.
\(n\) es el número total de personas.
Fórmula Alternativa del Índice de Gini
\[ \text{Gini} = \frac{1}{2} - \frac{2}{2n^2 * \bar{x}} \sum_{i=1}^n \left[(n - i + 0.5) * x_{(i)}\right] \]
donde:
\(n\) es el número de observaciones.
\(x_{(i)}\) es el dato ordenado en la posición \(i\)-ésima (por ejemplo, en el conjunto de datos \((3.5, 2.3, 5.6)\), \(x_{(1)} = 2.3\), \(x_{(2)} = 3.5\), y \(x_{(3)} = 5.6\)).
1. Función Usando la Fórmula Directa (Suma de Diferencias Absolutas)
calculate_gini_direct <- function(x) {
n <- length(x)
x_bar <- mean(x)
# Calcular la suma de las diferencias absolutas
sum_diff <- sum(outer(x, x, function(a, b) abs(a - b)))
# Calcular el índice de Gini
gini_index <- sum_diff / (2 * n^2 * x_bar)
return(gini_index)
}
2. Función Usando la Fórmula Alternativa (Ordenando y Sumando)
calculate_gini_alternative <- function(x) {
n <- length(x)
x_bar <- mean(x)
# Ordenar los datos
x_sorted <- sort(x)
# Calcular la suma para la fórmula alternativa
sum_gini <- sum((n - seq_along(x_sorted) + 0.5) * x_sorted)
# Calcular el índice de Gini
gini_index <- 1 - (2 / (2 * n^2 * x_bar)) * sum_gini
return(gini_index)
}
3. Función Usando Matriz de Diferencias Absolutas con rowSums
calculate_gini_with_rowSums <- function(x) {
n <- length(x)
x_bar <- mean(x)
# Calcular la matriz de diferencias absolutas
abs_diff_matrix <- abs(outer(x, x, "-"))
# Sumar las filas de la matriz
sum_diff <- sum(rowSums(abs_diff_matrix))
# Calcular el índice de Gini
gini_index <- sum_diff / (2 * n^2 * x_bar)
return(gini_index)
}
4. Función Usando la Fórmula Alternativa con sapply para la Suma
calculate_gini_alternative_sapply <- function(x) {
n <- length(x)
x_bar <- mean(x)
# Ordenar los datos
x_sorted <- sort(x)
# Calcular la suma para la fórmula alternativa usando sapply
sum_gini <- sum(sapply(seq_along(x_sorted), function(i) (n - i + 0.5) * x_sorted[i]))
# Calcular el índice de Gini
gini_index <- 1 - (2 / (2 * n^2 * x_bar)) * sum_gini
return(gini_index)
}
5. Función Usando matrix para la Suma de Diferencias Absolutas
calculate_gini_with_matrix <- function(x) {
n <- length(x)
x_bar <- mean(x)
# Crear una matriz de diferencias absolutas
abs_diff_matrix <- matrix(0, nrow = n, ncol = n)
for (i in 1:n) {
for (j in 1:n) {
abs_diff_matrix[i, j] <- abs(x[i] - x[j])
}
}
# Calcular la suma de todas las entradas de la matriz
sum_diff <- sum(abs_diff_matrix)
# Calcular el índice de Gini
gini_index <- sum_diff / (2 * n^2 * x_bar)
return(gini_index)
}
Ejemplo Uso uso de Funciones
# Definición de funciones para calcular el índice de Gini
# 1. Usando la fórmula directa (Suma de diferencias absolutas)
calculate_gini_direct <- function(x) {
n <- length(x)
x_bar <- mean(x)
# Calcular la suma de las diferencias absolutas
sum_diff <- sum(outer(x, x, function(a, b) abs(a - b)))
# Calcular el índice de Gini
gini_index <- sum_diff / (2 * n^2 * x_bar)
return(gini_index)
}
# 2. Usando la fórmula alternativa (Ordenando y sumando)
calculate_gini_alternative <- function(x) {
n <- length(x)
x_bar <- mean(x)
# Ordenar los datos
x_sorted <- sort(x)
# Calcular la suma para la fórmula alternativa
sum_gini <- sum((n - seq_along(x_sorted) + 0.5) * x_sorted)
# Calcular el índice de Gini
gini_index <- 1 - (2 / (2 * n^2 * x_bar)) * sum_gini
return(gini_index)
}
# 3. Usando `rowSums` para la suma de diferencias absolutas
calculate_gini_with_rowSums <- function(x) {
n <- length(x)
x_bar <- mean(x)
# Calcular la matriz de diferencias absolutas
abs_diff_matrix <- abs(outer(x, x, "-"))
# Sumar las filas de la matriz
sum_diff <- sum(rowSums(abs_diff_matrix))
# Calcular el índice de Gini
gini_index <- sum_diff / (2 * n^2 * x_bar)
return(gini_index)
}
# 4. Usando `sapply` para la suma en la fórmula alternativa
calculate_gini_alternative_sapply <- function(x) {
n <- length(x)
x_bar <- mean(x)
# Ordenar los datos
x_sorted <- sort(x)
# Calcular la suma para la fórmula alternativa usando sapply
sum_gini <- sum(sapply(seq_along(x_sorted), function(i) (n - i + 0.5) * x_sorted[i]))
# Calcular el índice de Gini
gini_index <- 1 - (2 / (2 * n^2 * x_bar)) * sum_gini
return(gini_index)
}
# 5. Usando una matriz para la suma de diferencias absolutas
calculate_gini_with_matrix <- function(x) {
n <- length(x)
x_bar <- mean(x)
# Crear una matriz de diferencias absolutas
abs_diff_matrix <- matrix(0, nrow = n, ncol = n)
for (i in 1:n) {
for (j in 1:n) {
abs_diff_matrix[i, j] <- abs(x[i] - x[j])
}
}
# Calcular la suma de todas las entradas de la matriz
sum_diff <- sum(abs_diff_matrix)
# Calcular el índice de Gini
gini_index <- sum_diff / (2 * n^2 * x_bar)
return(gini_index)
}
# Datos de ejemplo
scores <- c(10, 20, 30, 40, 50)
# Calcular el índice de Gini usando cada función
gini_direct <- calculate_gini_direct(scores)
gini_alternative <- calculate_gini_alternative(scores)
gini_with_rowSums <- calculate_gini_with_rowSums(scores)
gini_alternative_sapply <- calculate_gini_alternative_sapply(scores)
gini_with_matrix <- calculate_gini_with_matrix(scores)
# Imprimir resultados
print(gini_direct)
[1] 0.2666667
print(gini_alternative)
[1] 0.6333333
print(gini_with_rowSums)
[1] 0.2666667
print(gini_alternative_sapply)
[1] 0.6333333
print(gini_with_matrix)
[1] 0.2666667
Conclusion:
CONCLUSIONES FINALES
1a. Elaboración y Visualización de Datos en R:
La transformación de los datos en vectores agrupados por perfil (Satisfacción del Consumidor, Preferencia de Marca, Actitud Hacia la Marca, e Intenciones de Compra) ha simplificado el análisis, permitiendo una revisión más clara y directa de las puntuaciones de cada participante en los diferentes perfiles. Este enfoque facilita la identificación de patrones y tendencias dentro de cada perfil y mejora la manejabilidad de los datos para análisis posteriores.
La tabla creada refleja una distribución equilibrada entre mujeres y hombres con una concentración significativa de participantes jóvenes. Las altas puntuaciones en las variables evaluadas sugieren una tendencia general hacia evaluaciones positivas. Sin embargo, la variabilidad en algunas variables como BP y BA indica diferencias en la percepción del bienestar entre los participantes, lo que puede ser relevante para interpretaciones más profundas y segmentaciones del mercado.
1b. Cálculo de Sumas y Estadísticas Descriptivas:
La adición de las columnas de suma (Tcs, Tbp, Tba, Tpi) y el cálculo del puntaje total (Total) proporcionan una visión integral del rendimiento de cada individuo en todos los perfiles. Este enfoque permite comparaciones directas entre individuos y facilita el análisis de tendencias generales.
El análisis revela que las mujeres tienen un promedio más alto en el puntaje total comparado con los hombres, lo que sugiere diferencias en las evaluaciones generales entre géneros. La desviacion estándar altas en ciertas variables para los hombres indican una mayor variabilidad en sus evaluaciones, mientras que la mediana y el coeficiente de variación proporcionan una visión adicional sobre la dispersión y consistencia de las evaluaciones entre géneros. Estas estadísticas son esenciales para entender cómo diferentes grupos perciben y evalúan las variables medidas.
1c. Estadísticas Descriptivas Detalladas:
1d. Gráfico de Dispersión:
2. Adaptación en Python:
3. Cálculo del Índice de Gini:
Las funciones desarrolladas para calcular el índice de Gini proporcionan una medida útil de la desigualdad en los puntajes. Las distintas implementaciones (fórmula directa, fórmula alternativa, y usando funciones específicas como rowSums y sapply) ofrecen formas variadas de calcular esta medida de dispersión, permitiendo comparar y validar la precisión del índice de Gini bajo diferentes enfoques.
Función Directa: Proporciona una solución directa para calcular el índice de Gini utilizando la suma de las diferencias absolutas.
Función Alternativa: Utiliza la fórmula alternativa basada en ordenación, que puede ser más eficiente en términos de cálculo.
Funciones con rowSums y sapply: Ofrecen variaciones en la forma de calcular la suma de diferencias absolutas, proporcionando flexibilidad y diferentes perspectivas para obtener el índice de Gini.