#!/usr/bin/perl -w

# miÃ© 01 sep 2021 03:16:24 CEST  ->     Esta versiÃ³n 5 no debe ser publicada hasta revisiÃ³n de mÃ­nima verosimilitud
# lun 04 oct 2021 10:31:18 CEST  ->     Como no hacen comentarios, se publica
# mar 07 dic 2021 04:55:58 CET  -> VersiÃ³n 6 para saber el efecto de aumentar de 67 a 70 los aÃ±os de trabajo
# jue 03 feb 2022 15:30:52 CET  -> v.7 con datos reales 2021

use 5.032;

# use Memoize;

# memoize("rollpob");

my $DEBUG = 0;

my $INGRESO_FISCAL_2020 = 164_630; # millones â‚¬  -> es el mÃ¡s bajo desde 2011

my $INGRESO_FISCAL_2021 = 223_382; # millones de euros

my @pob;
my @tmp;
open IN, '<', "pob_edad.csv" or die $!;
@tmp = <IN>;
for (@tmp){
    chomp;
    chop; # windows
    next if (/^#/);
    m/^(\d+) \s (.+) \; (\d+)$/x;
    if (defined $1 && defined $3) {
	$pob[$1] = $3;
	say "$1 $3" if $DEBUG;
    }else{
	warn "DATO CHUNGO";
    }
}
close IN;

my $SUPUESTO_FIN_TRABAJO = 67;    # pone rentas de mayores de 65 luego hay duda

my $SUPUESTA_COTIZACION = 0.279;  # by hand

my @renta = (0) x 101;
open IN2, '<', "renta_edad.csv" or die $!; # problema: es renta NETA media "estadÃ­stica" y lo que interesa es INGRESO INTEGRO TRABAJO FISCAL
@tmp = <IN2>;
for (@tmp){
    chomp;
    chop;
    next if (/^#/);
    if (/^\+/ && /2020\;/){
	m/\;(\d+)$/;
	my $data = $1;                     # problema: son muy pocos datos
	warn "Dato chungo" unless defined $data; 
	$data /= (1 - $SUPUESTA_COTIZACION) ;   # asÃ­ "aumento" la renta neta a la renta bruta
	say "$data" if $DEBUG;
	if (/enores/){
	    for (0..15){
		$renta[$_] = 0;   # $data; la renta neta media de menores de 16 estÃ¡ calculada pero no tiene interpretaciÃ³n porque no COTIZAN. La ESO es obligatoria, etc.
	    }
	}elsif (/16/ && /29/){
	    for (16 .. 29){
		$renta[$_] = $data;
	    }
	}elsif (/30/ && /44/){
	    for (30 .. 44){
		$renta[$_] = $data;
	    }
	}elsif (/45/ && /64/){
	    for (45 .. 64){
		$renta[$_] = $data;
	    }
	}elsif (/65/){
	    for (65 .. $SUPUESTO_FIN_TRABAJO){
		$renta[$_] = $data;
	    }
	}else{
	    warn "DATO CHUNGO";
	}
    }
}
close IN2;

# ya aquÃ­ la cosa se ve que estÃ¡ mal de datos, pero seguimos

my $ingresos_reales_2020 =  157_562_000_000;
my $gastos_reales_2020 = 171_883_286_720;

# my $ingresos_reales_2021 = 223_382_000_000;
# my $gastos_reales_2021 = 163_297_000_000;

my $ingresos_reales_2021 = 157_547_600_000; 
my $gastos_reales_2021 = 171_840_800_000;
my $deficit_2021 = -14_293_200_000;  

my $SUPUESTA_PENSION_MEDIA = 1566 *14;
$SUPUESTA_COTIZACION = 0.279;
my ($res1, $res2) = (1566*14, 0.279);
my ($res, $resant);
$resant = 9e99;
my $resant1 = $res1;
my $resant2 = $res2;
my $sumaingresosest;
my $sumagastosest;
my $kount;
my ($SPM, $SC) = ($SUPUESTA_PENSION_MEDIA, $SUPUESTA_COTIZACION);     # OJO A LO DE SIEMPRE
my ($SPMANT, $SCANT) = ($SPM, $SC);

# my $deficit = $deficit_2021;

do{
    $kount++;
    
    $SUPUESTA_PENSION_MEDIA =  $SPM + (rand()-0.5) / 10_000; # 10_000 est6 publicado
    
    $SUPUESTA_COTIZACION =  $SC + (rand()-0.5) / 10_000; #      # como mucho, ya que desempleo, contingencias, etc. no cuenta 

    $sumaingresosest = $sumagastosest = 0;
    for my $i (0 .. scalar(@pob)-1){
	if ($i <= $SUPUESTO_FIN_TRABAJO){
	    $sumaingresosest += $pob[$i] * $renta[$i] * $SUPUESTA_COTIZACION;
	}else{
	    $sumagastosest += $pob[$i] * $SUPUESTA_PENSION_MEDIA;
	}
    }

    $res1 = abs($sumaingresosest - $ingresos_reales_2021);       # error del modelo en ingreso
    $res2 = abs($sumagastosest - $gastos_reales_2021);           # error del modelo en gasto problema de signos (+) + (-)
    
    $res = $res1+$res2;                 # suma de errores, objetivo comÃºn   -> que debe ser el deficit ya conocido
#    say "$kount) Resultado = $res";
    
#    if (($res1+$res2) <= ($resant1+$resant2)){

    if ($resant1 >= $res1 || $res <= $resant){
	say "$kount Error = $res";
	say "                                                        Supuesta cotizaciÃ³n efectiva = $SUPUESTA_COTIZACION" if $DEBUG;
	$resant1 = $res1;
	$resant = $res;
	$SC = $SUPUESTA_COTIZACION;
	$SCANT = $SC;
    }else{
	$SC = $SCANT;
    }

    if ($resant2 >= $res2 || $res <= $resant){
	say "$kount Error = $res";
	say "Supuesta pensiÃ³n media = $SUPUESTA_PENSION_MEDIA" if $DEBUG;
	$resant2 = $res2;
	$resant = $res;
	$SPM = $SUPUESTA_PENSION_MEDIA;              # OJO CON LA CIFRA QUE VA AL PAN
	$SPMANT = $SPM;
    }else{
	$SPM = $SPMANT;
    } 
    
    my $flag = 0;
    
    if (defined $ARGV[0]){
	if ($ARGV[0] =~ /speed/i){
	    $flag=1;
	}
    }
    select (undef, undef, undef, 0.01) if $flag == 0;
    
}until ( $res < 100 );

say "Error = $res Iteraciones = $kount";

say "Primera estimaciÃ³n de ingresos = $sumaingresosest";
say "Primera estimaciÃ³n de gastos = $sumagastosest";

say "\tEstimaciÃ³n primera dÃ©ficit = ", $sumaingresosest-$sumagastosest, "";
say "\tParte del ingreso fiscal = ", ($sumaingresosest-$sumagastosest)/(1e6*$INGRESO_FISCAL_2021), "";
say "\tTotal parte pensiones = ", $sumagastosest/(1e6*$INGRESO_FISCAL_2021);

if (0) {
    my $comment = <<EOT;
    El Presupuesto consolidado de la Seguridad Social para 2021 presenta un volumen de gasto
      no financiero de 171.840,8 millones de euros, unos ingresos de 157.547,6 millones y, por
      tanto, un dÃ©ficit de -14.293,2 millones de euros, en torno a un -1,3 % del PIB estimado
      para ese aÃ±o
EOT
      ;
}

my $CRECIMIENTO_VEGETATIVO = -153_167;   # dato a 2021
my $POBLACION_TOTAL = 47_394_223;

my $PORCENTAJE_PROYECTAR = $CRECIMIENTO_VEGETATIVO / $POBLACION_TOTAL;


say "";

say "SUPUESTO 2: crecimiento vegetativo negativo con subida IPC";

say "El porcentaje a proyectar 2021 es de $PORCENTAJE_PROYECTAR";

# $PORCENTAJE_PR0YECTAR = -0.0012;   # segÃºn Climent, pero lo obvio y sigo con lo mio porque es mayor (mÃ¡s desigual) y aÃ±o reciente

my $SUPUESTO_INCREMENTO = 0.025;  # IPC SIMULADO

say "IPC = $SUPUESTO_INCREMENTO";


my $sumaingresos2 = 0;
my $sumagastos2 = 0;
my @pob2 = rollpob(5);
for my $i (0 .. scalar(@pob)-1){
#    $pob2[$i] = (rollpob(5))[$i];
    if ($i <= $SUPUESTO_FIN_TRABAJO){
	$sumaingresos2 += $pob2[$i] * $renta[$i] * $SUPUESTA_COTIZACION * (1 + $PORCENTAJE_PROYECTAR) ** 5;        # ejemplo 5 aÃ±os  v3. interÃ©s compuesto
    }else{
	$sumagastos2 += $pob2[$i] * $SUPUESTA_PENSION_MEDIA * (1 + $SUPUESTO_INCREMENTO) ** 5;
    }
}
say "Segunda estimaciÃ³n de ingresos = $sumaingresos2";
say "Segunda estimaciÃ³n de gastos = $sumagastos2";

say "\tEstimaciÃ³n segunda de dÃ©ficit = ", $sumaingresos2-$sumagastos2, "";

my $INGRESO_FISCAL_2026 = $INGRESO_FISCAL_2021 * (1 + 0.055) * (1 + 0.03) ** 4; # el primer aÃ±o crece al 6% y el resto al 3% v3. interÃ©s compuesto

say "\tParte del ingreso fiscal = ", ($sumaingresos2-$sumagastos2)/(1e6*$INGRESO_FISCAL_2026), "";
say "\tTotal parte pensiones = ", $sumagastos2/(1e6*$INGRESO_FISCAL_2026);

say "";

say "SUPUESTO 3: crecimiento vegetativo nulo con subida IPC";

say "IPC = $SUPUESTO_INCREMENTO";

my $sumaingresos3 = 0;
my $sumagastos3 = 0;
my @pob3 = rollpob(5);
for my $i (0 .. scalar(@pob)-1){
#    $pob3[$i] = (rollpob(5))[$i];
    if ($i <= $SUPUESTO_FIN_TRABAJO){
	$sumaingresos3 += $pob3[$i] * $renta[$i] * $SUPUESTA_COTIZACION * (1 + 0) ** 5;        # ejemplo 5 aÃ±os v3. interÃ©s compuesto
    }else{
	$sumagastos3 += $pob3[$i] * $SUPUESTA_PENSION_MEDIA * (1 + $SUPUESTO_INCREMENTO) ** 5;
    }
}
say "3.Âª estimaciÃ³n de ingresos = $sumaingresos3";
say "3.Âª estimaciÃ³n de gastos = $sumagastos3";

say "\tEstimaciÃ³n 3.Âª de dÃ©ficit = ", $sumaingresos3-$sumagastos3, "";
say "\tParte del ingreso fiscal = ", ($sumaingresos3-$sumagastos3)/(1e6*$INGRESO_FISCAL_2026), "";
say "\tTotal parte pensiones = ", $sumagastos3/(1e6*$INGRESO_FISCAL_2026);
say "";

say "SUPUESTO 4: crecimiento vegetativo negativo con congelaciÃ³n pensiones";

my $sumaingresos4 = 0;
my $sumagastos4 = 0;
my @pob4 = rollpob(5);
for my $i (0 .. scalar(@pob)-1){
#    $pob4[$i] = (rollpob(5))[$i];
    if ($i <= $SUPUESTO_FIN_TRABAJO){
	$sumaingresos4 += $pob4[$i] * $renta[$i] * $SUPUESTA_COTIZACION * (1 + $PORCENTAJE_PROYECTAR) ** 5;        # ejemplo 5 aÃ±os v3. interÃ©s compuesto
    }else{
	$sumagastos4 += $pob4[$i] * $SUPUESTA_PENSION_MEDIA * (1 + 0) ** 5;    # CONGELACION NOMINAL DE PENSIONES
    }
}
say "4.Âª estimaciÃ³n de ingresos = $sumaingresos4";
say "4.Âª estimaciÃ³n de gastos = $sumagastos4";

say "\tEstimaciÃ³n 4.Âª de dÃ©ficit = ", $sumaingresos4-$sumagastos4, "";
say "\tParte del ingreso fiscal = ", ($sumaingresos4-$sumagastos4)/(1e6*$INGRESO_FISCAL_2026), "";
say "\tTotal parte pensiones = ", $sumagastos4/(1e6*$INGRESO_FISCAL_2026);

say "";

say "SUPUESTO 5: crecimiento vegetativo negativo con semicongelaciÃ³n pensiones";

$SUPUESTO_INCREMENTO = 0.02;   # tiene que ser bajo 

say "Supuesto de incremento = $SUPUESTO_INCREMENTO";

my $sumaingresos5 = 0;
my $sumagastos5 = 0;
my @pob5 = rollpob(5);
for my $i (0 .. scalar(@pob)-1){
#    $pob5[$i] = (rollpob(5))[$i];
    if ($i <= $SUPUESTO_FIN_TRABAJO){
	$sumaingresos5 += $pob5[$i] * $renta[$i] * $SUPUESTA_COTIZACION * (1 + $PORCENTAJE_PROYECTAR) ** 5;        # ejemplo 5 aÃ±os v3. interÃ©s compuesto
    }else{
	$sumagastos5 += $pob5[$i] * $SUPUESTA_PENSION_MEDIA * (1 + $SUPUESTO_INCREMENTO) ** 5;    # SEMICONGELACION NOMINAL DE PENSIONES
    }
}
say "5.Âª estimaciÃ³n de ingresos = $sumaingresos5";
say "5.Âª estimaciÃ³n de gastos = $sumagastos5";

say "\tEstimaciÃ³n 5.Âª de dÃ©ficit = ", $sumaingresos5-$sumagastos5, "";
say "\tParte del ingreso fiscal = ", ($sumaingresos5-$sumagastos5)/(1e6*$INGRESO_FISCAL_2026), "";
say "\tTotal parte pensiones = ", $sumagastos5/(1e6*$INGRESO_FISCAL_2026);

say "";
say "SUPUESTO 6: crecimiento vegetativo negativo con semicongelaciÃ³n pensiones con vida laboral hasta los 68";

$SUPUESTO_INCREMENTO = 0.015;   # tiene que ser bajo 

$SUPUESTO_FIN_TRABAJO = 68;   # Ya leÃ­do que en el CÃ­rculo de Empresarios hay quien opina que la soluciÃ³n pasa por subir la edad

say "Supuesto de incremento = $SUPUESTO_INCREMENTO";

my $sumaingresos6 = 0;
my $sumagastos6 = 0;
my @pob6 = rollpob(5);
for my $i (0 .. scalar(@pob)-1){
#    $pob5[$i] = (rollpob(5))[$i];
    if ($i <= $SUPUESTO_FIN_TRABAJO){           # los 70 de la versiÃ³n 6
	$sumaingresos6 += $pob6[$i] * $renta[$i] * $SUPUESTA_COTIZACION * (1 + $PORCENTAJE_PROYECTAR) ** 5;        # ejemplo 5 aÃ±os v3. interÃ©s compuesto
    }else{
	$sumagastos6 += $pob6[$i] * $SUPUESTA_PENSION_MEDIA * (1 + $SUPUESTO_INCREMENTO) ** 5;    # SEMICONGELACION NOMINAL DE PENSIONES
    }
}
say "6.Âª estimaciÃ³n de ingresos = $sumaingresos6";
say "6.Âª estimaciÃ³n de gastos = $sumagastos6";

say "\tEstimaciÃ³n 6.Âª de dÃ©ficit = ", $sumaingresos6-$sumagastos6, "";
say "\tParte del ingreso fiscal = ", ($sumaingresos6-$sumagastos6)/(1e6*$INGRESO_FISCAL_2026), "";
say "\tTotal parte pensiones = ", $sumagastos6/(1e6*$INGRESO_FISCAL_2026);

say "";
say "SUPUESTO 7: crecimiento vegetativo negativo con semicongelaciÃ³n pensiones 2% con vida laboral hasta los 68";

$SUPUESTO_INCREMENTO = 0.02;   # tiene que ser bajo 

$SUPUESTO_FIN_TRABAJO = 68;

say "Supuesto de incremento = $SUPUESTO_INCREMENTO";

my $sumaingresos7 = 0;
my $sumagastos7 = 0;
my @pob7 = rollpob(5);
for my $i (0 .. scalar(@pob)-1){
#    $pob5[$i] = (rollpob(5))[$i];
    if ($i <= $SUPUESTO_FIN_TRABAJO){           # los 68 de la versiÃ³n 6
	$sumaingresos7 += $pob7[$i] * $renta[$i] * $SUPUESTA_COTIZACION * (1 + $PORCENTAJE_PROYECTAR) ** 5;        # ejemplo 5 aÃ±os v3. interÃ©s compuesto
    }else{
	$sumagastos7 += $pob7[$i] * $SUPUESTA_PENSION_MEDIA * (1 + $SUPUESTO_INCREMENTO) ** 5;    # SEMICONGELACION NOMINAL DE PENSIONES
    }
}
say "7.Âª estimaciÃ³n de ingresos = $sumaingresos7";
say "7.Âª estimaciÃ³n de gastos = $sumagastos7";

say "\tEstimaciÃ³n 7.Âª de dÃ©ficit = ", $sumaingresos7-$sumagastos7, "";
say "\tParte del ingreso fiscal = ", ($sumaingresos7-$sumagastos7)/(1e6*$INGRESO_FISCAL_2026), "";
say "\tTotal parte pensiones = ", $sumagastos7/(1e6*$INGRESO_FISCAL_2026);

say "";
say "SUPUESTO 8: crecimiento vegetativo negativo con semicongelaciÃ³n pensiones 2% con incremento rentas 3% con vida laboral hasta los 68";

$SUPUESTO_INCREMENTO = 0.02;   # tiene que ser bajo 

$SUPUESTO_FIN_TRABAJO = 68;

say "Supuesto de incremento = $SUPUESTO_INCREMENTO";

my $INCREMENTO_RENTA = 0.03;

my $sumaingresos8 = 0;
my $sumagastos8 = 0;
my @pob8 = rollpob(5);
for my $i (0 .. scalar(@pob)-1){
#    $pob5[$i] = (rollpob(5))[$i];
    if ($i <= $SUPUESTO_FIN_TRABAJO){           # los 68 de la versiÃ³n 6
	$sumaingresos8 += $pob8[$i] * $renta[$i] * $SUPUESTA_COTIZACION * (1 + $PORCENTAJE_PROYECTAR) ** 5 * (1 + $INCREMENTO_RENTA)**5 ;        # ejemplo 5 aÃ±os v3. interÃ©s compuesto
    }else{
	$sumagastos8 += $pob8[$i] * $SUPUESTA_PENSION_MEDIA * (1 + $SUPUESTO_INCREMENTO) ** 5;    # SEMICONGELACION NOMINAL DE PENSIONES
    }
}
say "8.Âª estimaciÃ³n de ingresos = $sumaingresos8";
say "8.Âª estimaciÃ³n de gastos = $sumagastos8";

say "\tEstimaciÃ³n 8.Âª de dÃ©ficit = ", $sumaingresos8-$sumagastos8, "";
say "\tParte del ingreso fiscal = ", ($sumaingresos8-$sumagastos8)/(1e6*$INGRESO_FISCAL_2026), "";
say "\tTotal parte pensiones = ", $sumagastos8/(1e6*$INGRESO_FISCAL_2026);

say "";
say "SUPUESTO 9: crecimiento vegetativo negativo con semicongelaciÃ³n pensiones 2% con incremento rentas 3% con vida laboral hasta los 67";

$SUPUESTO_INCREMENTO = 0.02;   # tiene que ser bajo 

$SUPUESTO_FIN_TRABAJO = 67;

say "Supuesto de incremento = $SUPUESTO_INCREMENTO";

$INCREMENTO_RENTA = 0.03;

my $sumaingresos9 = 0;
my $sumagastos9 = 0;
my @pob9 = rollpob(5);
for my $i (0 .. scalar(@pob)-1){
    #    $pob5[$i] = (rollpob(5))[$i];
        if ($i <= $SUPUESTO_FIN_TRABAJO){           # los 68 de la versiÃ³n 6
	    $sumaingresos9 += $pob9[$i] * $renta[$i] * $SUPUESTA_COTIZACION * (1 + $PORCENTAJE_PROYECTAR) ** 5 * (1 + $INCREMENTO_RENTA)**5 ;        # ejemplo 5 aÃ±os v3. interÃ©s compuesto
	}else{
	    $sumagastos9 += $pob9[$i] * $SUPUESTA_PENSION_MEDIA * (1 + $SUPUESTO_INCREMENTO) ** 5;    # SEMICONGELACION NOMINAL DE PENSIONES
	}
    }
say "9.Âª estimaciÃ³n de ingresos = $sumaingresos9";
say "9.Âª estimaciÃ³n de gastos = $sumagastos9";

say "\tEstimaciÃ³n 9.Âª de dÃ©ficit = ", $sumaingresos9-$sumagastos9, "";
say "\tParte del ingreso fiscal = ", ($sumaingresos9-$sumagastos9)/(1e6*$INGRESO_FISCAL_2026), "";
say "\tTotal parte pensiones = ", $sumagastos9/(1e6*$INGRESO_FISCAL_2026);



##########

exit 1;

sub rollpob {
    my $n = shift;
    my @roll;
    for my $i (0 .. scalar(@pob)-1){
	$roll[$i+$n] = $pob[$i];
    }
    for my $i (0 .. scalar(@roll)-1){
	if ($i > $SUPUESTO_FIN_TRABAJO){               # EDAD CHUNGA
	    $roll[$i] *= (1-0.09);              # TASA DE MORTALIDAD 9% (MENOS 2018 y 2020, MÃ�S QUE 2019) 
	}elsif ($i <= $n-1){
	    $roll[$i] = $pob[1];   # arbitrary truncation on last data known 
	}
    }
    return @roll;
}



__END__ 
  Esta estimaciÃ³n se puede hacer mÃ¡s precisa, lo cual estarÃ­a bien,
  pero descubre que un mÃ©todo efectivo para contener el desbalanceo 
  de ingresos y gastos es la contenciÃ³n del incremento de las pensiones 
  (la Ãºltima simulaciÃ³n) y otra manera es seguir el marco del pacto
  de Toledo, financiando parte de las pensiones con impuestos otros.

Esta estimaciÃ³n en concreto 'est5' es tan mala que la Ãºnica soluciÃ³n 
  satisfactoria es la congelaciÃ³n inversa de todo el resto de partidas
  presupuestarias para salvar las pensiones y que los incrementos 
  nominales del presupuesto se vayan trasladando a las pensiones.

A continuaciÃ³n incluyo un par de ficheros de datos que se usan:

-----------------------------------------------pob_edad.csv
# Sexo;Edad;Provincias;Periodo;Total
# Total;47.394.223
0 años;338786
1 año;363341
2 años;382059
3 años;408287
4 años;431472
5 años;443170
6 años;450016
7 años;445284
8 años;469239
9 años;486596
10 años;491380
11 años;501426
12 años;527716
13 años;510018
14 años;507740
15 años;498747
16 años;495260
17 años;488794
18 años;475565
19 años;479813
20 años;484847
21 años;479183
22 años;470774
23 años;479101
24 años;478719
25 años;481718
26 años;490899
27 años;509736
28 años;525781
29 años;523378
30 años;531524
31 años;539644
32 años;549056
33 años;555864
34 años;569230
35 años;588611
36 años;611266
37 años;631276
38 años;667423
39 años;697388
40 años;731529
41 años;753631
42 años;787828
43 años;798467
44 años;812938
45 años;806728
46 años;800884
47 años;781296
48 años;777575
49 años;765164
50 años;753516
51 años;745521
52 años;738061
53 años;741354
54 años;721854
55 años;715168
56 años;722272
57 años;686102
58 años;661337
59 años;644202
60 años;644806
61 años;624692
62 años;607662
63 años;590685
64 años;549081
65 años;530169
66 años;503637
67 años;500877
68 años;495402
69 años;460630
70 años;446989
71 años;459503
72 años;475082
73 años;429268
74 años;404434
75 años;416011
76 años;388845
77 años;374888
78 años;317167
79 años;284752
80 años;338743
81 años;217288
82 años;236104
83 años;252791
84 años;262547
85 años;237765
86 años;218866
87 años;204540
88 años;182691
89 años;153104
90 años;134152
91 años;107330
92 años;88281
93 años;66962
94 años;53675
95 años;40002
96 años;29854
97 años;21407
98 años;15093
99 años;9851
100 y más años;13043
# 85 y más años;1.576.614
--------------------------------------------------renta_edad.csv
# Sexo;Edad;Renta anual neta media por persona y por unidad de consumo;Periodo;Total
# Total;Renta  ;2020;12292
# Total;Renta  ;2019;11680
# Total;Renta  ;2018;11412
# Total;Renta  ;2017;11074
# Total;Renta  ;2016;10708
# Total;Renta  ;2015;10419
# Total;Renta  ;2014;10391
# Total;Renta  ;2013;10531
# Total;Renta  ;2012;10795
# Total;Renta  ;2011;10858
# Total;Renta  ;2010;11284
# Total;Renta  ;2009;11318
# Total;Renta  ;2008;10737
+Menores de 16 años;Renta  ;2020;9025
Menores de 16 años;Renta  ;2019;8899
Menores de 16 años;Renta  ;2018;8919
Menores de 16 años;Renta  ;2017;8354
Menores de 16 años;Renta  ;2016;8078
Menores de 16 años;Renta  ;2015;7841
Menores de 16 años;Renta  ;2014;7726
Menores de 16 años;Renta  ;2013;7741
Menores de 16 años;Renta  ;2012;8151
Menores de 16 años;Renta  ;2011;8259
Menores de 16 años;Renta  ;2010;8355
Menores de 16 años;Renta  ;2009;8444
Menores de 16 años;Renta  ;2008;8005
+De 16 a 29 años;Renta  ;2020;11031
De 16 a 29 años;Renta  ;2019;10345
De 16 a 29 años;Renta  ;2018;10156
De 16 a 29 años;Renta  ;2017;9815
De 16 a 29 años;Renta  ;2016;9373
De 16 a 29 años;Renta  ;2015;8935
De 16 a 29 años;Renta  ;2014;9004
De 16 a 29 años;Renta  ;2013;9438
De 16 a 29 años;Renta  ;2012;9727
De 16 a 29 años;Renta  ;2011;10032
De 16 a 29 años;Renta  ;2010;10651
De 16 a 29 años;Renta  ;2009;10797
De 16 a 29 años;Renta  ;2008;10321
+De 30 a 44 años;Renta  ;2020;12053
De 30 a 44 años;Renta  ;2019;11422
De 30 a 44 años;Renta  ;2018;11397
De 30 a 44 años;Renta  ;2017;11040
De 30 a 44 años;Renta  ;2016;10536
De 30 a 44 años;Renta  ;2015;10353
De 30 a 44 años;Renta  ;2014;10348
De 30 a 44 años;Renta  ;2013;10543
De 30 a 44 años;Renta  ;2012;10912
De 30 a 44 años;Renta  ;2011;11106
De 30 a 44 años;Renta  ;2010;11480
De 30 a 44 años;Renta  ;2009;11687
De 30 a 44 años;Renta  ;2008;11024
+De 45 a 64 años;Renta  ;2020;13626
De 45 a 64 años;Renta  ;2019;12988
De 45 a 64 años;Renta  ;2018;12550
De 45 a 64 años;Renta  ;2017;12311
De 45 a 64 años;Renta  ;2016;11931
De 45 a 64 años;Renta  ;2015;11591
De 45 a 64 años;Renta  ;2014;11626
De 45 a 64 años;Renta  ;2013;11921
De 45 a 64 años;Renta  ;2012;12270
De 45 a 64 años;Renta  ;2011;12374
De 45 a 64 años;Renta  ;2010;13047
De 45 a 64 años;Renta  ;2009;12906
De 45 a 64 años;Renta  ;2008;12413
+65 y más años;Renta  ;2020;14132
65 y más años;Renta  ;2019;13315
65 y más años;Renta  ;2018;12758
65 y más años;Renta  ;2017;12528
65 y más años;Renta  ;2016;12416
65 y más años;Renta  ;2015;12206
65 y más años;Renta  ;2014;12183
65 y más años;Renta  ;2013;11960
65 y más años;Renta  ;2012;11867
65 y más años;Renta  ;2011;11463
65 y más años;Renta  ;2010;11783
65 y más años;Renta  ;2009;11685
65 y más años;Renta  ;2008;10893
# Menos de 18 años;Renta  ;2020;9110
# Menos de 18 años;Renta  ;2019;8944
# Menos de 18 años;Renta  ;2018;8909
# Menos de 18 años;Renta  ;2017;8479
# Menos de 18 años;Renta  ;2016;8153
# Menos de 18 años;Renta  ;2015;7824
# Menos de 18 años;Renta  ;2014;7702
# Menos de 18 años;Renta  ;2013;7710
# Menos de 18 años;Renta  ;2012;8155
# Menos de 18 años;Renta  ;2011;8259
# Menos de 18 años;Renta  ;2010;8354
# Menos de 18 años;Renta  ;2009;8468
# Menos de 18 años;Renta  ;2008;8024
# De 18 a 64 años;Renta  ;2020;12624
# De 18 a 64 años;Renta  ;2019;11961
# De 18 a 64 años;Renta  ;2018;11727
# De 18 a 64 años;Renta  ;2017;11390
# De 18 a 64 años;Renta  ;2016;10948
# De 18 a 64 años;Renta  ;2015;10650
# De 18 a 64 años;Renta  ;2014;10660
# De 18 a 64 años;Renta  ;2013;10942
# De 18 a 64 años;Renta  ;2012;11252
# De 18 a 64 años;Renta  ;2011;11415
# De 18 a 64 años;Renta  ;2010;11964
# De 18 a 64 años;Renta  ;2009;12002
# De 18 a 64 años;Renta  ;2008;11428
  

