Los que cobraron más: APDAYC 2012

El útero de marita está emitiendo informes diarios acerca de los manejos del dinero que realiza APDAYC en nombre de los compositores y escritores de música del Perú.

Marco Sifuentes escribió en Facebook que requiere ayuda para poder asimilar mejor todos los destapes que está posteando en su blog utero.pe (junto con Jonathan Castro).

Con ánimos de ayudar a la causa (#intervenganAPDAYC) me puse a ver la cantidad de dinero que cobraron algunos directivos del APDAYC durante el 2012, por concepto de derechos de autor. En el post uterino “se la llevan facil” aparecen algunos números, pero no se aprecia si esta ganancia es mucho (o poco) en comparación con lo ganado por los asociados de APDAYC que no son miembros del Consejo Directivo.

Intenté hacer un gráfico de lo ganado por los compositores más prolíficos en comparación con el dinero que cobraron los directivos de APDAYC.

Obtuve la lista de directivos de aqui. Y las ganancias de los 250 asociados que tuvieron más regalías durante el 2012 de aqui.

Tuve que bajarme el PDF, convertirlo a texto, y dibujar el gráfico. Como soy bien nerd, para convertir el texto usé comandos de Linux y para dibujar el gráfico usé el lenguaje de programación Python (con su librería gráfica matplotlib).

Aqui está el gráfico, y más abajo el código que tuve que tipear para hacer este “análisis” tan diligente 😉 (hacer click para agrandar la imagen).

Los que más cobraron, APDAYC 2012

Los que más cobraron, APDAYC 2012

Manya, son haaaaaartos los compositores que cobran regalías. Pero son unos pocos quien se llevan harta plata, y son muchos los que cobran poquito (se lleva 3 mil soles al año el que está en puesto 250).

Debemos alegrarnos por los miembros del Consejo Directivo de APDAYC que son afortunados en estar entre los que más regalías se llevaron durante el 2012 (por ejemplo José Escajadillo, Armando Massé y Julio Andrade, entre otros).

[Actualización 6 de Octubre 2013]

Un tuitero/bloguero influyente me sugirió averiguar si hay un patrón de las ganancias recibidas por los socios que tienen mayor poder de decisión en APDAYC. Osea ver si los que cortan en jamón en APDAYC ganan más o ganan menos en comparación con los socios que tienen menor voto en los manejos de la Sociedad Colectiva APDAYC.

El útero de marita nos cuenta que no todos los socios de APDAYC tienen el mismo derecho a voto. Por ejemplo cada voto de los socios principales vale por 5, cada voto de los socios vitalicios vale como 4 votos, cada voto de socios activos vale por 3.

Se supone que en una democracia cada persona es igual a un voto, pero en APDAYC eso no es así. Entonces los que tienen mayor poder de decisión del rumbo de APDAYC, los que parten y reparten son principalmente ese grupo de socios principales, vitalicios y activos.

Cuanto reciben de regalías los que cortan el jamón en APDAYC?

Estuve mirando otra vez los datos y me di cuenta que estos socios privilegiados son casi la mitad (138 socios, o el 55%) pero se llevan la mayoría de plata recaudada en APDAYC. El 84% del dinero cobrado por regalías durante el 2012 (7 millones de soles) se lo llevaron este grupo de socios con voto privilegiado. Mientras que la otra mitad de socios le corresponde poco más de 1 millon (16% del total).

Resulta interesante que los que cortan el jamón en APDAYC se lleven el 84% del dinero (a pesar de ser la mitad de socios con derecho a voto).

Bueno dicen que el que parte y reparte se lleva la mayor parte?

Aqui les dejo el gráfico para digerir mejor los datos (al final de este post está todo el código usado para los análisis).

Ganancias de socios principales, vitalicios y activos

La mitad de socios tiene voto privilegiado, cada voto vale de 3 a 5 veces que los votos de la otra mitad. Es curioso que además se lleven la mayor tajada de las regalías recaudadas por APDAYC.

[Actualización 7 Oct 2013]

Pero qué porcentaje de TODAS las regalías recibe este grupo de socios?

En la Memoria de APDAYC del 2012, señalan en la página 12 (o página 22 en
realidad), que se repartieron 29 millones de soles entre todos sus asociados.

Según el útero de marita “APDAYC tiene más de 8 mil afiliados, pero sólo 248 tienen derecho a voto en la Asamblea General”.

Supongamos que APDAYC tiene 8 mil socios, entonces entre ellos repartieron 29 millones de soles durante el 2012.

Quiero saber:

  • Qué porcentaje de estos 8mil son los socios con votos privilegiados (principales, vitalicios y activos).
  • Qué porcentaje del dinero total se llevan estos socios con voto privilegiado?

Estos son los datos:

  • Dinero total: 29,197,272 Soles
  • Número total de socios: 8000
  • Total socios con voto privilegiado: 138
  • Dinero recibido por socios principales: 1240,041.19
  • Dinero recibido por socios vitalicios: 59,347.69
  • Dinero recibido por socios activos: 5731,717.18
  • Porcentaje de socios con voto privilegiado: 1.7%
  • Porcentaje del dinero que se recibe este grupo: 24.08%

Y este es el gráfico resultante:

Porcentaje de ganancias de socios con voto privilegiado

Porcentaje de ganancias de socios con voto privilegiado, APDAYC 2012

Pues es de esperarse que el 1.7% de socios se lleve la cuarta parte de las regalías. Si vemos otra vez el gráfico de los socios más rendidores, los que más plata reciben, veremos que son los socios principales y activos (con voto multiplicado por 5 y por 3) quienes reciben más regalías.

Los socios principales y activos son los que más regalías cobraron durante el 2012.

Los socios principales y activos son los que más regalías cobraron durante el 2012.

Sección para geeks

Aqui el código en la consola de Linux:

# Bajarse la memoria en PDF y extraer las páginas 34, 35 y 36
pdftk Memoria_APDAYC_2012.pdf cat 34-36 output mas_productivos_2012.pdf

# convertir PDF a texto
pdftotext -layout mas_productivos_2012.pdf

# hacer limpieza manual para eliminar texto que no se necesita (joyas y premios)
# extraer nombres y ganancias
cat mas_productivos_2012.txt | sed 's/S\/\.//g' | sed 's/\$//g' | sed 's/\s\+/ /g' | sed -r 's/([A-Z]),/\1/g' | sed 's/,//g' | sed -r 's/(([A-Z]+\s)+)/\1,/g' | sed 's/ ,/,/g' | sed -r 's/^[0-9]+\s[0-9]+\s//g' | sed -r 's/\s*$//g' > tmp_mas_productivos.txt

# dibujar el gráfico usando Python y matplotlib
python mas_productivos.py

Y aqui el código actualizado en el lenguage Python:

# -*- coding: utf-8 -*-
import codecs
import locale
import prettyplotlib as ppl
import numpy as np
from prettyplotlib import plt

locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')

f = codecs.open("output/tmp_socios_principales.txt", encoding="utf-8")
data = f.read()
f.close()

# Esta es la lista de "Socios principales"
data = data.split("\n")
principales = []
vitalicios = []
activos = []
for line in data:
    line = line.strip()
    if len(line) > 0:
        line = line.split(",")
        if line[1] == "PRINCIPAL":
            principales.append(line[0])
        if line[1] == "VITALICIO":
            vitalicios.append(line[0])
        if line[1] == "ACTIVO":
            activos.append(line[0])

# cantidad de regalias por "socios principales"
f = codecs.open("output/tmp_mas_productivos.txt", encoding="utf-8")
data = f.read()
f.close()

data = data.split("\n")
princi_money = float()
vitali_money = float()
activo_money = float()
otros_money = float()

for i in data:
    if len(i) > 0:
        i = i.split(",")
        author = i[0]
        money = i[1].split(" ")
        money = money[len(money)-1]
        if author in principales:
            princi_money += float(money)
        elif author in vitalicios:
            vitali_money += float(money)
        elif author in activos:
            activo_money += float(money)
        else:
            otros_money += float(money)

## DO principales + vitalicios
## numero de socios por categoria
numero_socios = [str(len(principales) + len(vitalicios)),
                 str(250-len(principales)-len(vitalicios))]

print "Socios privilegiados con el voto " + str(len(principales) +
        len(vitalicios) + len(activos))

y = [princi_money + vitali_money, activo_money + otros_money]
annotate = [locale.format("%d", y[0], grouping=True) + " S/.",
            locale.format("%d", y[1], grouping=True) + " S/."]

width = 0.35
bar_color = ["r", "#66c2a5"]
plt.rc('font', **{'family': 'DejaVu Sans'})
fig, ax = plt.subplots(1, figsize=(8,6))
ind = np.arange(2)
xdata = ind + 0.05 + width
ax.bar(ind, y)
ax.set_xticks(ind + 0.4)
ax.set_xticklabels(["principales y vitalicios\n(" + numero_socios[0] + " socios)",
                    "otros socios\n(" + numero_socios[1] + " socios)",
                    ],
                    rotation="horizontal", multialignment="center")
ax.autoscale()
ax.set_title(u'Ganancias de socios principales y vitalicios\n comparados con el resto de socios',
        fontdict = {'fontsize':22}
        )

y_labels = ["0", "1,000,000", "2,000,000", "3,000,000", "4,000,000",
                "5,000,000", "6,000,000", "7,000,000", "8,000,000"]
ax.set_yticklabels(y_labels)

plt.ylabel(u'Regalías en S/.', fontdict={'fontsize':18})
plt.xlabel(u'Beneficiarios', fontdict={'fontsize':22})

ppl.bar(ax, np.arange(len(y)), y, grid="y", annotate=annotate, color=bar_color)
fig.tight_layout()
fig.savefig("output/socios_principales.png")
output = "Plot de socios Principales + Vitalicios guardados en archivo "
output += "``output/socios_principales.png``\n"
print output

## DO principales + vitalicios + activos
## numero de socios por categoria
numero_socios = [str(len(principales) + len(vitalicios) + len(activos)),
                 str(250-len(principales) - len(vitalicios) - len(activos))]

# Porcentaje de socios principales+vitalicios+activos versus otros
percent_pva = float((len(principales)+len(vitalicios)+len(activos))*100/250)
percent_socios_otros = 100.0 - percent_pva

# Porcentaje de DINERO de socios principales+vitalicios+activos versus otros
y = [princi_money + vitali_money + activo_money, otros_money]
percent_money_pva = int(float(princi_money + vitali_money + activo_money)*100/(y[0] + y[1]))
percent_money_otros = 100 - percent_money_pva

annotate = [locale.format("%d", y[0], grouping=True) +
                " S/.",
            locale.format("%d", y[1], grouping=True) +
                " S/."]

width = 0.35
bar_color = ["r", "#0099FF"]
plt.rc('font', **{'family': 'DejaVu Sans'})
fig, ax = plt.subplots(1, figsize=(9,6))
ind = np.arange(2)
xdata = ind + 0.05 + width

# write percentaje of money to plot
ax.annotate(str(percent_money_pva) +"%\ndel dinero", ha="center", color="w",
        size=38, xy=(0.2,1.2), xytext=(0.4, 2500000))
ax.annotate(str(percent_money_otros) +"%\ndel dinero", ha="center", color="w",
        size=18, xy=(0.2,1.2), xytext=(1.4, 150000))

ax.bar(ind, y)
ax.set_xticks(ind + 0.4)
ax.set_xticklabels(["principales, vitalicios y activos\n(" +
                            str(int(percent_pva)) + "% del total)",
                    "otros socios\n(" +
                            str(int(percent_socios_otros)) + "% del total)"
                    ],
                    rotation="horizontal", multialignment="center")
ax.autoscale()
ax.set_title(u'Ganancias de socios principales, vitalicios y activos'
        + '\ncomparados con el resto de socios',
        fontdict = {'fontsize':22}
        )

y_labels = ["0", "1,000,000", "2,000,000", "3,000,000", "4,000,000",
                "5,000,000", "6,000,000", "7,000,000", "8,000,000"]
ax.set_yticklabels(y_labels)

plt.ylabel(u'Regalías en S/.', fontdict={'fontsize':18})
plt.xlabel(u'Beneficiarios', fontdict={'fontsize':22})

ppl.bar(ax, np.arange(len(y)), y, annotate=annotate, color=bar_color)
fig.tight_layout()
fig.savefig("output/socios_principales_vitalicios_activos.png")
output = "Plot de socios Principales + Vitalicios + Activos guardados en archivo "
output += "``output/socios_principales_vitalicios_activos.png``\n"
print output

Código de cuáles miembros del consejo directivo se llevan más regalías

Aquí el código y datos para generar el pie-chart

Y aquí el código necesario para hacer el plot usando el paquete estadístico R.

library(ggplot2)
datos <- read.csv("output/socios_pva_versus_total.csv", sep=",",
              header=FALSE)
money <- datos[3:4,]
names(money) <- c("Socios","Regalías")

png(filename="output/socios_pva_versus_total.png",
      width=950, height=630, units="px")
ggplot(money, aes(x="", y=Regalías, fill=Socios)) +
  theme(text = element_text(size=22)) +
  geom_bar(width=1, stat="identity") +
  coord_polar("y", start=pi/3) +
  labs(title="Repartición de regalías, APDAYC 2012")
dev.off()
Anuncios

Patrones de voto de tus congresistas

Estuve pensando en alguna manera de visualizar el patrón de voto de nuestros congresistas en base a las más recientes (y polémicas) votaciones, en contra de los gays y a favor de escoger miembros del Tribunal Constitucional en base a una vil #repartija.

Me bajé la lista de congresistas de la web del congreso http://www.congreso.gob.pe/organizacion/pleno.asp?mode=Pleno y realicé una edición de la lista para considerar Apellido Paterno Apellido Materno y Primer Nombre para cada uno. Los espacios fueron reemplazados con subguión.

Algo así:

Abugattás_Majluf_Daniel
Acha_Romaní_Walter
Acuña_Núñez_Richard
Acuña_Peralta_Virgilio
Aguinaga_Recuenco_Alejandro
Alcorta_Suero_María
Andrade_Carmona_Fernando
Angulo_Álvarez_Roberto
Anicama_Ñañez_Elsa
Apaza_Condori_Emiliano
Apaza_Ordóñez_Justiniano

Podemos convertir la votaciones de cada congresista a modo binario. El voto a favor de una buena propuesta se puede codificar con 1 (a favor de incluir orientación sexual en la lista de crímines de odio; en contra de elegir a Cayo Galindo, Víctor Mayorga, Rolando Sousa, Francisco Eguiguren, José Luis Sardón y Ernesto Blume como magistrados del Tribunal Constitucional). Se puede codificar con 0 los que votan a favor de malas propuestas. Los ausentes por licencia, ausentes y abtenciones se pueden codificar con signo de interrogación “?”).

Además modifiqué el archivo para que esté en formato NEXUS y pueda ser leído por el programa filogenético llamado PAUP.

Algo así:

#NEXUS

BEGIN DATA;
DIMENSIONS NTAX=130 NCHAR=2;
FORMAT DATATYPE=STANDARD MISSING=? GAP=-;
MATRIX

Abugattás_Majluf_Daniel           ??
Acha_Romaní_Walter                ?0
Acuña_Núñez_Richard               10
Acuña_Peralta_Virgilio            1?
Aguinaga_Recuenco_Alejandro       00
Alcorta_Suero_María               00
Andrade_Carmona_Fernando          00
Angulo_Álvarez_Roberto            00
Anicama_Ñañez_Elsa                ?0
Apaza_Condori_Emiliano            00
Apaza_Ordóñez_Justiniano          00

El archivo completo está aquí.

Ingresé a PAUP, leí el archivo y pedí que ejecute el algoritmo conocido como Neighbor-joining que consiste en agrupar en un dendrograma los congresistas que se parezcan más según los votos que hayan emitido (favor, contra) o hayan estado ausentes.

# Entrar a PAUP y leer el archivo de datos
paup> execute congresistas.txt

# Ejecutar el algoritmo Neighbor-joining
paup> nj;

# Guardar el dendograma en directorio actual
paup> savetree file=congresistas.tre format=altnexus;

Guardé el dendograma en un archivo aparte para dibujar el dendrograma usando el paquete estadístico R y la librería APE. El dendrograma se guarda en un archivo PDF:

library(ape);
x <- read.nexus("congresistas.tre");
pdf(file="congresistas_cluster.pdf", paper="a4", width=11);
plot(x, cex=0.22);
dev.off();

Bájate el archivo resultante congresistas_cluster.pdf si deseas.

También se puede convertir el PDF a imagen y colorear los grupos de congresistas. Por ejemplo podemos colorear de verde el grupo de congresistas “buenos” (los que han votado a favor de gays y se abstuvieron de votar por los miembros del TC).

Es interesante comparar mi lista de congresistas “buenos” con aquellos de la “Lista de honor” compilada por el usuario de Scribd comunicadociudadano como resultado de un crossover de los congresistas que votaron en contra de los gays y favor de la #repartija.

Mi lista de congresistas “buenos” es más liberal ya que, por ejemplo, da el beneficio de la duda a la congresista fujimorista Leyla Chihuán que no votó por magistrados del TC porque se encontraba de licencia.

He coloreado de amarillo los congresistas “masomenos” que votaron “bien” en al menos una de las votaciones. Por ejemplo el congresista Sergio Tejada votó a favor de los gays pero votó a favor de elegir a los miembros del TC. Muchos están decepcionados de Tejada, pero por ahora no está tan mal (estaremos vigilando).

El resto de congesistas son “malos” porque votaron “mal” en las dos ocasiones o se abstuvieron de votar debido a ausencias, licencias y/o abstenciones voluntarias.

dendrograma de congresistas

Dendrograma de congresistas. Hacer click para agrandar.

Sería intersante agregar los resultados de votaciones adicionales para tener más columnas, más datos y ver si salen patrones más interesantes. Por ejemplo podríamos identificar al “congresista más bueno” (aquel que vota “bien” en todas las ocasiones) así como al “congresista más malo” (aquél que siempre vota “mal”).

El “big data” que nos hablaba el amigo útero.pe

Podríamos tener esta lista y dendrograma actualizados antes de las elecciones del 2016, para que eligas mejor a tus congresistas, sí tú, amigo lector.