2011|08|
2013|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|07|08|09|10|11|12|
2016|01|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|

2017-06-19 「デジタルアクティブ」比率計算シミュレータ [長年日記]

/*
  gcc -g birth_digital_active.cpp -o birth_digital_active
*/
 
/*
  デジタルネイティブ/デジタルアクティブ
 
  1992年生まれから人口の100%がディジタルネイティブになったと仮定する。
  Q:日本のデジタルネイティブの比率は、どう変化していくだろうか
  
 
*/
 
#include "stdio.h"
 
int main(int argc, char* argv[])
{
    double men[101],women[101]; // 年齢別人口 平成22年データ 単位は1000人
    double men_death_rate[101],women_death_rate[101]; // 死亡率 平成22年データ (資料  厚生労働省大臣官房統計情報部人口動態・保健統計課「人口動態統計」)                          
    // ファイルデバイスとデータ形式の統一回避する為、データべた書き
 
    men[ 0]=549   ; men_death_rate[ 0]=2.5/1000.0   ; // 男性0歳人口549千人、死亡率0.25% 2012年生まれ
    men[ 1]=535   ; men_death_rate[ 1]=0.4/1000.0   ; //2011年生まれ
    men[ 2]=535   ; men_death_rate[ 2]=0.2/1000.0   ; //2010年生まれ    
    men[ 3]=550   ; men_death_rate[ 3]=0.2/1000.0   ;   
    men[ 4]=548   ; men_death_rate[ 4]=0.2/1000.0   ;
 
    men[ 5]=544   ; men_death_rate[ 5]=0.1/1000.0   ;
    men[ 6]=542   ; men_death_rate[ 6]=0.1/1000.0   ;
    men[ 7]=562   ; men_death_rate[ 7]=0.1/1000.0   ;
    men[ 8]=574   ; men_death_rate[ 8]=0.1/1000.0   ;
    men[ 9]=589   ; men_death_rate[ 9]=0.1/1000.0   ; //2003年生まれ    
 
    men[10]=597   ; men_death_rate[10]=0.1/1000.0   ; //2002年生まれ    
    men[11]=604   ; men_death_rate[11]=0.1/1000.0   ;
    men[12]=604   ; men_death_rate[12]=0.1/1000.0   ;
    men[13]=613   ; men_death_rate[13]=0.1/1000.0   ;
    men[14]=610   ; men_death_rate[14]=0.1/1000.0   ;
 
    men[15]=607   ; men_death_rate[15]=0.3/1000.0   ;
    men[16]=627   ; men_death_rate[16]=0.3/1000.0   ;
    men[17]=632   ; men_death_rate[17]=0.3/1000.0   ;
    men[18]=621   ; men_death_rate[18]=0.3/1000.0   ; //1990年生まれ (ここまでが、ディタルネイティブ)    
    men[19]=631   ; men_death_rate[19]=0.3/1000.0   ;
 
    men[20]=623   ; men_death_rate[20]=0.6/1000.0   ; //1992年生まれ    
    men[21]=632   ; men_death_rate[21]=0.6/1000.0   ;
    men[22]=648   ; men_death_rate[22]=0.6/1000.0   ;
    men[23]=668   ; men_death_rate[23]=0.6/1000.0   ;
    men[24]=683   ; men_death_rate[24]=0.6/1000.0   ;
 
    men[25]=697   ; men_death_rate[25]=0.7/1000.0   ;
    men[26]=723   ; men_death_rate[26]=0.7/1000.0   ;
    men[27]=745   ; men_death_rate[27]=0.7/1000.0   ;
    men[28]=754   ; men_death_rate[28]=0.7/1000.0   ;
    men[29]=754   ; men_death_rate[29]=0.7/1000.0   ;
 
    men[30]=764   ; men_death_rate[30]=0.8/1000.0   ;
    men[31]=797   ; men_death_rate[31]=0.8/1000.0   ;
    men[32]=818   ; men_death_rate[32]=0.8/1000.0   ;
    men[33]=852   ; men_death_rate[33]=0.8/1000.0   ;
    men[34]=873   ; men_death_rate[34]=0.8/1000.0   ;
 
    men[35]=917   ; men_death_rate[35]=1.0/1000.0   ;
    men[36]=960   ; men_death_rate[36]=1.0/1000.0   ;
    men[37]=1012  ; men_death_rate[37]=1.0/1000.0   ;
    men[38]=1028  ; men_death_rate[38]=1.0/1000.0   ;
    men[39]=1010  ; men_death_rate[39]=1.0/1000.0   ;
 
    men[40]=982   ; men_death_rate[40]=1.5/1000.0   ;
    men[41]=954   ; men_death_rate[41]=1.5/1000.0   ;
    men[42]=937   ; men_death_rate[42]=1.5/1000.0   ;
    men[43]=916   ; men_death_rate[43]=1.5/1000.0   ;
    men[44]=915   ; men_death_rate[44]=1.5/1000.0   ;
 
    men[45]=713   ; men_death_rate[45]=2.4/1000.0   ;
    men[46]=882   ; men_death_rate[46]=2.4/1000.0   ;
    men[47]=826   ; men_death_rate[47]=2.4/1000.0   ;
    men[48]=805   ; men_death_rate[48]=2.4/1000.0   ;
    men[49]=778   ; men_death_rate[49]=2.4/1000.0   ;
 
    men[50]=765   ; men_death_rate[50]=3.8/1000.0   ;
    men[51]=770   ; men_death_rate[51]=3.8/1000.0   ;
    men[52]=783   ; men_death_rate[52]=3.8/1000.0   ;
    men[53]=761   ; men_death_rate[53]=3.8/1000.0   ;
    men[54]=740   ; men_death_rate[54]=3.8/1000.0   ;
 
    men[55]=776   ; men_death_rate[55]=6.3/1000.0   ;
    men[56]=803   ; men_death_rate[56]=6.3/1000.0   ;
    men[57]=803   ; men_death_rate[57]=6.3/1000.0   ;
    men[58]=850   ; men_death_rate[58]=6.3/1000.0   ;
    men[59]=896   ; men_death_rate[59]=6.3/1000.0   ;
 
    men[60]=949   ; men_death_rate[60]=9.3/1000.0   ;
    men[61]=1018  ; men_death_rate[61]=9.3/1000.0   ;
    men[62]=1111  ; men_death_rate[62]=9.3/1000.0   ;
    men[63]=1099  ; men_death_rate[63]=9.3/1000.0   ;
    men[64]=1042  ; men_death_rate[64]=9.3/1000.0   ;
 
    men[65]=645   ; men_death_rate[65]=14.6/1000.0   ;
    men[66]=684   ; men_death_rate[66]=14.6/1000.0   ;
    men[67]=825   ; men_death_rate[67]=14.6/1000.0   ;
    men[68]=794   ; men_death_rate[68]=14.6/1000.0   ;
    men[69]=809   ; men_death_rate[69]=14.6/1000.0   ;
 
    men[70]=780   ; men_death_rate[70]=22.7/1000.0   ;
    men[71]=698   ; men_death_rate[71]=22.7/1000.0   ;
    men[72]=599   ; men_death_rate[72]=22.7/1000.0   ;
    men[73]=627   ; men_death_rate[73]=22.7/1000.0   ;
    men[74]=631   ; men_death_rate[74]=22.7/1000.0   ;
 
    men[75]=616   ; men_death_rate[75]=39.6/1000.0   ;
    men[76]=571   ; men_death_rate[76]=39.6/1000.0   ;
    men[77]=521   ; men_death_rate[77]=39.6/1000.0   ;
    men[78]=501   ; men_death_rate[78]=39.6/1000.0   ;
    men[79]=470   ; men_death_rate[79]=39.6/1000.0   ;
 
    men[80]=430   ; men_death_rate[80]=70.5/1000.0   ;
    men[81]=385   ; men_death_rate[81]=70.5/1000.0   ;
    men[82]=350   ; men_death_rate[82]=70.5/1000.0   ;
    men[83]=316   ; men_death_rate[83]=70.5/1000.0   ;
    men[84]=281   ; men_death_rate[84]=70.5/1000.0   ;
 
    men[85]=247   ; men_death_rate[85]=120.3/1000.0   ;
    men[86]=202   ; men_death_rate[86]=120.3/1000.0   ;
    men[87]=158   ; men_death_rate[87]=120.3/1000.0   ;
    men[88]=122   ; men_death_rate[88]=120.3/1000.0   ;
    men[89]=98    ; men_death_rate[89]=120.3/1000.0   ;
 
    men[90]=78    ; men_death_rate[90]=202.5/1000.0   ;
    men[91]=67    ; men_death_rate[91]=202.5/1000.0   ;
    men[92]=44    ; men_death_rate[92]=202.5/1000.0   ;
    men[93]=36    ; men_death_rate[93]=202.5/1000.0   ;
    men[94]=28    ; men_death_rate[94]=202.5/1000.0   ;
 
    men[95]=21    ; men_death_rate[95]=318.8/1000.0   ;
    men[96]=15    ; men_death_rate[96]=318.8/1000.0   ;
    men[97]=11    ; men_death_rate[97]=318.8/1000.0   ;
    men[98]=7     ; men_death_rate[98]=318.8/1000.0   ;
    men[99]=5     ; men_death_rate[99]=318.8/1000.0   ;
 
    women[ 0]=520; women_death_rate[ 0]=2.1/1000.0   ;// 女性0歳人口520千人、死亡率0.21%
    women[ 1]=510; women_death_rate[ 1]=0.4/1000.0   ;
    women[ 2]=511; women_death_rate[ 2]=0.2/1000.0   ;
    women[ 3]=525; women_death_rate[ 3]=0.1/1000.0   ;
    women[ 4]=522; women_death_rate[ 4]=0.1/1000.0   ;
 
    women[ 5]=518; women_death_rate[ 5]=0.1/1000.0   ;
    women[ 6]=517; women_death_rate[ 6]=0.1/1000.0   ;
    women[ 7]=538; women_death_rate[ 7]=0.1/1000.0   ;
    women[ 8]=545; women_death_rate[ 8]=0.1/1000.0   ;
    women[ 9]=561; women_death_rate[ 9]=0.1/1000.0   ;
 
    women[10]=568; women_death_rate[10]=0.1/1000.0   ;
    women[11]=573; women_death_rate[11]=0.1/1000.0   ;
    women[12]=576; women_death_rate[12]=0.1/1000.0   ;
    women[13]=585; women_death_rate[13]=0.1/1000.0   ;
    women[14]=583; women_death_rate[14]=0.1/1000.0   ;
 
    women[15]=578; women_death_rate[15]=0.2/1000.0   ;
    women[16]=595; women_death_rate[16]=0.2/1000.0   ;
    women[17]=597; women_death_rate[17]=0.2/1000.0   ;
    women[18]=589; women_death_rate[18]=0.2/1000.0   ;//1990年生まれ (ここまでが、ディタルネイティブ)    
    women[19]=599; women_death_rate[19]=0.2/1000.0   ;
 
    women[20]=596; women_death_rate[20]=0.3/1000.0   ;
    women[21]=605; women_death_rate[21]=0.3/1000.0   ;
    women[22]=622; women_death_rate[22]=0.3/1000.0   ;
    women[23]=638; women_death_rate[23]=0.3/1000.0   ;
    women[24]=655; women_death_rate[24]=0.3/1000.0   ;
 
    women[25]=667; women_death_rate[25]=0.3/1000.0   ;
    women[26]=697; women_death_rate[26]=0.3/1000.0   ;
    women[27]=719; women_death_rate[27]=0.3/1000.0   ;
    women[28]=729; women_death_rate[28]=0.3/1000.0   ;
    women[29]=734; women_death_rate[29]=0.3/1000.0   ;
 
    women[30]=742; women_death_rate[30]=0.4/1000.0   ;
    women[31]=774; women_death_rate[31]=0.4/1000.0   ;
    women[32]=794; women_death_rate[32]=0.4/1000.0   ;
    women[33]=828; women_death_rate[33]=0.4/1000.0   ;
    women[34]=849; women_death_rate[34]=0.4/1000.0   ;
 
    women[35]=890; women_death_rate[35]=0.6/1000.0   ;
    women[36]=931; women_death_rate[36]=0.6/1000.0   ;
    women[37]=982; women_death_rate[37]=0.6/1000.0   ;
    women[38]=1001; women_death_rate[38]=0.6/1000.0   ;
    women[39]=981; women_death_rate[39]=0.6/1000.0   ;
 
    women[40]=958; women_death_rate[40]=0.8/1000.0   ;
    women[41]=931; women_death_rate[41]=0.8/1000.0   ;
    women[42]=920; women_death_rate[42]=0.8/1000.0   ;
    women[43]=902; women_death_rate[43]=0.8/1000.0   ;
    women[44]=898; women_death_rate[44]=0.8/1000.0   ;
 
    women[45]=705; women_death_rate[45]=1.3/1000.0   ;
    women[46]=872; women_death_rate[46]=1.3/1000.0   ;
    women[47]=815; women_death_rate[47]=1.3/1000.0   ;
    women[48]=798; women_death_rate[48]=1.3/1000.0   ;
    women[49]=772; women_death_rate[49]=1.3/1000.0   ;
 
    women[50]=760; women_death_rate[50]=1.9/1000.0   ;
    women[51]=768; women_death_rate[51]=1.9/1000.0   ;
    women[52]=783; women_death_rate[52]=1.9/1000.0   ;
    women[53]=765; women_death_rate[53]=1.9/1000.0   ;
    women[54]=744; women_death_rate[54]=1.9/1000.0   ;
 
    women[55]=783; women_death_rate[55]=2.8/1000.0   ;
    women[56]=810; women_death_rate[56]=2.8/1000.0   ;
    women[57]=813; women_death_rate[57]=2.8/1000.0   ;
    women[58]=868; women_death_rate[58]=2.8/1000.0   ;
    women[59]=918; women_death_rate[59]=2.8/1000.0   ;
 
    women[60]=975; women_death_rate[60]=3.9/1000.0   ;
    women[61]=1051; women_death_rate[61]=3.9/1000.0   ;
    women[62]=1152; women_death_rate[62]=3.9/1000.0   ;
    women[63]=1146; women_death_rate[63]=3.9/1000.0   ;
    women[64]=1090; women_death_rate[64]=3.9/1000.0   ;
 
    women[65]=685; women_death_rate[65]=6.0/1000.0   ;
    women[66]=741; women_death_rate[66]=6.0/1000.0   ;
    women[67]=903; women_death_rate[67]=6.0/1000.0   ;
    women[68]=875; women_death_rate[68]=6.0/1000.0   ;
    women[69]=899; women_death_rate[69]=6.0/1000.0   ;
 
    women[70]=873; women_death_rate[70]=9.8/1000.0   ;
    women[71]=793; women_death_rate[71]=9.8/1000.0   ;
    women[72]=690; women_death_rate[72]=9.8/1000.0   ;
    women[73]=738; women_death_rate[73]=9.8/1000.0   ;
    women[74]=755; women_death_rate[74]=9.8/1000.0   ;
 
    women[75]=753; women_death_rate[75]=17.9/1000.0   ;
    women[76]=718; women_death_rate[76]=17.9/1000.0   ;
    women[77]=675; women_death_rate[77]=17.9/1000.0   ;
    women[78]=671; women_death_rate[78]=17.9/1000.0   ;
    women[79]=646; women_death_rate[79]=17.9/1000.0   ;
 
    women[80]=614; women_death_rate[80]=34.3/1000.0   ;
    women[81]=573; women_death_rate[81]=34.3/1000.0   ;
    women[82]=547; women_death_rate[82]=34.3/1000.0   ;
    women[83]=515; women_death_rate[83]=34.3/1000.0   ;
    women[84]=482; women_death_rate[84]=34.3/1000.0   ;
 
    women[85]=454; women_death_rate[85]=69.1/1000.0   ;
    women[86]=405; women_death_rate[86]=69.1/1000.0   ;
    women[87]=349; women_death_rate[87]=69.1/1000.0   ;
    women[88]=313; women_death_rate[88]=69.1/1000.0   ;
    women[89]=276; women_death_rate[89]=69.1/1000.0   ;
 
    women[90]=236; women_death_rate[90]=131.2/1000.0   ;
    women[91]=213; women_death_rate[91]=131.2/1000.0   ;
    women[92]=146; women_death_rate[92]=131.2/1000.0   ;
    women[93]=128; women_death_rate[93]=131.2/1000.0   ;
    women[94]=106; women_death_rate[94]=131.2/1000.0   ;
 
    women[95]=87 ; women_death_rate[95]=238.1/1000.0   ;
    women[96]=63 ; women_death_rate[96]=238.1/1000.0   ;
    women[97]=49 ; women_death_rate[97]=238.1/1000.0   ;
    women[98]=35 ; women_death_rate[98]=238.1/1000.0   ;
    women[99]=25 ; women_death_rate[99]=238.1/1000.0   ;
 
    for (int year = 2012; year < 2100; year++){ // 2012年から2100年までループ計算
      
      double dummy = 0;
      for(int i = 15; i < 50; i++){  // 特殊出産率の対象 15歳から49歳までの人口加算
        dummy += women[i];
      } 
      
      // 1.4は、特殊出生率 / 35は特殊出生率の対象期間(35年) / 1.05は男性の出生比率
      double mem_new_birth = dummy * 1.4 / 35.0 * 1.05/(1.05+1.00);
      double womem_new_birth = dummy * 1.4 / 35.0 * 1.00/(1.05+1.00);   
      
      // 1年単位の人口移動 (死亡率も考慮) 
      for (int k = 99; k >= 0; k--){
        men[k+1] = men[k] * (1.0 - men_death_rate[k]);
        women[k+1] = women[k] * (1.0 - women_death_rate[k]);
        //printf("%d   %f    %f \n", k, men[k], women[k]);                  
        
      }
 
      // 新生児の人口を追加
      men[0] = mem_new_birth;
      women[0] = womem_new_birth;
      
      // 人口総計(年齢99歳まで。100歳以上の人口は無視することにした)
      double sum_men = 0;
      double sum_women = 0;
      
        for (int m = 0; m <= 100; m++){
          sum_men += men[m];
          sum_women += women[m];
        }
        
#if 0       
        // ディタルネイティブ人口総計
        double digital_sum_men = 0;
        double digital_sum_women = 0;
        
        int l = year -1990;
        if (l >= 100) l = 100;
 
        for (int n = 0; n <= l ; n++){
          digital_sum_men += men[n];
          digital_sum_women += women[n];
        }
#endif 
 
#if 0  // ここから江端仮説
 
        // デジタルアクティブ人口総計
        double digital_sum_men = 0;
        double digital_sum_women = 0;
 
        // 1970年以後の人は100%デジタルは使えるいう仮説の導入
        
        int l = year -1970;    
        if (l >= 100) l = 100;
 
        for (int n = 0; n <= l ; n++){
          digital_sum_men += men[n];
          digital_sum_women += women[n];
        }
 
        // 1950-70年にかけてデジタルを使える人は線形に増加した、という仮説の導入
        
        // デジタルアクティブ人口(江端"補正"仮説)
        int p1 = year -1970;  // 例:2020年の時に50歳
        int p2 = year -1950;  // 例:2020年の時に70歳
 
        for (int i = p1; i < p2 ; i++){  
          if (i < 100){
            // 例:2020年の時に70歳の人の0%、 60歳の人の50%、50歳の人の100%がデジタルを扱えるとする
            digital_sum_men += men[i] * 1.0 / (double)(p2 - p1) * (double)(p2 - i);
            digital_sum_women += women[i] * 1.0 / (double)(p2 - p1) * (double)(p2 - i);
          }
        }
 
#endif 
 
 
#if 1
        // 高齢者世代(65歳以上)に特化して計算してみる
 
        // 人口総計(年齢65歳から99歳まで。100歳以上の人口は無視することにした)
        sum_men = 0;
        sum_women = 0;
        
        for (int m = 65; m <= 100; m++){
          sum_men += men[m];
          sum_women += women[m];
        }
        
        // デジタルアクティブ人口総計
        double digital_sum_men = 0;
        double digital_sum_women = 0;
 
        // 1970年以後の人は100%デジタルは使えるいう仮説の導入
        
        int l = year -1970;    
        if (l >= 100) l = 100;
 
        for (int n = 65; n <= l ; n++){
          digital_sum_men += men[n];
          digital_sum_women += women[n];
        }
 
        // 1950-70年にかけてデジタルを使える人は線形に増加した、という仮説の導入
        
        // デジタルネイティブ人口(江端"補正"仮説)
        int p1 = year -1970;  // 例:2020年の時に50歳   2017年の時に47歳
        int p2 = year -1950;  // 例:2020年の時に70歳
 
        for (int i = p1; i < p2 ; i++){  
          if ((i >= 65) &&(i < 100)){
            // 例:2020年の時に70歳の人の0%、 60歳の人の50%、50歳の人の100%がデジタルを扱えるとする
            digital_sum_men += men[i] * 1.0 / (double)(p2 - p1) * (double)(p2 - i);
            digital_sum_women += women[i] * 1.0 / (double)(p2 - p1) * (double)(p2 - i);
          }
        }
#endif
 
        
        printf("%d,%f,%f,%f\n", year,  sum_men + sum_women, digital_sum_men + digital_sum_women, (digital_sum_men + digital_sum_women)/(sum_men + sum_women) ); 
    }
}