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

