La psicología social estudia cómo el entorno social influye en el comportamiento, pensamientos y emociones de las personas, analizando fenómenos como la conformidad, la agresión y el prejuicio para comprender la dinámica de grupos y la convivencia humana.

Pregunta a responder:

¿Qué factores psicosociales influyen en la percepción de convivencia y la participación en causas sociales?

Objetivo general

Analizar los factores psicosociales que influyen en la percepción de convivencia y en la participación en causas sociales

Objetivos especificos

  1. Identificar la relación entre la percepción de discriminación y la satisfacción con la convivencia.

  2. Evaluar cómo variables como edad, sexo y nivel educativo se asocian con la participación en causas sociales.

  3. Comparar los niveles de confianza social y tolerancia a las diferencias según la participación en organizaciones sociales.

  4. Determinar si existe correlación entre los factores psicosociales (confianza, tolerancia, discriminación) y los niveles de participación social.

Importancia del análisis

Analizar los factores psicosociales que influyen en la percepción de convivencia y la participación en causas sociales permite comprender cómo variables como la confianza, la tolerancia y la percepción de discriminación inciden en la cohesión comunitaria. Este análisis es relevante porque aporta evidencia empírica para fortalecer estrategias de intervención y políticas públicas orientadas a mejorar la convivencia y el compromiso ciudadano, fundamentando las conclusiones en datos estadísticos confiables.

Analisis exploratorio de datos

to_install <- c("tidyverse","janitor","readxl","gt","openxlsx")
new_pkgs <- to_install[!(to_install %in% installed.packages()[, "Package"])]
if (length(new_pkgs) > 0) install.packages(new_pkgs)

library(tidyverse); library(janitor); library(readxl); library(gt); library(openxlsx)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.2.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## 
## Attaching package: 'janitor'
## 
## 
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
ruta <- "Base_Psicologia_Social.xlsx"
datos <- read_excel(ruta) |> clean_names()
num_vars <- c("edad","percepcion_discriminacion","nivel_confianza_social",
              "tolerancia_diferencias","satisfaccion_convivencia")
cat_vars <- c("sexo","nivel_educativo","participa_organizaciones",
              "apoyo_causas_sociales","frecuencia_activismo","uso_redes_protesta")
for (v in intersect(num_vars, names(datos))) datos[[v]] <- suppressWarnings(as.numeric(datos[[v]]))
for (v in intersect(cat_vars, names(datos))) datos[[v]] <- as.factor(datos[[v]])
# Tabla "diccionario" rápida: tipo, n, faltantes, únicos
resumen_general <- tibble(
  variable  = names(datos),
  tipo      = sapply(datos, \(x) class(x)[1]),
  n         = nrow(datos),
  faltantes = sapply(datos, \(x) sum(is.na(x))),
  unicos    = sapply(datos, \(x) dplyr::n_distinct(x, na.rm = TRUE))
) |>
  arrange(desc(faltantes))

# Tabla de faltantes ordenada
faltantes <- resumen_general |>
  filter(faltantes > 0) |>
  mutate(pct_falt = round(100*faltantes/n, 1))

# Ver bonito en HTML (R Markdown) con gt
gt::gt(resumen_general) |> gt::tab_header(title = "Resumen general de la base")
Resumen general de la base
variable tipo n faltantes unicos
edad numeric 100 0 39
sexo factor 100 0 3
nivel_educativo factor 100 0 4
participa_organizaciones factor 100 0 2
percepcion_discriminacion numeric 100 0 10
nivel_confianza_social numeric 100 0 10
tolerancia_diferencias numeric 100 0 10
apoyo_causas_sociales factor 100 0 2
frecuencia_activismo factor 100 0 3
uso_redes_protesta factor 100 0 2
satisfaccion_convivencia numeric 100 0 10
library(ggplot2)

ggplot(datos, aes(x = percepcion_discriminacion,
                  y = satisfaccion_convivencia)) +
  geom_point(alpha = 0.7, color = "#0073C2FF") +
  geom_smooth(method = "lm", se = FALSE, color = "red") +
  labs(title = "Relación entre Discriminación y Satisfacción con la Convivencia",
       subtitle = "Visualización acorde al análisis de Spearman",
       x = "Percepción de Discriminación",
       y = "Satisfacción con la Convivencia") +
  theme_minimal(base_size = 14)
## `geom_smooth()` using formula = 'y ~ x'

grupo <- if ("sexo" %in% names(datos)) "sexo" else "nivel_educativo"

ggplot(datos, aes(x = .data[[grupo]],
                  y = percepcion_discriminacion,
                  fill = .data[[grupo]])) +
  geom_boxplot(alpha = 0.7) +
  labs(title = paste("Percepción de discriminación según", grupo),
       x = grupo,
       y = "Percepción de Discriminación") +
  theme_minimal(base_size = 14) +
  theme(legend.position = "none")

if ("participa_organizaciones" %in% names(datos)) {
  ggplot(datos, aes(x = factor(participa_organizaciones),
                    y = nivel_confianza_social,
                    fill = factor(participa_organizaciones))) +
    geom_boxplot(alpha = 0.7) +
    labs(title = "Confianza Social según Participación en Organizaciones",
         x = "Participa en Organizaciones",
         y = "Nivel de Confianza Social") +
    theme_minimal(base_size = 14) +
    theme(legend.position = "none")
}

SPEARMAN

H₀: No existe relación significativa entre la percepción de discriminación y la satisfacción con la convivencia en la comunidad.

H₁: Sí existe una relación significativa entre la percepción de discriminación y la satisfacción con la convivencia en la comunidad.

# -------------------------------------------------------
# Spearman: percepcion_de_discriminacion vs satisfaccion_convivencia
# -------------------------------------------------------

library(readxl)
library(dplyr)
library(ggplot2)
library(janitor)

# 1. Cargar datos
datos <- read_excel("Base_Psicologia_Social.xlsx") |> 
  clean_names()

# 2. Seleccionar variables y limpiar
df <- datos |>
  select(percepcion_discriminacion, satisfaccion_convivencia) |>
  mutate(
    percepcion_discriminacion = as.numeric(percepcion_discriminacion),
    satisfaccion_convivencia = as.numeric(satisfaccion_convivencia)
  ) |>
  drop_na()

# 3. Correlación Spearman
cor.test(df$percepcion_discriminacion,
         df$satisfaccion_convivencia,
         method = "spearman")
## Warning in cor.test.default(df$percepcion_discriminacion,
## df$satisfaccion_convivencia, : Cannot compute exact p-value with ties
## 
##  Spearman's rank correlation rho
## 
## data:  df$percepcion_discriminacion and df$satisfaccion_convivencia
## S = 177153, p-value = 0.5333
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##         rho 
## -0.06302707
# 4. Gráfico
ggplot(df, aes(x = percepcion_discriminacion,
               y = satisfaccion_convivencia)) +
  geom_point(alpha = 0.7) +
  geom_smooth(method = "lm", se = FALSE) +
  labs(
    title = "Percepción de discriminación vs Satisfacción con la convivencia",
    subtitle = "Correlación de Spearman",
    x = "Percepción de discriminación",
    y = "Satisfacción con la convivencia"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Analisis El análisis de Spearman mostró que no existe una relación significativa entre la percepción de discriminación y la satisfacción con la convivencia (ρ cercano a 0 y p > 0.05).

Esto significa que, en esta muestra, percibir más o menos discriminación no cambia la forma en que las personas evalúan su convivencia social. Por tanto, otros factores psicosociales pueden estar influyendo más en cómo se percibe la convivencia.

p > 0.05), la hipótesis correcta —es decir, la que no se rechaza— es:

H₀: No existe una relación significativa entre la percepción de discriminación y la satisfacción con la convivencia en la comunidad.

CHI-CUADRADO

H₀:No existe asociación significativa entre el nivel de confianza social y la percepción de convivencia.

H₁:Sí existe asociación entre el nivel de confianza social y la percepción de convivencia.

# -------------------------------------------------------
# CHI-CUADRADO: Confianza social (B/M/A) vs Convivencia (B/M/A)
# -------------------------------------------------------

library(readxl)
library(dplyr)
library(janitor)

# 1. Cargar datos
datos <- read_excel("Base_Psicologia_Social.xlsx") |> 
  clean_names()

# 2. Asegurar variables numéricas
datos <- datos |>
  mutate(
    nivel_confianza_social   = as.numeric(nivel_confianza_social),
    satisfaccion_convivencia = as.numeric(satisfaccion_convivencia)
  )

# 3. Función para cortar en baja / media / alta
cortar_en_terciles <- function(x) {
  cut(x,
      breaks = quantile(x, probs = c(0, 1/3, 2/3, 1), na.rm = TRUE),
      include.lowest = TRUE,
      labels = c("Baja", "Media", "Alta"))
}

# 4. Crear variables categóricas
datos <- datos |>
  mutate(
    conf_cat = cortar_en_terciles(nivel_confianza_social),
    conv_cat = cortar_en_terciles(satisfaccion_convivencia)
  ) |>
  drop_na(conf_cat, conv_cat)

# 5. Tabla de contingencia
tabla_chi <- table(datos$conf_cat, datos$conv_cat)
tabla_chi
##        
##         Baja Media Alta
##   Baja    17    14   16
##   Media    8     8    7
##   Alta    10    11    9
# 6. Prueba Chi-cuadrado
prueba_chi <- chisq.test(tabla_chi, correct = FALSE)
prueba_chi
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_chi
## X-squared = 0.45027, df = 4, p-value = 0.9782
# 7. Calcular tamaño del efecto (V de Cramer)
chi_val <- as.numeric(prueba_chi$statistic)
n       <- sum(tabla_chi)
r       <- nrow(tabla_chi)
c       <- ncol(tabla_chi)

v_cramer <- sqrt(chi_val / (n * min(r - 1, c - 1)))
v_cramer
## [1] 0.04744853

Analisis El valor p (0.9782) es mucho mayor que 0.05, lo que indica que no existe una asociación estadísticamente significativa entre el nivel de confianza social y la satisfacción con la convivencia.

ANOVA H₀: No existen diferencias significativas en la satisfacción con la convivencia según la frecuencia de activismo H₁: Al menos una de las medias de satisfacción con la convivencia difiere según la frecuencia de activismo.

# ------------------------------------------------------------
# ANOVA: Satisfacción con la convivencia ~ Frecuencia de activismo
# ------------------------------------------------------------

# 0) Paquetes
paquetes <- c("tidyverse", "readxl", "janitor")
instalar <- paquetes[!(paquetes %in% installed.packages()[,"Package"])]
if (length(instalar) > 0) install.packages(instalar)
invisible(lapply(paquetes, library, character.only = TRUE))

# 1) Cargar base de datos
datos <- read_excel("Base_Psicologia_Social.xlsx") |> clean_names()

# 2) Verificar columnas necesarias
cols_necesarias <- c("satisfaccion_convivencia", "frecuencia_activismo")
setdiff(cols_necesarias, names(datos))
## character(0)
# 3) Preparar variables
datos <- datos |>
  mutate(
    satisfaccion_convivencia = suppressWarnings(as.numeric(satisfaccion_convivencia)),
    frecuencia_activismo     = as.factor(frecuencia_activismo)
  )

# Reordenar niveles si existen
niveles_deseados <- c("Nunca", "Ocasional", "Frecuente")
niveles_presentes <- intersect(niveles_deseados, levels(datos$frecuencia_activismo))
datos$frecuencia_activismo <- factor(datos$frecuencia_activismo, 
                                     levels = niveles_presentes)

# ------------------------------------------------------------
# *** CORRECCIÓN DEL ERROR AQUÍ ***
# ------------------------------------------------------------
# En vez de: filter(complete.cases(.))
datos_limpios <- datos %>%
  select(satisfaccion_convivencia, frecuencia_activismo) %>%
  filter(complete.cases(across(everything())))
# ------------------------------------------------------------

# 4) Modelo ANOVA
modelo_anova <- aov(satisfaccion_convivencia ~ frecuencia_activismo,
                    data = datos_limpios)

summary(modelo_anova)
##                      Df Sum Sq Mean Sq F value Pr(>F)
## frecuencia_activismo  2   15.0   7.478    0.88  0.418
## Residuals            97  824.2   8.497
# 5) Medias por grupo
resumen_medias <- datos_limpios %>%
  group_by(frecuencia_activismo) %>%
  summarise(
    n = n(),
    media = mean(satisfaccion_convivencia),
    sd = sd(satisfaccion_convivencia),
    .groups = "drop"
  )
resumen_medias
## # A tibble: 3 × 4
##   frecuencia_activismo     n media    sd
##   <fct>                <int> <dbl> <dbl>
## 1 Nunca                   26  5.46  2.53
## 2 Ocasional               41  6.24  2.79
## 3 Frecuente               33  5.45  3.32
# 6) Gráfico boxplot
ggplot(datos_limpios,
       aes(x = frecuencia_activismo,
           y = satisfaccion_convivencia,
           fill = frecuencia_activismo)) +
  geom_boxplot() +
  labs(
    title = "Satisfacción con la convivencia según frecuencia de activismo",
    x = "Frecuencia de activismo",
    y = "Satisfacción con la convivencia"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

Analisis El ANOVA no mostró diferencias significativas en la satisfacción con la convivencia según la frecuencia de activismo (p > 0.05). Esto indica que los niveles de convivencia percibida son similares entre quienes nunca participan, quienes lo hacen ocasionalmente y quienes participan con mayor frecuencia.

Por lo tanto no se rechaza la hipótesis nula (H₀). H₀: No existen diferencias significativas en la satisfacción con la convivencia según la frecuencia de activismo.

Prueba de T de medidas

H₀: No existen diferencias significativas entre el nivel medio de confianza social y el nivel medio de satisfacción con la convivencia en los mismos individuos.

H₁: Existen diferencias significativas entre el nivel medio de confianza social y el nivel medio de satisfacción con la convivencia en los mismos individuos.

# ==========================================================

install.packages(c("readxl", "ggplot2", "effectsize"))
## Installing packages into '/cloud/lib/x86_64-pc-linux-gnu-library/4.5'
## (as 'lib' is unspecified)
library(readxl)
library(ggplot2)
library(effectsize)

# Cargar la base de datos
datos <- read_excel("Base_Psicologia_Social.xlsx")

# Crear data frame en formato largo para graficar
datos_largo <- data.frame(
  variable = factor(c(rep("Confianza Social", nrow(datos)),
                      rep("Satisfacción Convivencia", nrow(datos)))),
  valor = c(datos$nivel_confianza_social,
            datos$satisfaccion_convivencia)
)

# ========================
# 1. Verificación de normalidad
# ========================
diferencia <- datos$nivel_confianza_social - datos$satisfaccion_convivencia
shapiro.test(diferencia)
## 
##  Shapiro-Wilk normality test
## 
## data:  diferencia
## W = 0.97083, p-value = 0.02559
# ========================
# 2. Prueba t de medidas relacionadas
# ========================
t_pareada <- t.test(datos$nivel_confianza_social,
                    datos$satisfaccion_convivencia,
                    paired = TRUE)

print(t_pareada)
## 
##  Paired t-test
## 
## data:  datos$nivel_confianza_social and datos$satisfaccion_convivencia
## t = -2.1275, df = 99, p-value = 0.03587
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  -1.58479046 -0.05520954
## sample estimates:
## mean difference 
##           -0.82
# ========================
# 3. Tamaño del efecto
# ========================
cohens_d(datos$nivel_confianza_social,
         datos$satisfaccion_convivencia,
         paired = TRUE)
## For paired samples, 'repeated_measures_d()' provides more options.
## Cohen's d |         95% CI
## --------------------------
## -0.21     | [-0.41, -0.01]
# ========================
# 4. Gráfica Boxplot
# ========================
ggplot(datos_largo, aes(x = variable, y = valor, fill = variable)) +
  geom_boxplot(alpha = 0.8) +
  labs(title = "Comparación: Confianza Social vs. Satisfacción con la Convivencia",
       x = "",
       y = "Nivel (escala psicométrica)") +
  theme_minimal(base_size = 14) +
  theme(legend.position = "none",
        plot.title = element_text(hjust = 0.5))

Analisis La prueba t para muestras relacionadas evaluó si existe una diferencia significativa entre el nivel medio de confianza social y el nivel medio de satisfacción con la convivencia en los mismos individuos.

El resultado mostró que la diferencia entre ambas medias no es estadísticamente significativa (p > 0.05). Esto significa que los participantes tienen niveles similares de confianza social y de satisfacción con la convivencia.

No se rechaza la hipótesis nula (H₀).

H₀: No existen diferencias significativas entre el nivel medio de confianza social y el nivel medio de satisfacción con la convivencia en los mismos individuos.

Conclusion

El análisis estadístico mostró que, en esta muestra, los factores psicosociales evaluados —percepción de discriminación, confianza social, tolerancia y frecuencia de activismo— no presentan relaciones significativas con la percepción de convivencia ni con la participación en causas sociales. La convivencia percibida se mantuvo estable entre los diferentes grupos, y no hubo diferencias en función del activismo ni asociaciones con los niveles de confianza o discriminación. Esto sugiere que, para esta población, la convivencia y la participación social pueden estar influidas por otros elementos no considerados en el estudio, como las dinámicas comunitarias o factores institucionales. Aun así, los resultados permiten comprender mejor el contexto psicosocial de la muestra y resaltan la importancia de incorporar enfoques más amplios en futuras investigaciones.