Entrenamiento no formal

entrenamiento = 'no_formal'
etiqueta = 'Entrenamiento no formal en bioética'
df[entrenamiento].value_counts(sort=False)
## No               80
## Cursos cortos    19
## Capacitación      3
## Diplomado         3
## Name: no_formal, dtype: int64
df[entrenamiento].value_counts(sort=False, normalize=True).round(2)
## No               0.76
## Cursos cortos    0.18
## Capacitación     0.03
## Diplomado        0.03
## Name: no_formal, dtype: float64
sns.countplot(x=entrenamiento, data=df, edgecolor='black')
plt.xlabel(etiqueta)
plt.ylabel('Núm. docentes')
plt.show()

## vs edad
var = 'edad' # Definición de la variable de interés
df.groupby(entrenamiento)[var].describe().round().transpose() # Tendencia central y dispersión
## no_formal    No  Cursos cortos  Capacitación  Diplomado
## count      80.0           19.0           3.0        3.0
## mean       38.0           43.0          38.0       45.0
## std         9.0           14.0          17.0       16.0
## min        23.0           25.0          28.0       28.0
## 25%        31.0           28.0          28.0       39.0
## 50%        37.0           45.0          29.0       50.0
## 75%        44.0           54.0          44.0       54.0
## max        62.0           67.0          58.0       58.0
scipy.stats.kruskal(*[data[var].values for name, data in df.groupby(entrenamiento)]) # Prueba de Kruskal-Wallis
## KruskalResult(statistic=1.9126906406963458, pvalue=0.5907243163184515)
sns.boxplot(x=entrenamiento, y=var, data =df) # Gráfico de cajas
plt.xlabel(etiqueta)
plt.ylabel('Edad, en años')
plt.show()

## vs sexo
var = 'sexo' # Definición de la variable de contraste
pd.crosstab(df[var], df[entrenamiento]) # Frecuencia absoluta
## no_formal  No  Cursos cortos  Capacitación  Diplomado
## sexo                                                 
## Hombre     21              3             0          0
## Mujer      59             16             3          3
pd.crosstab(df[var], df[entrenamiento], normalize='index').round(2) # Frecuencia relativa
## no_formal    No  Cursos cortos  Capacitación  Diplomado
## sexo                                                   
## Hombre     0.88           0.12          0.00       0.00
## Mujer      0.73           0.20          0.04       0.04
scipy.stats.chi2_contingency(pd.crosstab(df[entrenamiento], df[var])) # Prueba del chi-cuadrado
## (2.838313230994152, 0.4172316504679091, 3, array([[18.28571429, 61.71428571],
##        [ 4.34285714, 14.65714286],
##        [ 0.68571429,  2.31428571],
##        [ 0.68571429,  2.31428571]]))
sns.countplot(x=entrenamiento, hue=var, data=df, edgecolor='black') # Gráfico de barras
plt.xlabel(etiqueta)
plt.ylabel('Núm. docentes')
plt.legend(title='Sexo', loc='upper right')
plt.show()

## vs grado académico
var = 'grado' # Definición de la variable de contraste
pd.crosstab(df[var], df[entrenamiento]) # Frecuencia absoluta
## no_formal          No  Cursos cortos  Capacitación  Diplomado
## grado                                                        
## Licenciatura       21              2             1          0
## Grado Profesional  24              3             1          2
## Especialización    23              7             1          1
## Maestría           12              7             0          0
pd.crosstab(df[var], df[entrenamiento], normalize='index').round(2) # Frecuencia relativa
## no_formal            No  Cursos cortos  Capacitación  Diplomado
## grado                                                          
## Licenciatura       0.88           0.08          0.04       0.00
## Grado Profesional  0.80           0.10          0.03       0.07
## Especialización    0.72           0.22          0.03       0.03
## Maestría           0.63           0.37          0.00       0.00
scipy.stats.chi2_contingency(pd.crosstab(df[entrenamiento], df[var])) # Prueba del chi-cuadrado
## (10.734184196098798, 0.29437023229553705, 9, array([[18.28571429, 22.85714286, 24.38095238, 14.47619048],
##        [ 4.34285714,  5.42857143,  5.79047619,  3.43809524],
##        [ 0.68571429,  0.85714286,  0.91428571,  0.54285714],
##        [ 0.68571429,  0.85714286,  0.91428571,  0.54285714]]))
sns.countplot(x=entrenamiento, hue=var, data=df, edgecolor='black') # Gráfico de barras
plt.xlabel(etiqueta)
plt.ylabel('Núm. docentes')
plt.legend(title='Grado académico', loc='upper right')
plt.show()

## vs facultad
var = 'facultad' # Definición de la variable de contraste
pd.crosstab(df[var], df[entrenamiento]) # Frecuencia absoluta
## no_formal             No  Cursos cortos  Capacitación  Diplomado
## facultad                                                        
## Ciencias de la Salud  55             13             3          3
## Medicina              25              6             0          0
pd.crosstab(df[var], df[entrenamiento], normalize='index').round(2) # Frecuencia relativa
## no_formal               No  Cursos cortos  Capacitación  Diplomado
## facultad                                                          
## Ciencias de la Salud  0.74           0.18          0.04       0.04
## Medicina              0.81           0.19          0.00       0.00
scipy.stats.chi2_contingency(pd.crosstab(df[entrenamiento], df[var])) # Prueba del chi-cuadrado
## (2.6666461134309176, 0.4459252278918513, 3, array([[56.38095238, 23.61904762],
##        [13.39047619,  5.60952381],
##        [ 2.11428571,  0.88571429],
##        [ 2.11428571,  0.88571429]]))
sns.countplot(x=entrenamiento, hue=var, data=df, edgecolor='black') # Gráfico de barras
plt.xlabel(etiqueta)
plt.ylabel('Núm. docentes')
plt.legend(title='Facultad', loc='upper right')
plt.show()

## vs carrera
var = 'carrera' # Definición de la variable de contraste
pd.crosstab(df[var], df[entrenamiento]) # Frecuencia absoluta
## no_formal     No  Cursos cortos  Capacitación  Diplomado
## carrera                                                 
## Bioquímica    14              2             0          2
## Enfermería     4              8             1          1
## Fisioterapia  15              3             1          0
## Medicina      14              3             0          0
## Nutrición     11              1             0          0
## Odontología   16              2             1          0
## Psicología     6              0             0          0
pd.crosstab(df[var], df[entrenamiento], normalize='index').round(2) # Frecuencia relativa
## no_formal       No  Cursos cortos  Capacitación  Diplomado
## carrera                                                   
## Bioquímica    0.78           0.11          0.00       0.11
## Enfermería    0.29           0.57          0.07       0.07
## Fisioterapia  0.79           0.16          0.05       0.00
## Medicina      0.82           0.18          0.00       0.00
## Nutrición     0.92           0.08          0.00       0.00
## Odontología   0.84           0.11          0.05       0.00
## Psicología    1.00           0.00          0.00       0.00
scipy.stats.chi2_contingency(pd.crosstab(df[entrenamiento], df[var])) # Prueba del chi-cuadrado
## (30.38097101144243, 0.033903228888663706, 18, array([[13.71428571, 10.66666667, 14.47619048, 12.95238095,  9.14285714,
##         14.47619048,  4.57142857],
##        [ 3.25714286,  2.53333333,  3.43809524,  3.07619048,  2.17142857,
##          3.43809524,  1.08571429],
##        [ 0.51428571,  0.4       ,  0.54285714,  0.48571429,  0.34285714,
##          0.54285714,  0.17142857],
##        [ 0.51428571,  0.4       ,  0.54285714,  0.48571429,  0.34285714,
##          0.54285714,  0.17142857]]))
sns.countplot(x=entrenamiento, hue=var, data=df, edgecolor='black') # Gráfico de barras
plt.xlabel(etiqueta)
plt.ylabel('Núm. docentes')
plt.legend(title='Carrera', loc='upper right')
plt.show()

## vs experiencia docente
var = 'experiencia'
df.groupby(entrenamiento)[var].describe().round().transpose() # Tendencia central y dispersión
## no_formal    No  Cursos cortos  Capacitación  Diplomado
## count      80.0           19.0           3.0        3.0
## mean        8.0           11.0          10.0       10.0
## std         7.0            8.0           9.0        9.0
## min         1.0            1.0           4.0        3.0
## 25%         3.0            4.0           4.0        5.0
## 50%         5.0           11.0           5.0        7.0
## 75%        12.0           17.0          12.0       14.0
## max        35.0           28.0          20.0       20.0
scipy.stats.kruskal(*[data[var].values for name, data in df.groupby(entrenamiento)]) # Prueba de Kruskal-Wallis
## KruskalResult(statistic=2.7386406017078104, pvalue=0.43370061764345524)
sns.boxplot(x=entrenamiento, y=var, data =df) # Gráfico de cajas
plt.xlabel(etiqueta)
plt.ylabel('Experiencia docente, en años')
plt.show()