盆暗の学習記録

データサイエンス ,エンジニアリング,ビジネスについて日々学んだことの備忘録としていく予定です。初心者であり独学なので内容には誤りが含まれる可能性が大いにあります。

[R]{stargazer}でロバスト標準誤差を使用した分析結果を載せる

問題

Rでロバスト標準誤差を使うときはsandwich::vcovHC()ロバスト標準誤差の分散共分散行列を算出し,lmtest::coeftest()を使ってRの標準的な結果表示のスタイルに似せた結果表示をする,というのが基本的・標準的なロバスト標準誤差の呼び出し方かと思っているのですが,

lm1 <- lm(Volume ~ Girth, data = trees)
coef1 <- lmtest::coeftest(lm1, .vcov = sandwich::vcovHC(lm1, type = "HC1"))
> coef1

t test of coefficients:

             Estimate Std. Error t value  Pr(>|t|)    
(Intercept) -36.94346    3.36514 -10.978 7.621e-12 ***
Girth         5.06586    0.24738  20.478 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

この場合,stargazer()で綺麗に結果表示できません

> library(stargazer)
> stargazer(coef1, type = "text")

====================================
             Dependent variable:    
         ---------------------------
                                    
------------------------------------
Girth             5.066***          
                   (0.247)          
                                    
Constant         -36.943***         
                   (3.365)          
                                    
====================================
====================================
Note:    *p<0.1; **p<0.05; ***p<0.01

解決策

vcovHC()で分散共分散行列を作って,そこからロバスト標準誤差のベクトルを取得するところまでを行い,それをstargazer()seの引数に指定すればよいみたいです(stargazer()のモデルを指定する部分には通常のlm()の結果を入れる)

vcov <- sandwich::vcovHC(lm1, type = "HC1")
robust_se1 <- sqrt(diag(vcov))
stargazer(lm1, se = robust_se1, type = "text")
> stargazer(lm1, se = robust_se1, type = "text")

===============================================
                        Dependent variable:    
                    ---------------------------
                              Volume           
-----------------------------------------------
Girth                          5.066           
                                               
                                               
Constant                    -36.943***         
                              (3.951)          
                                               
-----------------------------------------------
Observations                    31             
R2                             0.935           
Adjusted R2                    0.933           
Residual Std. Error       4.252 (df = 29)      
F Statistic           419.360*** (df = 1; 29)  
===============================================
Note:               *p<0.1; **p<0.05; ***p<0.01

例(2つの回帰モデルの場合)

モデルが2つ以上のときは,lmの結果とロバスト標準誤差それぞれをリストに入れてstargazer()に入れる

library(stargazer)
# estimate
lm1 <- lm(Volume ~ Girth, data = trees)
lm2 <- lm(Volume ~ Height, data = trees)

# robust SE
vcov <- sandwich::vcovHC(lm1, type = "HC1")
robust_se1 <- sqrt(diag(vcov))
vcov <- sandwich::vcovHC(lm2, type = "HC1")
robust_se2 <- sqrt(diag(vcov))

# print
stargazer(list(lm1, lm2), se=list(robust_se1, robust_se2), type = "text")
> stargazer(list(lm1, lm2), se=list(robust_se1, robust_se2), type = "text")

==========================================================
                                  Dependent variable:     
                              ----------------------------
                                         Volume           
                                   (1)            (2)     
----------------------------------------------------------
Girth                            5.066***                 
                                 (0.317)                  
                                                          
Height                                         1.543***   
                                                (0.427)   
                                                          
Constant                        -36.943***    -87.124***  
                                 (3.951)       (31.008)   
                                                          
----------------------------------------------------------
Observations                        31            31      
R2                                0.935          0.358    
Adjusted R2                       0.933          0.336    
Residual Std. Error (df = 29)     4.252         13.397    
F Statistic (df = 1; 29)        419.360***     16.164***  
==========================================================
Note:                          *p<0.1; **p<0.05; ***p<0.01

参考

なお,stargazerのような表記じゃなくデータフレームの形でロバスト標準誤差を含む分析結果がほしい場合は{broom}パッケージが便利です。

サイトの「タイトル」と「URL」を取得するChrome拡張機能

あるサイトを閲覧していて,「お,このサイトは有益だな,メモしておこう」と思った時,
そのサイトのタイトルとURLを簡単に取得したいと思ったことはありませんか?

私がGoogle Chromeに移行したのは最近でして,それまでは長い間Sleipnirという日本の企業が作ったブラウザを使っていたのですが,Sleipnirだとタブを右クリックすると「タイトルとURLのコピー」という機能があって,これが非常に便利でした。

Google Chromeだとこの機能がないので,非常に不便に思っていました

Chrome拡張機能のほうでも軽く探したんですが全然みつからず,「ないなら作ればいい!Chrome拡張機能の作り方を勉強しよう!」と考えるようになりました。

そして拡張機能の作り方を学ぶためにQiitaを眺めていたとき,良さそうな記事を見つけました

qiita.com

とりあえずリンクを Markdown 形式とかで表示する Extension を作った.

ん…?

えっ・・・!

求めていたのがまさにこれですよ!!!!!!!!1

タイトルとURLを取得するChrome拡張機能

https://chrome.google.com/webstore/detail/link-maker/ifflbbedjddjmfkcpjflbjbngojooojcchrome.google.com

ということでこの拡張機能をインストールして解決しました。

私が当初作ろうと考えていた拡張機能Sleipnirの「タイトルとURLのコピー」を完全再現するもので,これはLink Makerでいうと「Text Link」の形式ですが,現在私はMarkdownでいろんなメモを取ることが多いので結局「Markdown Link」を一番使っています。

この3つの形式を出す形にしたのはさすがです…素晴らしい設計です…

私が他に入れている主な拡張機能Google Scholar ボタンiKnow! ポップアップ辞書ですが,そのなかで一番Link Makerの使用頻度が多いです。

Google Chromeを使うすべての人におすすめしたいくらい気に入っている拡張機能です。

統計調査士の概要と対策方法

以前,統計検定2級に関する記事を書きました。

統計検定2級レベルまでの教材と勉強方法 - 盆暗の学習記録

この統計検定と同じ協会が運営している資格試験で,もっとマニアックな統計調査士という資格があるのでそちらのご紹介をしたいと思います。

統計調査士とは

統計調査士検定は、公的統計に関する基本的な知識を正確に認識し、公的統計を適切に利用する能力を評価する検定試験です。
(公式サイトhttp://www.toukei-kentei.jp/about/tyousa/より)

つまり,公的統計の知識を持っていることを保証する資格です。

「統計調査の専門家であることを示す資格じゃないの?」と思われるかもしれませんが,違います。

「統計調査の専門家であることを示す資格」としては専門統計調査士が存在します。

ただし,専門統計調査士を取得するには統計調査士も取得しなければなりませんので,専門統計調査士を取得して「統計調査の専門家」になる前段階として統計調査士が存在する感じです。

社会調査士との関係

なお,「統計調査の専門家であることを示す資格」には社会調査士というのもあり,こちらのほうが比較的有名かもしれません。

社会調査士を取得するには「大学で指定の科目を履修」して「約2万円の登録料を納めて申請する」ことが必要なので,取得するのが結構大変です。

それに比べると専門統計調査士のほうが若干取得しやすいのかもしれません
(統計調査士で受験料5000円,専門統計調査士で受験料10000円かかるので一発合格しないとキツいですが…)

統計調査士を取得するメリット

統計調査士を取得するメリットについて整理すると,以下のような感じでしょうか

  1. 公的統計に詳しくなれる
    • 「公的統計の活用は任せろー!(カチカチ」みたいなポジションで活躍できる
    • 公的統計を多く使う立場の人だと普通に役立つと思います
  2. 名称から「統計調査の専門家」のように勘違いしてもらえる
    • 就活のとき役立つかもしれません
  3. 専門統計調査士を取得する準備ができる
    • 名実ともに「統計調査の専門家」になるのに大きく近づくことができます

ちなみに,統計調査士に合格すると「認定証」がもらえます。 手帳よりちょっと小さいくらいのサイズのもので,統計検定の合格証とはちょっと違うのが面白いです。

f:id:nigimitama:20190120002409p:plain

(画像の出所:公式HP)

統計調査士試験の対策方法

まず出題範囲を確認してみましょう。

出題範囲

  1. 統計の基本
    • 統計の役割
    • 統計法規
  2. 公的統計調査の実務
    • 統計調査の基本的知識
    • 統計調査員の役割・義務
  3. 公的統計の見方と利用
    • 主要な公的統計とその見方・利用

2016~2017年の問題では,「統計調査の実際」(つまり「どのようにして調査していくか」といった部分)はあまり難しい内容が出題されることはなく,「統計法規」や「公的統計の見方と利用」に関する出題が多くて難しかった記憶があります。

「統計法規」というのは統計法という法律の暗記ゲーです。

「公的統計の見方と利用」は公的統計の概要,調査時期,調査主体,調査方法などの暗記ゲーです。

→ 統計検定とは異なり,数式がほとんど出てこない暗記ゲーになります。

「数式は苦手だけど統計系の資格をとってみたい」という人には統計検定2級を取る前の準備運動的に受験するのもいいかもしれません

対策方法

統計検定とは異なり,統計調査士には公式のテキストがありません

立教大学の社会情報教育研究センターが『統計調査士 対策コンテンツ』というテキストを作成してセミナーを行っているため,

この『対策コンテンツ』を買って過去問を解けば受かります。

統計検定・統計調査士 - 統計調査士対策

統計検定 統計調査士試験 対策コンテンツ 第4版

統計検定 統計調査士試験 対策コンテンツ 第4版

以前は合格率が3割ちょっとで統計検定2級よりも難しかったんですが,近年はかなり易化しており,また過去問も蓄積されてきたので過去問だけで受かるかもしれません。

日本統計学会公式認定 統計検定 統計調査士・専門統計調査士 公式問題集[2015〜2017年]

日本統計学会公式認定 統計検定 統計調査士・専門統計調査士 公式問題集[2015〜2017年]

まとめ

  • 統計調査士は公的統計に詳しいことを認定する資格
  • 専門統計調査士を取得して「統計調査の専門家」になりたい場合も統計調査士を取る必要がある
  • 統計調査士は『統計調査士 対策コンテンツ』を買って適度に勉強すればあっさり受かる

[R]データ型の一括変換

csvファイルはreadr::read_csv()を使えば適切な型を考えて読み込んでくれますが,Stataの.dtaをhaven::read_dta()で読み込んだ場合などは,データ型が適切なものになっていない場合があります。

library(tidyverse)
library(haven)

# データの読み込み
df <- read_dta("./AEJApp2008-0202_data/data_for_analysis.dta")
df <- df %>% select(GPA_year1, age_at_entry, firstyear, english, french, other_lang)
df %>% head()
ABCDEFGHIJ0123456789
GPA_year1
<dbl>
age_at_entry
<dbl>
firstyear
<dbl>
english
<dbl>
french
<dbl>
other_lang
<dbl>
3.82192002100
3.64192001100
1.95182000100
3.44192003100
2.18181996100
3.49192003100

上の例の場合,整数型(integer)にすべきデータも倍精度浮動小数点型(double)になっています。
(データはLindo, Sanders and Oreopoulos (2010)のものを使用)

そういった,データ型がおかしいデータフレームが手元にあるときに,データフレーム内のすべての列に対して,各列にふさわしいデータ型へと変換するには,

以下のコードのように,dplyr::mutate_all()関数(DFのすべての列に関数を適用して列を追加あるいは上書きする関数)の中にreadr::parse_guess()関数(与えられたベクトルを適切なデータ型に変換する関数)を入れた以下のようなコードを使うのが良さそうです。

df2 <- df %>% mutate_all(parse_guess) 
df2 %>% head()
ABCDEFGHIJ0123456789
GPA_year1
<dbl>
age_at_entry
<int>
firstyear
<int>
english
<int>
french
<int>
other_lang
<int>
3.82192002100
3.64192001100
1.95182000100
3.44192003100
2.18181996100
3.49192003100

(なお,CP932(SHIFT-JIS)の日本語文字列がある場合はmutate_all(parse_guess, locale = locale(encoding = "cp932"))とlocaleを指定します。)

[R]R MarkdownをPDFにして論文を書くときのテンプレート

昨年は卒論の執筆を先延ばしにしてきた1年で,2019年になってから急いで書き上げて1月7日に提出期限ギリギリに提出することになりました…

そんなときに本当に助かったのがRmarkdownからpdfでknitする機能です。
Rで出力した図表をwordに手動で貼り付けたりしてたら面倒ですからね。

研究の試行錯誤の期間はRmarkdownからHTMLで試行錯誤の過程のメモを残すようにしておいて,論文にするときはそれらのメモのRmarkdownを統合してpdfに出力する感じでした。とっても楽でした。

今回はRmarkdownからpdfに出力するときの自分用テンプレート,あるいは「基本操作まとめ」みたいなものを作ったのでここに載せておきます。

pdf出力用テンプレート

①コードを実行して出てくるpdf,②コード,の順に載せます(コードが長いので)

コードを実行して出てくるPDF

PDFがこちら

画像で一部抜粋するとこんな感じです

コード

コード内にコメントを沢山のせているのでコードを見ればPDF出力するときの基本的な書き方(図表番号の参照とか脚注とか)がわかるかとおもいます。

参考文献

knitr::kable()の拡張は{kableExtra}などを使う。以下の記事なども参考になる

{DiagrammeR}のグラフはHTML出力でしか使えないが,graphvizかなんかをインストールしてターミナルからdot言語をグラフに変換する方法がある模様。

就活のときの振り返り・おすすめ就活サービス

就活を終えてからだいぶ経つんですが,私が就活したときのこと(どんなサービスを利用したとか)をメモっておきます。

誰かの参考になれば幸いです。

私について

何をしてきたのか,何を目指すかによって就活のルートは変わると思うので一応私のことを書いておきます。

  • MARCHの文系,経済学部生
  • 統計学に興味を持っていて,仕事でもデータ分析をしたいと思っている
  • サークルは入っているものの,サークルのWebサイトだけ作って幽霊部員していた
  • ゼミは年に1本論文やプレゼンを出せば良くて輪読とかも滅多にやらないゆるゆるゼミ
    • 論文コンテストでの入賞経験あり。アピールできる業績はこれ系のみ

2~4年生でやってきたこと

就活でやってきたことを時系列的に述べます

2年生

1Dayインターンに参加して「どんな企業があるのか」を調べる程度のことをしていました

春~夏:なにもせず

  • このころは就活のことは全然考えていませんでした

秋:インターンに参加

  • ちょっと就活について考えるようになりました

利用したサービス:

3年生

3年生のときが一番就活してました。

春:自己分析・業界研究

利用したサービス:

  • 大学のキャリア科目
    • 大学側がキャリア形成について考えるゼミのようなものを用意していて,受講可能人数は非常に少ないんですが 学生の意識が低いため 受講志望者が少なく,受講しやすい感じだったので受講しました
    • 当初は自分のモチベを上げるためだけの目的で受講しましたが,自分が知らなかった就活に関する情報に触れる機会にもなったので良かったです。
  • 大学キャリアセンターの自己分析・業界研究セミナー
  • 大学キャリアセンター主催の学内企業説明会
    • 統計学を使うような職種に就きたい」と思いながらいろんな企業を見るも収穫はなかった

夏:インターンなどで業界研究

利用したサービス:

  • 企業主催の合同企業説明会
    • 統計学を使うような職種に就きたい」と思いながらいろんな企業を見るも収穫はなかった
  • 企業主催の就活セミナー

    • 業界研究セミナーや自己分析的なセミナー(キャリアセミナー)に参加
      • IT業界が複雑過ぎてよくわからないのでIT業界セミナーにはよく参加していた
      • IT業界セミナーは各企業のポジショントーク(ないしバイアス)がすごいので複数のセミナーやネットの情報を自分で整理するべき
        • 例えばSIerでも元請(e.g.NTTデータ)や1次下請け(e.g.NTTデータ子会社)やn次下請け(e.g.SIer中小企業)では仕事が異なる。例えば上流工程(元請けや1次下請け等)ではコードを書かない。
    • Goodfindセミナーにいくつか参加
    • DataShipのハッチングフェスにも参加。ブリヂストンのデータサイエンティストから分析事例を聞いたりした
  • 逆求人サイト

    • 企業側も夏~秋頃からオファーを始めていたと思います
    • 逆求人は企業を知る機会になったり,特別選考ルートに案内してもらえるので使ってよかったと思います。
  • 短期インターン

    • 各企業がそれぞれ行っているインターンに参加しました

秋:早期選考開始

  • 逆求人サイトで知った企業や,夏のインターンに参加した企業から早期選考に誘われ,面接が始まりました

冬:インターンなどで業界研究・本選考

利用したサービス:

  • 冬季の短期インターン
  • 企業のイベント
    • 「弊社におけるデータ分析事例発表」系イベントに参加して,どの企業がどういうレベルのデータ分析をしているのかを知る
    • 業界団体のイベントに参加(例えばマーケティングリサーチ協会のイベントに参加した)

(参考)自分の意思決定過程について

一応のせます。参考程度に,お時間のある方だけお読みください

  • 自己分析(自分はどんな仕事をしたいのかを知ること)に関して

    • 大学院への進学は①やりたい研究テーマがない,②学部で大量の奨学金(≒借金)を負っている,の理由から断念
    • 飽きっぽい私が大学入学以前から在学中にかけて興味を持ち続けることができた「データ分析」を仕事にしたいと思うようになった
    • 「定時退社できるがやりたくない仕事・つまらない仕事」と「残業はあるがやりがいのある仕事・楽しい仕事」だと後者のほうが自分には合っていると思うようになった
  • 業界研究(どんな業界・企業・職種があるのか知ること)に関して

    • 公務員になるのも簡単ではないと知る

      → 公務員は選択肢から除外

      • もともと文科省を考えていた(教育経済学が好きだった)が,国家公務員は激務(残業がかなりある)だと知りビビる
      • 地方公務員は安泰(残業少ない)らしいが,いずれにせよ試験に落ちるリスクは有る
      • 公務員試験対策予備校に通うのにもまとまった資金を要する
    • 分析を仕事にできる業界・企業を探す

      → いろいろな部門があることを知る

      • 業界を探した結果はこの記事にまとめました

nigimitama.hatenablog.jp

4年生

春~夏:内定を得た企業を比較

  • 幸運なことに2社のベンチャー企業から内定をいただくことができました
    • 内定を極力保留しない方針でやっていて,志望度が低い企業には最終面接まで進んだとしても自分の正直な志望度を伝えていました。それでも2社残りました。
  • 両者のどちらが自分により合っているか・好条件かを比べました。 比べる方法として,個人的に「いい方法みつけた」と思ったのは以下のものでした
    • 財務状態を公告でみる
      • 非上場企業だとWebサイトにもIRのページがなく,財務の情報が全然無いように思えますが, 「〇〇社 公告」などと検索すると決算公告が見つかったりするので,それを参考にしました
    • 短期 or 長期インターンをしてから入社先を決める
      • ベンチャー企業は学生・内定者のインターン受入れをガンガンやるところも多いです。 そういった企業では「インターンさせてください」と言えば受け入れてくれます。
      • インターンとして社内にしばらく居れば,労働状況の実態がわかります
        • バリバリ働く系に見えて20時退社がデフォだったり
        • バリバリ働くイメージがあんまりない企業だったのに意外と22時退社がデフォで時折徹夜する感じだったり
        • 面接をしたフロアはオフィスの内装がめちゃくちゃオシャレでデスクも広々としているのに,それ以外の階は普通のオフィスでとても小さいデスクにLenovoのPCを使って作業する環境だったり

利用したサービス

就活中に利用したサービスをまとめます。

逆求人サイト

逆求人はプロフィール書いて放っておけばいいので早くからやっておくことを強くおすすめします!

大手の親会社からオファーをもらえたことはありませんが(いかんせん2流大学なので‥),大手のグループ会社やベンチャーからはオファーが来ます。

「自分に合っている企業がどれなのかわからない」という悩みは多くの就活生にあると思いますが,企業の人事側が「この学生はうちに合っていそう!」と選んでもらえる逆求人はいい企業を知る機会を増やしてくれます。

OfferBox(http://offerbox.jp/

  • このサービスの良いところ:
    • プロフィールに掲載できる情報量が多いこと
      • 文章だけでなく,画像や,自分が発表したプレゼン資料をpdfで載せたりもできる
    • 本気のオファーしかこないこと
      • テンプレ文面でのオファーじゃなくて,こちらのプロフィールを読んだ上でのメッセージがくる
  • 出会った企業の例:

ニクリーチ(https://29reach.com/

企業が学生を選んで焼き肉に誘うサービス。焼き肉はおまけで,企業説明や早期選考への招待が主。

  • 出会った企業の例:
  • ※ 必ずしも焼き肉が食べられるわけではありません
    • 焼き肉をごちそうしてくれるときは強いオファーの意思がある(or その会社の財務状態がいい)ことを推測できます

キミスカ(https://kimisuka.com/

登録したものの私の場合はいいオファーがなかった気がします。

  • このサービスの良いところ:
    • いろんな企業からの告知が来る
      • ある証券会社から「金融系の予測モデルをつくる10日間のハッカソンを行い,参加者には10万円を差し上げます!」みたいなオファー(というより告知)が来たのはこのサービス経由だったような。こういう告知がくるのは良かった。
      • このハッカソンは魅力的だったものの,就活中の忙しい時期に連続した10日間を1社に使うのは嫌だったので参加しませんでしたが。
  • このサービスの悪いところ:
    • テンプレ文面でのオファー(=説明会の告知文)が沢山くる
      • そのうちメッセージに目を通す気力が失せる

iroots(https://iroots.jp/

登録したものの,私の場合はオファーが1件しか来ませんでした(その1件も志望とマッチしてないから断りました)

  • 出会った企業の例:

Linkedin(https://jp.linkedin.com/

一応登録しましたが,私が就活を終えた頃(確か4年生の夏くらいだったか‥)にワークスアプリケーションズさんからメッセージが来た程度でした

インターンセミナー

Goodfind(https://www.goodfind.jp/2020/

Data Ship(https://data-ship.jp/

  • データサイエンティスト志望者向けの就活サービス
  • 私はハッチングフェスというイベントに参加しました
    • 私が参加した回はブリヂストンの人が来て分析事例(トラックのタイヤ内につけたセンサーのデータを活用して「タイヤ販売」でなく「業務用タイヤの総合的な管理を請け負うサービス」というビジネスモデルとしてビジネスを展開しているという話)や,学生同士でグループワークして新たなサービスを考えたりした。

まとめ:逆求人サイトは本当におすすめ

まとめると

  1. 早くから行動した
    • 2年生から業界を探し始め,3年生の間に就活はほぼ終えた
  2. 実績を作って逆求人サイトを利用した
    • 「論文コンテスト入賞」とか文面でアピールできるタイプの実績があってよかったと思います
  3. インターンセミナー類に積極的に参加した
    • 面倒くさいですが,企業についての知識を効率的に得ることができた気がします。
    • 業界・企業についての知識が増えるにつれてだんだん自分に合っている企業の見分けがつくようになっていきました

という感じでしょうか。

とりわけおすすめしたいのが逆求人です。これは本当に便利だと思いました。

早生まれの人は大変らしい

最近,実証分析の事例で「早生まれの人が損してる」系の話を聞いたのでメモ。

早生まれとは

「早生まれ」の人というのは,「1月1日から4月1日までの間に誕生日がある人」のこと。

早生まれの人は前年の4月2日以降に生まれた人と同じ学年に組み込まれ,同年生まれの人と比べて学年が1年早いため早生まれと呼ばれるようです*1

もう少し学術的な(論文で使われるような)用語で言えば,同じ学年での実年齢の違いは「相対年齢」と呼ぶようです。早生まれの人は相対年齢が低いということになります。

早生まれのデメリット

早生まれの人の何が大変そうなのかというと,「前年生まれの(数ヶ月~1年近く年上の)人と同じ学年に入って能力を比較されること」です。

とくに4月1日生まれの人と4月2日生まれの人では約1年の差があるにも関わらず同学年として比べられることになります。

この問題については「月齢の差は歳を重ねるごとに縮まっていくから問題ないはず」という仮説で反論されるわけですが,

一方で「差は縮まらないんじゃないか」という実証分析の結果があるようです。

今回はそうした実証分析についてリストアップしていきます。

身体能力の差

【日本の議論】「早生まれ」やはり不利!運動能力「遅生まれ」が優れている、野球・サッカーも…奈良女子大が科学で裏付け(1/5ページ) - 産経WEST

奈良女子大の中田大貴准教授の研究を元にしているこの記事では,子どもでも身体能力に差はあり,その結果としてプロになる人にも差が出ている可能性が示唆されています。

① 子供時代の差

男子では生まれ月による差がみられるようです。

一般の児童・生徒でも生まれ月によって運動能力に差があるかを明らかにするため、奈良県内の小学1年~中学3年の男女3610人が昨年行った体力測定の結果を分析。学年、男女別に4~9月生まれを「前期」、10~3月を「後期」として、身体的特性と体力測定の相対的年齢効果を調べた。

その結果、男子は小学1年~中学3年の全学年で、前期の方が後期より身長、体重や握力などの身体特性と運動能力の数値が高かった。特に小学5年以降は差が顕著で、中学2年男子の場合は平均身長に4・6センチ、体重には3・3キロの差が。体力測定では、立ち幅跳びで14センチ、握力で4・2キロ、50メートル走で0・4秒もの差があった。

ただし,女子は差が見られなかった

一方、女子では小学1~4年では男子と同様の傾向となったが、小学5年~中学3年ではほとんど差がなかった。中田准教授は「詳しい原因は不明」としつつ、(1)生まれ月の差より、第二次性徴期の発生が身体成長に与える影響が大きい可能性がある(2)運動を好む女子、好まない女子の運動量の差が、身体能力に影響を与えている可能性がある-と2つの仮説を提示。「初潮の時期などのデータがあれば、明確な理由が分かるかもしれない」としている。

② プロになる人の差

4~6月生まれのJリーグ選手は全体の34・7%で、プロ野球選手も32・8%。一方、1~3月の「早生まれ」選手はJリーグで14・6%、プロ野球も14・2%にとどまっている。

ただし,元の論文*2に目を通したところ,全てのスポーツ種目で相対年齢効果(早生まれで損すること)が見られるわけではないとのこと。

また,競馬は早生まれが有利になるスポーツらしいです。

芥川賞直木賞受賞者には早生まれが多いという話も同じ記事に載っていました。

学力の差 → 学歴・年収の差

「4月生まれ有利」「翌3月生まれ不利」は本当か | 経済学で読み解く現代社会のリアル | 東洋経済オンライン | 経済ニュースの新基準

慶応大の中室牧子准教授のこの記事によれば,

日本のデータを用いて行われた他の研究では、相対年齢による格差は、学力にとどまらず、進学、最終学歴、賃金など、人生における長期的な成果にまで影響していることを示している[4][5]。

学力に対する相対年齢効果は、特に学力の低い子どもの間や保護者の社会経済的な環境が教育が困難な子どもの間で顕著であることを示す研究もある[4][6]。

とのこと。

相対年齢が低い(早生まれ) → 相対的な学力が低い → 最終学歴が低い → 賃金が低い

という負の連鎖が起きやすいようです。

なお,挙げている参考文献は次のものでした。

自殺率の差

15~25歳の日本人の自殺率と生年月日の関係を調べた

Matsubayashi T, Ueda M (2015) Relative Age in School and Suicide among Young Individuals in Japan: A Regression Discontinuity Approach. PLoS ONE 10(8)

によれば,4月1日生まれと4月2日生まれの閾値の前後では自殺率が0.02ほど異なるとのこと。

img

上の図で視覚的にもわかるように,4月1日を境にジャンプがあります(本文ではRD推定もしています)。

この差が何によるものか?と解釈する際に上記の「身体能力(スポーツの成績)の差」や「学力の差」「最終学歴の差」「賃金の差」で考えていくなら,「早生まれの人も遅生まれの人も一律に同学年として扱っている現行制度」が自殺率にも繋がっているんじゃないか,という話になってきます。

言い換えると,この制度を変えればこの問題を解決できるんじゃないか,という仮説になります。

どうすればいいのか

中室氏の記事では,諸外国では相対年齢効果を抑えるための制度を用意しているようで,そうした国での実証分析結果では「相対年齢効果は歳を重ねていくにつれ縮小する」という仮説が成り立っているようです。

1990年代後半から2000年代初にかけて行われた教育心理学の研究蓄積を見ると、学力に対する生まれ月の影響は、幼児期や小学校の低学年では大きいものの、その格差は徐々に縮小し、小学校の高学年には消滅するという結論のものが多い(詳しくはStipek, 2002のサーベイが詳しい[2])。

もしこれが正しいのなら、相対年齢による格差は自然と消滅するので、さほど重要な問題ではないということになる。

ところが、この解釈には慎重になる必要がある。

なぜなら、学力に対する生まれ月の影響が観察されているほとんどの先進諸国では、幼稚園や小学校の入学時期を1年遅らせるという選択をすることが可能な制度があるからだ。

また

いくつかの国では、早生まれの子どもたちを対象に補習をしたり、生まれ月によってクラス分けをしたり、スポーツにおいてはゼッケンや背番号を生まれ月にしたりするなどの取り組みを行っている。

こうした取り組みは日本でも参考になるだろう。

とも述べられています。

日本はこの分野については制度の整備が遅れている後進国のようなので,先進諸国の良さそうな制度をうまいこといいとこ取りしてほしいものです。


(追記・おまけ)アメリカの場合

econgradさんのコメントを頂くまで忘れていましたが,Angrist and Krueger (1991)の研究でも生まれた時期と教育年数・賃金の関係を分析しており,生まれた四半期の差が教育年数に与える影響を利用して操作変数法(のWald推定)によって教育年数が学歴に与える影響を推定しています。

この研究も非常に面白いのでここに概要をメモしておきます。(ただし日本の早生まれ問題とは制度が異なるのでおまけとしました。)

この研究では,アメリカの次のような制度を利用しているそうです:

  • 6歳の暦年(12月31日を区切り)に義務教育課程が始まる
    • 第4四半期に誕生日がある人(≒遅生まれの人)は6歳になる前の9月に入学する
    • 第1四半期に誕生日がある人(≒早生まれの人)は入学時に6歳半くらいになっている
      • (ここでいう「早生まれ」は「同学年内で年少」という意味ではなく「1月1日~4月1日に誕生日がある人」の意。前者の意味で考えると第4四半期が早生まれになる)
  • 16歳の誕生日を迎えると義務教育課程が終了する
    • 第1四半期に誕生日がある人(≒早生まれの人)は義務教育期間が短くなる

f:id:nigimitama:20190111220333j:plain
(出所)Angrist and Pischke(2009)『「ほとんど無害」な計量経済学』,p.121

教育年数と賃金の両方とも第1四半期が低くなり第4四半期が高くなる傾向があることがグラフからわかります。

生まれた四半期の違いが直接賃金に大きな影響を与えるとは考えにくいので,「生まれた四半期」は「教育年数」だけに影響を与えていると考えられ,そこから「教育年数」が「賃金」に与える影響を操作変数法で推定できます。

その結果が以下の表です。やはり教育年数は将来の賃金に影響を与えているようです。

f:id:nigimitama:20190111220738j:plain
(出所)Angrist and Pischke(2009)『「ほとんど無害」な計量経済学』,p.130

ただ,この研究は1991年ですので,現在のアメリカではこの問題への対策がとられているのではないかと思います(中室氏の記事によればアメリカにはAcademic Redshirtingという制度があるそうなので)。

なお元の論文はこちら: