Entrenamiento formal + no formal

entrenamiento = 'entrenamiento'
etiqueta = 'Entrenamiento (formal y no formal) en bioética'
df[entrenamiento].value_counts(sort=False)
## No    79
## Sí    26
## Name: entrenamiento, dtype: int64
df[entrenamiento].value_counts(sort=False, normalize=True).round(2)
## No    0.75
## Sí    0.25
## Name: entrenamiento, 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
## entrenamiento    No    Sí
## count          79.0  26.0
## mean           38.0  42.0
## std             9.0  14.0
## min            23.0  25.0
## 25%            31.0  28.0
## 50%            37.0  44.0
## 75%            44.0  56.0
## max            62.0  67.0
scipy.stats.kruskal(*[data[var].values for name, data in df.groupby(entrenamiento)]) # Prueba de Kruskal-Wallis
## KruskalResult(statistic=0.5801745286470208, pvalue=0.44624391940836794)
sns.boxplot(x=entrenamiento, y=var, data =df, order=['No','Sí']) # 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
## entrenamiento  No  Sí
## sexo                 
## Hombre         21   3
## Mujer          58  23
pd.crosstab(df[var], df[entrenamiento], normalize='index').round(2) # Frecuencia relativa
## entrenamiento    No    Sí
## sexo                     
## Hombre         0.88  0.12
## Mujer          0.72  0.28
scipy.stats.chi2_contingency(pd.crosstab(df[entrenamiento], df[var])) # Prueba del chi-cuadrado
## (1.7300845910418698, 0.18840009485761022, 1, array([[18.05714286, 60.94285714],
##        [ 5.94285714, 20.05714286]]))
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
## entrenamiento      No  Sí
## grado                    
## Licenciatura       21   3
## Grado Profesional  23   7
## Especialización    23   9
## Maestría           12   7
pd.crosstab(df[var], df[entrenamiento], normalize='index').round(2) # Frecuencia relativa
## entrenamiento        No    Sí
## grado                        
## Licenciatura       0.88  0.12
## Grado Profesional  0.77  0.23
## Especialización    0.72  0.28
## Maestría           0.63  0.37
scipy.stats.chi2_contingency(pd.crosstab(df[entrenamiento], df[var])) # Prueba del chi-cuadrado
## (3.6522886985599348, 0.3015412344375651, 3, array([[18.05714286, 22.57142857, 24.07619048, 14.2952381 ],
##        [ 5.94285714,  7.42857143,  7.92380952,  4.7047619 ]]))
sns.countplot(x=entrenamiento, hue=var, data=df, edgecolor='black', order=['No','Sí']) # 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
## entrenamiento         No  Sí
## facultad                    
## Ciencias de la Salud  54  20
## Medicina              25   6
pd.crosstab(df[var], df[entrenamiento], normalize='index').round(2) # Frecuencia relativa
## entrenamiento           No    Sí
## facultad                        
## Ciencias de la Salud  0.73  0.27
## Medicina              0.81  0.19
scipy.stats.chi2_contingency(pd.crosstab(df[entrenamiento], df[var])) # Prueba del chi-cuadrado
## (0.33988293622327964, 0.5598968011370057, 1, array([[55.67619048, 23.32380952],
##        [18.32380952,  7.67619048]]))
sns.countplot(x=entrenamiento, hue=var, data=df, edgecolor='black', order=['No','Sí']) # 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
## entrenamiento  No  Sí
## carrera              
## Bioquímica     14   4
## Enfermería      4  10
## Fisioterapia   15   4
## Medicina       14   3
## Nutrición      11   1
## Odontología    15   4
## Psicología      6   0
pd.crosstab(df[var], df[entrenamiento], normalize='index').round(2) # Frecuencia relativa
## entrenamiento    No    Sí
## carrera                  
## Bioquímica     0.78  0.22
## Enfermería     0.29  0.71
## Fisioterapia   0.79  0.21
## Medicina       0.82  0.18
## Nutrición      0.92  0.08
## Odontología    0.79  0.21
## Psicología     1.00  0.00
scipy.stats.chi2_contingency(pd.crosstab(df[entrenamiento], df[var])) # Prueba del chi-cuadrado
## (20.88312354358029, 0.00192545280423765, 6, array([[13.54285714, 10.53333333, 14.2952381 , 12.79047619,  9.02857143,
##         14.2952381 ,  4.51428571],
##        [ 4.45714286,  3.46666667,  4.7047619 ,  4.20952381,  2.97142857,
##          4.7047619 ,  1.48571429]]))
sns.countplot(x=entrenamiento, hue=var, data=df, edgecolor='black', order=['No','Sí']) # 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
## entrenamiento    No    Sí
## count          79.0  26.0
## mean            8.0  11.0
## std             7.0   8.0
## min             1.0   1.0
## 25%             3.0   4.0
## 50%             5.0   8.0
## 75%            12.0  18.0
## max            35.0  28.0
scipy.stats.kruskal(*[data[var].values for name, data in df.groupby(entrenamiento)]) # Prueba de Kruskal-Wallis
## KruskalResult(statistic=1.7186296638096883, pvalue=0.18986953290504127)
sns.boxplot(x=entrenamiento, y=var, data =df, order=['No','Sí']) # Gráfico de cajas
plt.xlabel(etiqueta)
plt.ylabel('Experiencia docente, en años')
plt.show()