論理の流刑地

地獄の底を、爆笑しながら闊歩する

Masseyレーティングで各チームの前半↔後半のレーティング差を可視化してみる(小中本の実践)

気分転換でしかない記事

Introduction

先日名著『科学で迫る勝敗の法則』のメモをとった
ronri-rukeichi.hatenablog.com


感想は上の記事にまとめたが、Massey Ratingの項(4章)をよんでいて、
いくつか試したいことがあったのでRで分析してみる

具体的には、

  • 2023年の名古屋グランパスの問題点として「交代選手が点をとれないこと」があげられていたのだが、前半45分だけでの得点差と後半45分だけの得点差を用いて別々にレーティングを算出したらやはり名古屋は後半のレーティングのほうが低いのか

の、検証的なことをしたい。

Massey Ratingとは(小中本より)

Massey Ratingとは「チームのレーティング差が得点差に対応する」というアイディアをそのまま数式に表現したようなシンプルな手法であり、

チームi, j のレーティングをr_i , r_jとすると、その2チームが対戦したある試合の得点差y_kが誤差を伴って
r_i - r_j + \epsilon_k = y_k
といった形であらわれるという発想の手法である。

詳しくは該当書のpp.154-155を参照してほしいが、
各チームが戦った時のレーティングの差は1, 0 ,-1のいずれかを成分とするK×Rのマッチング行列
(上式でいうところのチームiに1, チームjに-1を割り当ててあと関係ないチームのとこは0となっている行列)
とレーティングのベクトルr_1,r_2,,,,r_Rの積で表せて(左辺)、
それが実際の得点差のベクトルYと誤差ベクトルεの差に一致するので、マッチング(というかインデックス)行列をXとすると

\boldsymbol{Xr} = \boldsymbol{y}- \boldsymbol{\epsilon}

といった形でかける。これは統計を触ったことのある人なら線形回帰を習う時とかにめっちゃよくみたことのある形であって、
誤差二乗和を最小化するようなレーティング(のベクトル)rは、
\boldsymbol{r} = \boldsymbol{ (X^{\top}X)^{-1}Xy }
で求められる。
※統計ソフトなら普通の線形回帰のコマンドとか使ってもいい


なお、Matlabが使える人は、著者である小中先生自身がコードを公開しているらしいので、そちらをみるといい



データ・関数の準備

準備といってもまぁ使うのは得失点(とシュート/被シュート)のデータだけであるが、
(回帰分析的な語法でいえば)「説明変数」がマッチング行列で、それに回帰係数=レーティングが掛かって出てくるのが、「被説明変数」たる得点差という発想なので

  1. 各チームにインデックスを割り振ったうえで
  2. 各試合の結果(例えば名古屋2-2G大阪、みたいな)に対応するインデックス行列と、得点差のベクトルをつくる
  3. 得点差にインデックス行列を回帰して、レーティングを得る

という手順になる

データ構造

手元にあるデータは上のような構造をしていて、試合×クラブ、すなわち34×18=612のレコードがあるのでひとつの試合について重複データがふたつずつあるので、そこらへんも注意しつつ以下のような関数を組む

関数詳細(R, クリックで展開)

Calc_Massey <- function( dta,score_i = "Goal_For", score_j = "Goal_Against" ){
  
  ## ClubのIndexを付与
  
  clb <- dta[["Club"]] %>% unique() %>% sort() 
  
  dfClub <- data.frame( Club = clb , 
                        Index = 1:length( clb))
  
  ## 得点差ベクトルを得る
  score_diff <- dta[[score_i]] - dta[[score_j]]
  
  ## 自チーム/敵チームをインデックスに変換
  idx_i <-  data.frame( Club = dta$Club) %>% left_join( dfClub , by = "Club") %>>% (Index)
  idx_j <-  data.frame( Club = dta$Opponent) %>% left_join( dfClub , by = "Club") %>>% (Index)
  
  ## インデックスと得点差, 日付だけ
  dfMassey <- data.frame( i = idx_i,
                          j = idx_j, 
                          s_i = dta[[score_i]] ,
                          s_j = dta[[score_j]],
                          ScoreDiff = score_diff,
                          Date = dta$Date
                          )
  
  dfMassey <- dfMassey %>%
    rowwise( ) %>% mutate( idx_min = min( i , j ), idx_max= max( i , j)) %>%
    mutate(ID =  paste(idx_min, idx_max , Date , sep = "_")) %>%  ungroup %>% as.data.frame() %>% 
    mutate( s_min =  if_else( idx_min == i , s_i , s_j ),
            s_max =  if_else( idx_max == j , s_j , s_i ))
  
  
  ## 重複を除く
  
  dfCalc <- dfMassey %>% select( Date , idx_min, idx_max , s_min , s_max) %>% unique() %>%
   mutate( y = s_min - s_max )
  
  
  ## インデックス行列を得る
  index_l <- list( )
  for( k in 1:nrow( dfCalc)){
   idx_k <- rep( 0 , nrow( dfClub)) #初期化
   idx_k[dfCalc[ k, "idx_min"]] <- 1
   idx_k[dfCalc[ k, "idx_max"]] <- -1
   
   index_l[[k]] <- idx_k
  } #for ループ
  
  
  MatMatch <- do.call( what = rbind , args = index_l)
  
  
  dfMatch <- as.data.frame( MatMatch) 
  colnames( dfMatch) <- paste0( "r_", 1:ncol(dfMatch))

  
  dfEst <- dfMatch
  dfEst$y  <- dfCalc$y
  
  ## 回帰をまわしてスコアを出る
  
  lm_res <- lm(y ~ 0 +r_1 + r_2 + r_3 + r_4 + r_5 + r_6 + r_7 + r_8 + r_9 + r_10 + r_11 + r_12 + r_13 + r_14 + r_15 + r_16 + r_17 , data= dfEst )
  
  #回帰係数を得る(得たあと中心化)
  coef_raw <- lm_res$coefficients
  coef_cons <- -1 * (mean(c( coef_raw , 0)))
  coef_mod <- coef_cons + c( coef_raw, 0)
  
  dfRating <- data.frame(Club = dfClub$Club, Rating =coef_mod  )
  # 
  # return( list( Index = dfClub,
  #               Data = dfMassey,
  #               Calc = dfCalc, 
  #               Match = dfMatch ,
  #               Est = dfEst,
  #               Coef = coef_mod))
  rownames( dfRating) <- NULL
  
  return( dfRating )
  
} #function


この関数で計算すると、だいたい得失点差に沿ったランキングがでる

res1 <- Calc_Massey( dta = j1_stat23)

分析:前後半の得点差からRatingを算出して、くらべてみる

ということで早速前半/後半の得失点のデータだけ使ってMassey Ratingを算出してみる

## 前半のゴール差をもとに算出
res_1st <- Calc_Massey(dta = j1_stat23 , score_i = "Goal_For_1st", score_j= "Goal_Against_1st")

## 後半のゴール差をもとに算出
res_2nd <-  Calc_Massey(dta = j1_stat23 , score_i = "Goal_For_2nd", score_j= "Goal_Against_2nd")

このようにして得られたデータをさっきの90分トータルでのRatingとあわせると、以下のような感じになる

Club Rating_Total Rating_1st Rating_2nd
c-os 0.139 0.111 0.028
fctk -0.111 0 -0.111
fuku -0.167 -0.222 0.056
g-os -0.639 -0.167 -0.472
hiro 0.389 -0.083 0.472
ka-f 0.167 -0.167 0.333
kasm 0.25 0.25 0
kasw -0.389 0.083 -0.472
kobe 0.861 0.278 0.583
kyot -0.139 -0.028 -0.111
nago 0.139 0.139 0
niig -0.111 -0.25 0.139
sapp -0.139 0.139 -0.278
shon -0.444 0.028 -0.472
tosu -0.111 -0.167 0.056
uraw 0.417 0.083 0.333
y-fc -0.75 -0.333 -0.417
y-fm 0.639 0.306 0.333

前半データに基づくレーティング得点+後半データに基づくレーティング得点=90分でのデータを使ったレーティング得点になっている。

名古屋(nago)は、やはり前半のスコア(1.139)に比べて後半のスコア(0.0)のほうが低い。リーグ内順位でいうと前半45分はレーティング4位だけど後半45分の名古屋は10位だ。
ほかに面白いところをあげると、

  • 後半大きく崩れる柏(kasw, 前半0.083, 後半-0.472)
  • 前半苦戦するが後半に盛り返す川崎(ka-f, 前半-0.167, 後半0.333)

などがある。優勝した神戸は当然前後半ともに良い数値だけど、後半とくに爆発しているようだ。

図示すると以下のような感じである

(軸の都合で45°にみえないけど)破線がX=Yのいわゆる45度線で、雑駁に言えば
これより下に位置するチームは前半型、破線より上に位置するチームは後半型といえる。
(また、当然だが左下より右上のほうがよい成績になる)

こうみると、名古屋は確かに前半にくらべて後半45分落ち込むほうのチームではあったけど、札幌・柏・湘南あたりほど極端ではなかった、という感じだろうか。


Enjoy!!

小中英嗣(2024)『科学で迫る勝敗の法則:スポーツデータの最前線』

名古屋サポーター、そしてJリーグファンにはおなじみの小中英嗣先生の新著。
発売日は年明けだが、都内大型書店には既に並んでるとのことだったので早めに入手した*1ら面白くて一気に読了。

すぐに内容を忘れる鳥頭なので、自分用の雑多なメモ

全体に関して

  • これはこの本が書かれた意図とは違うかもしれないのだけど、個人的にこの本の素晴らしいところは、「色々なスポーツを観てみたくなること」にあるのではないか、と思った。
    • 「あとがき」では著者自身の「飽きっぽい」性格が、雑食的に複数のスポーツを観るという趣味を通じて、この本の執筆につながったと回顧されている。が、私自身はサッカー以外ほとんど興味さえ湧き立たない(オリンピックやその競技の世界大会がメディアに多く取り上げられる時期でさえ)ため、「飽き」がくる段階にまで行かない人間であるので、そもそも色々と観ようとする好奇心があること自体がかなりすごいことに思える。別にこれは阿っているわけではなく、各スポーツの観戦に関して「つまみ食い」の段階にまで行かないような人間は私以外にもたくさんいるはずで、この本はそういった読者にも競技横断的な「データから楽しむ」視点をさまざまな切り口から提供することで、初観戦の第一歩を後押しするような深みがあるように思える。
    • 「はじめに」ではスポーツを「身体活動や物体の位置を数値に置き換える営み」と表現している。この本では、その数値への置き換え方のスポーツ間の違い、そしてその「数値への置き換え」をめぐって競技者/ルールの作成者/分析者がどのように振る舞ってきたのかを各スポーツの歴史とともに振り返ることで、観戦欲やさらなる知識欲を惹起することができている。
  • 文章がうまいのは当たり前(いやそんなこと私が評するのもおこがましいですが)だけど、構成がとても読みやすく飽きさせないので感心させられる
    • たとえば第三章では冒頭に1962年のバスケットボール選手の1試合100点の大記録を提示したあとに、「私はこの記述に含まれる重大の事実に気づくまでにかなりの時間を必要としました」と思わずページをめくってしまうような章のはじめ方をしていて、すげー!っとなった
  • 一般向けの入門書として書かれていることもあって、(第四章の後半を除いて)ほとんど数学の知識がなくても面白く読めるのがやさしい。
    • 第四章の各レーティング算出手法のところだけいきなり行列式が出てきてびっくりした(統計ちょっとかじってる人なら大丈夫ですが)が、これは入門書としてさらに勉強してもらうことを考えたときに、数式をプログラミングに落としていくための配慮としての意味合いが強いと思う(たぶん)。
      • 「イロ・レーティングは計算の手順がシンプルで、プログラミングの練習としてちょうどいい難しさです」(p.151)とあるように、実際レーティングの各手法はとっつきやすさから考えたときに「さらなる一歩」として、適切だと個人的にも思う。
      • そういやあんまりプログラミングに縁がない文系学生だった私が独学でプログラミングを始めたのも、教養課程で興味本位でとった数理工学の授業で習ったBradley-Terry Modelを試そうと試合データをScrapingしようと思ったのがきっかけだったので、確かに導入としておあつらえ向きな題材だと感じる
  • 結論:「はじめに」が「名古屋より、名古屋グランパスの優勝を願いながら 2023年12月 小中英嗣」で締められたこの本を、名古屋サポーターが買わない手はないのではないのでしょうか。

気になった/勉強になった部分+感想メモ

  • 第1章:野球とセイバーメトリクス
    • マネーボール」も「アメリカン・ベースボール革命」も観た・読んだので取り上げられていた題材自体はだいたい知っていたが、その結果、(観客目線で)野球が「面白く」なったかどうかというテーマは考えさせられる
      • 第3章では、物理計測やデータの蓄積がアメリカ野球にもたらした「合理的」な選択の顛末=「何も起きない」時間の増加が示されている(pp.97-100)
      • 現代の(プロ)スポーツは「それが興行コンテンツである」という制約から逃れられないので、競技性・ルール設定*2・興行的価値の三者関係の相互作用を抜きには語れない、という点をこの本全体を通じて改めて認識した
    • (野球優位文化の愛知で育ったのに)野球全然知らない人間なので、"「打たせて取る」技術"の存在自体がデータから否定される、という話はなかなか衝撃を受けた(p.14)
    • 「もっとシビアで重要とみなされたきた分野――例えば軍事技術――から、余ったコンピュータ資源がスポーツという「遊び」に到達した時代が21世紀初頭なのです」(p.31)がかなり印象に残る言葉だった。
    • 些末な話だけど「ピタゴラス勝率」って全然ピタゴラスっぽくなくね?と前から思っていたので著者も同じことを考えていて我が意を得たり感があった
    • p.39で、AIが人より強くなってしまった将棋・チェスなどに関して「人類が勝てなくなった前後では、そのゲームの特徴が「人間のみ実行できる複雑で知的な営み」から、「他の機械で代替できる営み」へと変わってしまったと感じています」とわりと立場がはっきり表明されていて、ここは個人的にはまだ判断が難しいところだと思っているので興味深く感じた
      • 自分は将棋ファンだということもあって、「AIが人間より強くなってしまうと競技の魅力も損なわれるのか」というテーマに関しては結構触れる機会が多い。たとえば大川慎太郎『不屈の棋士』を読むと棋士のなかでもその考えがかなり分かれていることがわかるし、たぶん将棋ファンのなかでも定見がない話題ではないだろうか。
      • いまではすっかり将棋中継でおなじみになってしまった「評価値グラフ」が、藤井ブームなどで近年増加したいわゆる「観る将」(=自分では指さない将棋ファン)に対して、リアルタイムでの臨場感の増幅装置としてある程度機能しているのは否定しがたいと思う
        • 私の両親も「将棋のルールは知っているが棋力とても低い(解説をきいてもあまりわからないくらい)」のにも関わらず将棋中継を楽しんでいたりするが、これは2010年代前半までの将棋中継では難しかったように思う。
        • いっぽうで「AIの推奨手と違う手を指すとすぐに"悪手"や"ミス"と判定する」みたいな観戦姿勢が定着してしまうことで、AIは将棋の奥深さや棋士の努力への正しい理解からむしろ遠ざける方向に作用している、という見方も根強くある。この主張も結構わかる。
        • 結局は、「AI > プレーヤー > 観客」という実力序列が明確になったときに、AIとの比較によるプレーヤーの相対化が行われてしまうこと自体は避けられないのだけど、その相対化がどれだけ容易に可視化されてしまうか/どのような形でなされるか、というところにポイントがある気がする。
      • 「AIやデータの蓄積の存在がプレーヤー視点での「合理的な選択」をいかにして変えるのか」という点に関しては、下の動画で渡辺九段(当時名人)が藤井聡太八冠の特異な強みとしての「記憶のパワープレー」について語っている動画が個人的に一番示唆深い(動画の33分くらいから)

www.youtube.com

        • AIが「答え」を示せるところまでは解明が進んだとして、状況-答えのセットの組み合わせがあまりにも多かったり、その分岐が複雑だったりする場合は、そのすべてを人間が記憶したり用意したりするのが難しいので、試合展開が必ずしも画一化するわけではない、というのが含意である(ひとりだけその組み合わせを網羅して「記憶のパワープレー」が繰り出せると八冠になれる)
        • スポーツの話に差し戻すと、野球は「状況」がわりと複雑化しない競技なので、この本で書かれているような画一化とその結果としての「何も起きない時間の増加」が起きたのではないかと思う。サッカーは「状況」の定義の仕方や分節化が幾様にもありうる側の競技なので、なかなか画一的影響は受けにくいとは暫定的には思う(せいぜいこの本にも挙げられているロングシュートが少なくなる、くらい)。でもさらにデータ活用が進むと違うことも起きるのかなぁ
    • セイバーメトリクスの「セイバー」が「アメリカ野球学会」の略語だってのを知らなかった
  • 第2章:サッカーのデータ分析
    • サッカーについての章だったので、ほぼ既知の内容だった。ので個人的なメモは割愛。
      • メモすることがないのは自分がオタクなのが悪いだけであって、一般向け入門書としては過不足ないトピックの選択とわかりやすい解説がありもちろん素晴らしい
    • 「はじめに」でも書かれている「サッカーの競技特性がデータ計測や分析を拒み続けきた」という部分は、本当に自分で色々分析しようとすると嫌なほど痛感するところではある(特にJリーグについては、詳しくは大昔に書いた以下の記事に詳しく述べている。いまもほとんど意見は変わらない)

ronri-rukeichi.hatenablog.com

  • 第3章:3ポイントシュートの革命
    • ルールの設定・変更とその帰結について各競技の事例や意図・帰結を紹介している章
    • NBAにおいて得点を増やすために3ptラインをゴール近めに設定したら、逆にDF側が守りやすくなって得点が減ったという話(p.83)が一番面白かった
      • スポーツに限らないけど、こういう制度設計・変更の「意図せざる帰結」みたいな話が読んでる側としては一番おもしろいみたいなところはある
    • ルールの妥当性やその改訂について議論するとき、競技性だけでなく、「疲労や怪我からの選手の保護」という観点が大事だ(でも我々は忘れがちだ)というのを、試合時間とルール変更の関連性について扱った節(p.92-p.97)を読んでいて改めて認識した。
  • 第4章:「順序をつける」巧みな方法
    • 小中先生自身の研究例も多く紹介されていて、個人的にとても面白かった&勉強になった章。
    • よりよいランキングをどう設計・評価するのか、ということを考える面白さがかなり伝わってくる
      • 特に複数種目のスコアを組み合わせて最終順位を決める場合の問題に関してはあまり考えたことがなかったで勉強になった
      • ひとつの物差しで測れない複数の結果を「合算」するときに、どの努力とどの努力を「等しい」とみなすのかの重みづけ判断には結局何らかの思想が介入するんだけど、その判断を見通しのよい形で行うためにこそちゃんと定式化・定量化することが重要である、という感想を持った
    • t時点でのランキング上の各プレイヤーの位置自体の情報がシードの作成や各大会自体のグレード評価につながって、t+1時点での試合結果やランキングにつながる..という再帰性は多くのスポーツにあるのだけれど、①総当たり制が難しく、②単純な(垂直的な)実力差以外にも大会↔選手や選手↔選手の「相性」が大きく結果に作用する、といった場合に特にランキングの妥当性が問われやすくなりそうだな、という感想をもった
      • そういった意味でランキングの重要性が高くなりそうなスポーツであるテニスについて、そのランキングやポイントのシステムの設計の丁寧さを解説しているpp.131-136あたりが本当に面白い。
      • ①総当たりが難しくて、②プレイヤー(キャラ)間の相性がめちゃめちゃ大事で、③シードを通してのランキング↔試合結果のフィードバック的影響が当事者からも強く認識されている、という領域として個人的にこの章を読んで思い出したのは「スマブラ」の競技シーンである。「シードを上げて事故を減らすために大会に出る」みたいなことがプレイヤーからも日常的に口にされるので、シードとその背後にあるランキングに関してのプレイヤー側の視線もわりと厳しいイメージがある。
        • スマブラでは数年前まで世界/日本で「最も権威のあるランキング」(PGR/JPR)が押しも押されぬ存在としてあったのだが、今は両方とも更新停止されたため、今は複数のランキングが並立していて、シード作成を行う大会運営側もどのランキングを参照するかは試行錯誤している状態である。各ランキングがどういう思想を持っていて、予測指標としてどれくらい有効性があるか、みたいのを比較評価する人がいると面白いと思った。


www.youtube.com
note.com
note.com
jak-amano.hatenablog.com

    • この章の最後でもランキング作成とテスト理論や製品評価(一対比較法)との類似性・共通性が軽く触れられているが、実務でそれらに触れた経験があるからこの章が特に面白く読めたのはあったかも。
    • 章の内容自体とは関係ないけど扉絵のページを見て日本ガイシって瑞穂区の企業だったんだ...っていうのを今更知った
  • 第5章:予測モデルの腕試し
    • ただただ読んでて面白い章。
    • 勝敗予測にあたって、疲労からの回復度を補正として用いるというアイディア(p.190)が面白いと思った。この疲労度の寄与みたいなものもスポーツ間で違うんだろうなぁ。
    • ワールドカップカタール大会をうまく予測しきれなかった要因として「異大陸間の試合の減少」が挙げられている(p.199の図がわかりやすい)が、これは分析者/予測者目線だけでなく、当事者目線でも結構大きい変化だったのじゃないかとふと思った。(それが実際に勝敗に作用したかはまた別の話だが)大陸「内」の試合が増えたUEFAに所属する大国であったドイツとスペインが、日本の実力を測り切れていなかった部分は少なからず2022W杯であったように思う。
    • 「サッカーマティクス」は自分も大好きな書で、実際にくじを買ってみる章が好きなのも小中先生と同じなので、その日本版(?)「続編」を読めるだけでめちゃめちゃ面白かった
    • 小中先生は過去の得失点だけを予測に使っているから、もしかしたら読者は「もっと多くの変数を使ってもっと複雑な手法を使えば的中率を上げられるのでは?」という反応もありそうだと思った。しかし、個人的な見立てとしては、モデルを複雑に洗練させていっても(多少の改善はあるかもしれないが)劇的には予測精度は向上しないだろう、という気はする。
      • 「サッカーマティクス」でもゴール期待値などをインプット情報として用いた予測モデルが賭けにおける判断基準として機能しなかったという話(pp.372-4)が出ていて、著者(D. Sumpter)はそういった細かいデータの利用は戦術理解には有用だが、予測に関して同じくらい有用かといえばそうでない、と結論づけていた。
      • 「ある要因が引き起こす結果」(Effects of Causes)に関心がある分析と「ある結果をもたらす要因」(Causes of Effects)に関心がある分析の違いは統計学の応用において近年よく議論されるトピックのひとつ(たとえばコレとか)だが、使用データの拡大や分析手法の洗練を進めていっても知見が増大するのはおそらく前者についての部分であって、「勝敗を規定する新たな決定的要因」みたいなのが急に見つかる可能性は(少なくともサッカーについては)低い、というのが個人的な暫定的見解である。

スポーツを愛している者、そしてこれから新たに愛する者にとって、本棚にあってまず損のない名著だと思われます。

Enjoy!!

*1:池袋のジュンク堂にありました

*2:競技のルールだけでなく、大会日程や各コンペティションのレギュレーションなど運営的な要素を含む広義の「ルール」

『何が投票率を高めるのか』(松林, 2023)

松林哲也, 2023, 『何が投票率を高めるのか』有斐閣
twitterでたまたま見かけて興味がわいてよんだ。

MEMO

1章:何が投票率を高めるのか?

  • 国際的にみて、日本の国政選挙における投票率は高くない(たとえば2020年以降の国政選挙に着目するとドイツや韓国は8割弱だが日本は5割)
  • 本書の目的:個人属性ではなく環境要因(制度や政治環境など)の効果に着目して、投票率向上を促す要因をさがす。
  • 政治環境・制度環境のもつ効果を考える時に、「ベネフィットとコスト」という概念への着目がカギとなる
    • ベネフィットを左右する3つの要因(p.11)
    1. 選挙という民主的手続きに参加する満足感
    2. 自分が好む政策を実現する政党・候補者が勝つことで得られる物質的・非物質的利益
    3. 選挙の接戦度(接戦なほど1票の価値がます)
    • 「投票行動のパラドックス」(自分の1票が選挙の結果を変える確率はほぼゼロ、にもかかわらず多くの人が投票に行く)の説明要因して、1の「(投票という)民主的手続きに参加することによる満足感」が着目される

2章:投票所が近いと投票に行く?:投票所と投票参加

  • 日本は(期日前投票という例外を除けば)「投票日当日投票所投票主義」の国
  • 人口あたりの当日投票所数は時代とともにかなり減っている(1960年には1万人あたり8つ→ 2021年衆院選で4.5)
    • 当日の投票可能時間帯も縮小傾向(pp.24-5)
  • 都道府県別にプロットすると、選挙当日投票所数と期日前投票所数は負の相関関係にある
  • 分析枠組み
    • 当日投票所数減によるコスト増と、期日前投票所数増加によるコスト減の効果をさぐる
    • 2014/2017/2021の衆院選が分析対象
    • fixed effectを含めた回帰モデル(人口による重みづけ済)
      • Outcome: 投票率
      • Predictor: 対数変換後の1万人あたり選挙当日投票所数・10万人あたり期日前投票所数
      • 統制変数:人口構成の変化(人口規模&65歳以上人口)
  • 当日/期日前投票者数が選挙率にたいして与える影響の分析結果
    • 10万人あたり期日前投票所数がひとつ増えると投票率が0.16%ポイント増える(統計的有意)
    • 1万人あたり選挙当日投票所数がひとつ減ると投票率が-0.51%ポイント減る(統計的有意)
  • 面積の大きい地方ほど当日投票者数が大きく減少し、期日前投票所を増やしているが、おそらく後者の設置がおいついていないことが投票率低下につながっている可能性
  • 筆者は郵送での投票等も考慮する価値があると提言

3章:「投票日、雨の予報」は投票率に影響する?

  • 投票コストへの影響を通じて、天候は影響をあたえる可能性がある
  • 近年で天候が悪かったのは2017/10/22の衆院選だったが、実は直近にくらべて投票率があがっている
    • 事前に台風接近がわかっていたため、投票タイミングをずらした可能性
  • 二回のタイミングに分けてベネフィット・コスト判定をする場合、「前もって投票できるという制度設計」をすれば投票率があまりかわらない可能性がある(pp.54-56)
  • 分析枠組み
    • 悪天候の影響について、以下のふたつの仮説を検討:
    1. 午前集中仮説:選挙当日の午前と比べて午後に降雨量が多かった地域では午前中に投票する人が増える
    2. 期日前投票期間集中仮説:期日前投票期間のラスト4日と比べて選挙当日に降雨量が多かった地域では期日前投票期間中に前もって投票するひとが増える
    • 利用データ:2014/17年の衆院選自治体別のデータ(投票率&降雨量)
    • 統計分析の枠組み:いわゆる「差の差」の分析
      • 「2017年の午前投票率- 2014年の午前投票率」に対して、「2017年午後午前の降雨量差 - 2014年午後午前の降雨量差」が有意な影響をもつかをみる、ということ。
  • 分析結果:ふたつの仮説とも統計的に支持された
    • ちなみに、65歳以上人口の多い自治体ほど「悪天候が予想されたときに、前もって投票する」傾向が顕著

4章:投票啓発活動は投票率向上に効果的?

  • 投票をよびかけるメッセージを発信することの効果を検証する意義
    1. 近年の国政・地方選挙における低投票率への打ち手としての検証の意味
    2. ポスターなどによる発信が人的・金銭的コストに見合うかどうかの検証の意味
  • 総務省衆院選のときにポスターを作成・配布する理由
    • 公職選挙法第6条第1項で選挙についての常時啓発の義務/選挙実施前の臨時啓発、を国・自治体に義務付けているため
  • 分析枠組み:フィールド実験
    • 2021年衆院選での新有権者(豊中市の18-20歳の若者2241人)が対象
    • 投票を呼びかけるメッセージを調査対象者にランダムに割り当てて、介入群vs対照群の差を分析する
    • 有権者への啓発物郵送資料の封筒の表面に、3種類の異なるメッセージを記載したステッカーを貼る
      1. 介入群1:「前回の衆院選では、あなたと同じ18歳と19歳の有権者963,009人が投票しました。ぜひ投票に行きましょう!」
      2. 介入群2:「投票に行って、社会の未来を決めるメンバーになりましょう!」
      3. 対照群:「ぜひ投票に行きましょう!」
  • 分析結果:有意な差は見いだせず
  • Rogers et al.(2018, ”Social Mobilization", Annual Review of Psychology, vol69)が提唱する5つの投票啓発の成功条件PANIC
    • Personal(個人にむけた)→個人同士のやりとりのほうが促進効果高い
    • Accountable(責任を負う)→投票にいったかどうかを可視化した方が効果高い
    • Normative(規範的)→社会的な望ましさを認識させたほうがよい
    • Identity relevant(社会・自己認識と関連する)→当人が帰属意識を高く感じるようなグループにとっての重要性を認識させる
    • Connected(つながり)→ もともと関わりのある人の呼びかけは効果が高い

5章:なぜ地方で投票率が高いのか?

  • 都市と地方には根強い投票率格差が存在
    • 1990年終わり頃までは安定して10%ptほどの格差が町村部と市区部の間に存在した
    • ただし2010年代には縮小している(4~6%pt差に)
  • 2つの問いが生まれる
    1. Q1:なぜ地方部と都市部に投票格差があるのか?
    2. Q2:なぜ近年は投票率地域格差が縮小傾向にあるのか?
  • 投票率地域格差に関する従来的な説明に関して(p.97)
    • ネットワーク仮説:地方の有権者は社会的ネットワークへの所属率が高いので働きかけや社会的規範の影響が強くなる
    • イベント感仮説:「地方部では選挙を地域イベントとみなす参加文化が存在し、選挙期間中に選挙のムードに人々が引き込まれていく可能性」
    • 地域格差縮小に関しての学歴バイアス仮説:都市部のほうが大卒者が多いが、学歴による投票率差や地域間進学率差が高まったことで、地域間格差が縮まった
  • 議員定数配分が投票率に影響を及ぼすメカニズムについて
    1. ベネフィットの差:選挙区内の人口が少ないほど、議員が選挙区に持ち帰る利得の配分度合いが大きくなる
    2. 選挙活動の(効果)差:有権者あたりの議席数が多いほど、選挙活動に接触する機会が多くなる
    3. 投票参加の影響力差:有権者あたりの議席数が多い地方のほうが、1票の価値を大きく有権者がみつもりやすい
  • 1994年の公職選挙法の前後の選挙(1993/96衆院選)を比較し、議席数の増減と投票率の増減の関係をみると、確かに相関関係がみられる
    • 選挙制度改革を通じて議員定数の不均衡が是正されたことで、主に地方部の投票率が減少し、その結果、都市部との投票格差が縮小したと推測できる」(p.112)

6章::新しい政党の参入は投票率を高める?

  • 新しい政党の候補者の登場が、「だれに投票していいのか分からない or 誰に投票しても一緒」と思って投票しない人の行動を変える可能性はある 
  • 投票行動に関しての有権者の二つのタイプ
    1. まず投票に行くと決めて、投票所についてから「さて誰に投票しよう」と考えるタイプ(投票コストや投票の社会的価値が重要)
    2. 特定の政党・候補者に票を投じたいから投票に行くと決めるタイプ(政策・能力に関して候補者間に差異を感じられることが重要)
  • 新政党・新候補者の参入は前述の投票の3つのbenefit(民主的手続きの満足感/物質的・非物質的利益/選挙の接戦度)のうち物質的・非物質的利益と選挙の接戦度を通じて投票率に影響を与える可能性アリ。
  • 分析枠組み
    • 分析対象:新政党参入前後の衆院選データ(1967公明党/1993日本新党/2012日本維新の会
    • 差の差法(DID):「新党候補者が参入した区の投票率の前後変化 -新党候補者が参入しなかった区の投票率の前後変化」により新党候補者参入の影響を測る
  • 分析結果
    • 維新の会の参入は、1.25%ptほどの投票率引き上げ効果があった
    • 一番古い公明党の参入にいたっては、8%ptの効果(創価学会の動員力がかなりすごかった:1967時点で世帯数600万とのこと*1

7章:女性議員が増えると投票率は上がる?

  • 2020年時点で、衆議院、県議会、町村議会の議員比率は約10%。参議院特別区議会などは比較的高め
  • 女性議員比率が高まることは、以下のような形で女性の投票率を高める
    1. 女性議員が増えることで、議会の決定や政治そのものへの女性有権者の信頼感・効力が向上する
    2. 女性にとって重要な政策が論議の俎上に載りやすくなる
  • 分析
    • 東京都特別区で1999年以降に行われた区議会議員選挙のデータを使う
    • 男性候補者に比べ女性候補者は当選しやすく、当選者のなかでも上位に食い込んでくる確率も高い
    • 操作変数法を使った分析を行う
      • 操作変数(IV)は、効果をみたい処置変数(ここだと当該区議会の議員比率)に影響し、そしてその経路以外でアウトカム(投票率)に影響しない変数がのぞましいが、ギリギリ定数に滑り込んだ候補者とギリギリ及ばず候補者の性別の組み合わせを操作変数にした分析を行うのがとても面白い発想だった。
      • 分析の結果、女性比率が1%pt増えることは、女性/男性の投票率を0.16/0.13%pt向上させる(統計的有意)。男女差も統計的有意なので、特に女性の投票率を高める、ということになる。
  • 関係ないけど、女性議員率が高いと女性だけでなく男性有権者投票率が高まる説明について「男性議員と比べると女性議員は清廉でフレッシュな印象を与えるので、このような特徴を持つ女性議員が増えることは議会全体への信頼や手続きの正当性への評価を高めてくれる」(p.143)と学者とは思えないすごい解釈がデータ的根拠なしに書かれていて面食らった。

(8・9章は実分析はないので割愛。投票データに関するバイアスや分析可能なデータの入手の難しさを話すのが8章。9章はまとめ)

感想とか

もともとは学術論文であるものをわかりやすく噛み砕いて書いている印象で、良書だと思った。
分析自体もシンプルにone question , one answerな感じでよかった。

投票参加を考える時に「選挙という民主的手続きに参加する満足感」というベネフィットに着目すべき、という(恐らくこの分野なら当たり前の前提的)知識はなるほど、となりました。
地域間投票率格差の縮小の要因として学歴バイアス(都市のほうが高学歴が多く、高学歴者は投票率が高い)があげられていたが、学歴バイアスは3つのベネフィットのうちどれによって最も説明されるのか、という点が個人的には気になったりした


www.youtube.com

Enjoy!

*1:創価学会ってこんなに規模デカかったんだ、知らんかった...

善教将大(2018)『維新支持の分析:ポピュリズムか、有権者の合理性か』

  • なんか何もやる気が出なくて(←こういう表現自体自体が本当に精神的未熟さを反映しているので使うべきではないのだけれど*1)、ふと本棚に大量にある積読の中の一冊と目が合ったので、読んだが面白かったのでメモ。
    • なぜこの本を買ったのか、そもそもいつ買ったのかを全く覚えていないが、政治学の門外漢にもわかりやすい書だった。たいそうな賞を受賞しているのも納得できる。
  • 雑駁に言ってしまえば、維新の「成功」(←2010年代初頭の大阪における支持の獲得・定着)と「失敗」(←特別区設置住民投票における大敗)の双方をデータから学術的に説明しよう、という書。
    • 答えを先にいうと、「成功」の原因は威信が"「大阪」の代表者"という政党ラベルを獲得・定着できたこと、「失敗」の原因は十分に情報が与えられた(→選択的接触の度合いが低くなった)環境下での有権者の批判的志向だとしている。
      • 浅学にして「政党ラベル」という語をはじめて知ったのがだが、政治学(の政治行動論)だと結構ポピュラーな概念っぽい。平たく言うと政党のブランディングの結果獲得したイメージ、みたいな感じだろうか
    • いずれの説明にも、市民を盲目なポピュリズムの追従者とせず、一定の「合理性」をもったアクターとして捉えているところにこの本の特徴がある。あんまり学者も上から目線でばっか見てんなよっていうロックさを感じる(適当)

MEMO(アットランダム)

  • 著者の基本的なスタンスについて:「自身の印象を吐露し、有権者を動員対象としてしか扱わない「ポピュリズム」概念の使用にはそろそろ終止符を打つべきである」(p.254)
    • 背景として、維新(やそれ以外の「ポピュリスト」「ポピュリスト政党」)に関する先行研究について、供給側視点(政党や政治的リーダーの動員戦略に焦点化)と需要側視点(有権者の意識や行動=ポピュリストに扇動・影響されているのかの検討)があるはずだが、前者のアプローチがばかりが目立ち後者が抜け落ちていることへの問題意識が語られている
      • 大衆社会という認識は、ある意味で供給側の視点にばかり立ち、維新政治を説明し続けてきたことの必然的な帰結」(p.46)
      • ポピュリズム論の枠組みに立脚する論者は、維新支持者をポピュリストに操作されやすい阻害された「大衆」とみなす。これに対して本書は、維新支持者は「合理的」かつ自律的な意思決定主体であることを軸に、維新が支持される理由、そして住民投票が反対多数となった理由を説明する。その意味で本書は、ポピュリズム論の立場から維新政治を論じてきた多くの議論に対する、正面からの挑戦状である」(同頁)
  • 「海外のマスメディアに「ポピュリズムに抵抗できている日本」と評される」(p.76)ことがあるらしい。へぇ、なんか直感的にあんまりそうは思えないんだけど比較論的な視座だとそういう見方もなくはないか。Financial Timesとかにそういう記事があったりしたとのこと。
  • 「分析結果を先取りして述べれば、有権者の党派性との関連でいうと、もっともポピュリストとしての特徴をもつ政党は維新でも自民党でもなく共産党である」(p.83)がはえーってなった。ポピュリズムって割と新自由主義的な潮流と絡められることも多いけど、そこにNOを言ってる政党の支持者がポピュリズム迎合的である、というのはおもしろいデータだ。
  • ポピュリスト態度をどういう形で測定するのかについては、Agnes Akkermanさんという先達がいるらしく、下位次元として①人民主義②多元主義③エリート主義、に対する肯定⇔否定の度合いが用いられることが多いとのこと。人民主義は人民vsエリートみたいな見方で政治を捉えているかどうかで、多元主義は多様な価値観や異議への配慮を是とするか否かで、エリート主義は「政治であれ民間であれ、一部のエリートによって導かれる社会をどうみるかに関する態度」(p.82)とのこと。
    • 若干読んでてひっかかりがあったところとして、維新支持がポピュリスト態度と相関するなら、「彼らは人民主義度が高く、多元主義度は低く、エリート主義度は高いということになるだろう」としたうえでデータではそうじゃなかったと示されているけど(pp.87-89)、えっそういう仮説は自明なの?と思ってしまった。人民主義度とエリート主義度が両方高いって、平たくいえば「一般市民(あるいは"大衆")の意を汲んだ一部の選良が政治(や経済)を導くのを是とする」ような状態になるけど、わりとそれって複雑な状態では。※シンプルに「政治を我らの手に取り戻せ!」って言ってる人たちは違うってことになるが、確かにポピュリズム迎合的な人たちには政治家に流されないといけないので、尺度的には合っているっぽいのか...(?)
    • 維新支持層は、上記3次元のうちエリート主義には肯定的で、多元主義度も高めの層が多いとのこと、ただしそもそもが各尺度について「党派性の間の差はそれほど大きくない」(p.88)。自民党支持層が人民主義に否定的なのとかは、むべなるかなという感じである。
    • でもp.91のmultinomial probitの係数値をみると、前述の共産党支持者を含め、主要な統制変数を加えた分析では維新支持層も他党の支持層もいわゆる「有意」なポピュリスト態度の傾向性は無いように見える(例外として自民党支持者の人民主義嫌いは明確に残存するが)。
    • ということで、「党派性とポピュリスト態度には明確な関連がない」(p.91)というのが穏当な現代日本に対する理解ではなかろうか。ゆえに、「維新支持者はイデオロギーとしてのポピュリズムを支持する有権者集団ではない」(p.97)
  • p.94で、OLSの結果から政治家不信が、ポピュリスト態度のうち人民主義・エリート主義とsignificantな正の関連をもつのが、先行研究と整合的であるとされているのだが、素人目線だとわりとそれ自体が面白かったりした。政治化不信なのにエリート主義を支持するってことは、彼らの頭のなかでは「政治家」と「エリート」は違うところに分類されているってことだよな。なんかあんまり詳しい考察とはできないけどおもろいな。いっぽうで多様性への尊重も高くなるのは、既存のポピュリズム研究とは合わないとのこと。へぇ。
  • おなじ分析で、地元利益志向が三つのポピュリスト態度と強く関連していることも興味深かった。「ポピュリズムは人民による統治という意味ではデモクラシーの「光」であるが、他方で排他的な志向性を強めるという「影」におなりうる」(p.95)
  • ランダム化無作為実験のデータを対象とした第四章について
    • 一般的傾向として、有権者は支持する政党を全国的な利益とみなして、不支持政党について地域偏重的とみなす。それは維新支持者以外には共通する傾向だが、維新支持層だけは維新以外の政党のほうを全国的な利益を代表する政党と認識する(p.104)
    • ただし、維新支持者についても通常の調査だと維新について地域偏重性が高いとは回答しない。これは調査における社会的期待迎合バイアス(SDB, social desirability bias)があるためで、そこでランダム化実験の必要性が説かれている
    • 維新の党方針や政局などについて異なる仮想状況を提示したvinetteを提示してコンジョイント分析すると、公務員削減や重要視する政策は影響がなく*2、党首と議員定数の影響が大きかった。また、大阪の政党であることも有意な影響がある(←「維新の地域偏重性が維新支持の規定要因として重要であるという、本書の仮説を支持する結果」p.117)
    • 社会階層の主観的認識による因果効果の異質性を検討したところ、「階層により各要因の効果が大きく異なることはない」(p.118)ということがわかった。ゆえに、社会構造における阻害がポピュリズムの前提条件とするような見方については否定される*3
    • 現支持政党が維新/非支持に分けて効果の異質性を検討したところ、支持者のほうが各要因の影響を受けやすいことがわかった(具体的には党本部の場所や関西議員の割合、議員定数や党首など)。これは「維新不支持者の態度がきわめて強固であることを示す結果であると同時に、維新支持者は、条件次第で維新を支持しなくなることを示す結果」(p.122)とのこと
    • 先行研究で支持されてきた公務員不信の効果は確認できなかった
    • 全体として「維新は「大阪」の代表だから支持されているという仮説ときわめて整合的」(p.123)
    • 「本章が明らかにしたのは、有権者、あるいは大阪市民・府民は維新を自らの地域の集合的利益の代表者とみなしていること、それゆえに維新を支持しているという単純な事実」(p.124)で、それはきわめて単純な合理的意思決定の帰結、と結論づけられる。
  • conjoint分析を用いた方法論の文献としてHainmuller et al.(2014)※URLが挙げられている。いつか読みたい
  • 「日本人の政党支持と投票行動の関連はそれほど頑健ではない。さらに言うと日本の有権者は、政党ラベルを政治的な意思決定の際の手がかりとして常に用いるわけではない」(p.126)
  • 既存の国内の実証研究の紹介で、支持対象ではなく「不支持対象」の選択の手がかりとして、日本においては政党ラベルはより機能しているという話が出ていてなるほどと思った(p.128-9)。何を言ってても自民党に入れないとか、どういう政策でも共産党に入れない、みたいなのは確かにわかりやすいというか。
  • 中選挙区以上だと政党ラベルはあまり機能しにくく、小選挙区制(1人しか当選できない)だと機能しやすい...ので、国政における小選挙区比例代表並列制はその意味でも大きかったの事。
  • いっぽう、基本的に地方選挙では中選挙区制なので候補者が個人としての差別化に走りやすい誘因があるし、そっちのほうが合理的である。なのになぜ維新の政党ラベル訴求戦略がうまくいったのか?という形の問いの出され方があって、書き方としてうまかった(誰目線なんだい)
    • 答えとしては、「維新の候補者が選挙において自らの個性をアピールしない理由は、党首ないし橋下効果の強さと、当選・再選確率が高くない候補者が多いからという2点に求められる」(p.132)
  • マジで内容関係ないけど例のNNMRさんの事件(?)を「号泣県議事件」と表記してて、ボカしたら逆におもろい表現になってしまってるパターンで3分くらいツボに入ってしまった
  • 維新支持層は政党ラベルの効果が自民支持層や無党派層よりも大きい、というサーベイ実験結果が興味深い(pp.136-138)
  • 6つのプロファイルを提示して好ましい候補者を選ぶコンジョイント実験において、政党ラベルは「どちらかというと「投票すべき対象」を選択する場合ではなく「投票を避けるべき対象」を選択する際の手がかり」という結果が出ていたのが面白かった(pp.144-145)。好きより嫌いの感情の方がつよいのだ。
  • 特別区設置に関する分析(6-8章)について
    • 二つ目の問いである「なぜ特別区設置住民投票で維新は敗北したのか」について、一般的な説明(シルバーデモクラシー説や、中心-周辺問題説)やポピュリズム論では敗因を説明できないことをデータから示したうえで、新たな主因(?)として有権者の批判的志向による説明という新説を提示・検証していく
    • 6章では住民投票当時の、都構想に関する市民の知識保有状況を検証している。党派性による選択的接触の影響は大きくなく、維新支持 or 不支持にかかわらず市民の理解は比較的高い水準の状態で政治的選択が行われていたことが示される
    • 7章では都構想反対派から主張されていた投票用紙のフレーミング効果について、厳密なサーベイによる追試を行っている。投票用紙の表題によって賛成の意向が増えるようなことはないという結果が得られ、反対派が(エビデンスなしで)主張したような市民の「操作」は現実味が低い
    • 8章では、批判志向性が反対への投票と有意に関連していたことと、維新支持者においてその批判的志向性の高い者が多かったことから、維新支持者の一部が批判的志向ゆえに反対票を投じたことを「敗北」の要因として同定している
      • 批判的志向の指標化としては、三浦・楠見(2014)を参考にしつつ、5つの質問文に探索的因子分析を適用して、「判断の慎重さ」と「マスコミ懐疑」の二次元を取り出している。前者が住民投票における「反対」投票に効いていた
  • 総評というほどでもない雑感
    • 著者が終章で怒りの感情をあらわにしながら他の(全員ではないが)ポピュリズム論にまつわる言説や研究における「地道な実証」の欠如を論難しているところ(pp.223-224)からもわかるように、地道な実証を積み重ねていくという姿勢が非常に好ましく思える。政治行動論の全体的な風潮に関しては何も知らないんだけど、こういう本を読んで自分も!ってなる人が多くなればいい感じに発展するのでは
    • 正直あまり政治に興味が持てない(怒られろお前)で生きてきたこともあり、地方政治と国政における党内での乖離とかは恥ずかしながら知らなかったし、中(・大)選挙区制と小選挙区制における候補者からみたアピール戦略におけるインセンティブの違いとか、恐らく基礎的な知識であるだろうことまで含めてとても勉強になった。いい本。
    • 終章の最後(pp.226-227)で、「大阪市民は「大阪」の代表者を、利用可能な手がかりを用いて選択していたに過ぎない。問題があるとするならばそれは有権者の側ではなく、有効な政党を形成することに失敗した「政治」の側にある」と述べたうえで、著者は「「市民」により支えられている日本の民主主義は、まだ信頼してよい制度である」と締める。
      • たぶん結論だけ読んだらoptimisticすぎるように思えちゃうんだろうけど(実ははじめに結論から読んでそう思った)、一冊読み通してここに辿り着くと、ポピュリズムについて無責任に語ってきた「有識者」たちがあまりにもこれまで軽率に「市民」の側に帰責してきたことへの怒りの表明でもあるのだ、と感じた。
    • この本の実証パートは二つのメインクエスチョンに対応して3-5章/6-8章に二分されるけど、個人的には前者のほうが面白くよめた。特に興味深く感じたのは、同一(独立)変数の効果について、①支持者にとっての「支持する理由」への効果②不支持者にとっての「支持しない」理由への効果、を分けて推定していることである。こういうアプローチはこれまであまり見たことがなかった。ATT/ATCとも似ているが、あれは処置変数の水準によって因果効果の推定対象を変えるものなので、結果変数(厳密には結果変数そのものではなく、仮想的な候補者への投票意向だったりで巧妙な「ずらし」があるんだけど)で水準を区切って変数の効果の差異を検出して知見につなげるっていうのは、面白いなぁと。
      • 自分の仕事に引き付けてもう少し一般的な言い方にかえると、分析の焦点となるKPI(アウトカム)があるときに、そのアウトカムの水準によって各変数の効果が「変わりうる」とみることによって成立する問いもあるよなぁって話でした。この本だと、支持者と不支持者における変数の効き方の違いを、支持の安定性・不安定性のハナシにつなげているのがうまいところであって。ここらへんのセンスが私にはないので、手数あるのみである。



www.youtube.com

Enjoy!!

*1:桜井さんも最近の動画で、「とにかくやる」が誰でも使える唯一で最大の解決方法と仰っていた。真理だ。

*2:政党を選ぶのに政策が影響ないって何気にヤバいんじゃねーかと読みながらツッコんだがスルーされている。そういうもんか、現実

*3:これについては主観指標なのがよくないと思う、正直。世帯 or 個人年収を使うべきかな

年末年始によんでいたもの(2022→2023)

師走も走り去りぬ。

例によって年末年始は(帰省や移動時間を利用して)読んでみようと当初思っていたものの2~3割ほども読めなかったが、読んだものについて超簡単な感想・備忘など。
記録をとらないと読んだことも忘れちゃうゆえ*1


(自分用)参考:秋に読んでいたもの
ronri-rukeichi.hatenablog.com

クリスチャンセン&チェイター『言語はこうして生まれる』

  • 「言語の天才まで一億光年」の高野さんがtwitterですすめていたので年末読んでいた。重厚過ぎて(ちっちゃい文字で350ページくらいある)読むのに一日かかった。
    • その割にあんまり中身覚えてなくてかなしい。「あとでまとめて」じゃなくて、読みながらメモとらないとだめなんだよな本来は。
    • 面白いトピックは結構あっただけに、末尾に索引がないのがめちゃ残念。「ヒラノ教授シリーズ」で出てきた過激な名言『索引のついていない本は読む価値がない』*2を久々に思い出した。
  • めっちゃざっくりいうと、トップダウンではなくて自生的な秩序としてボトムアップに出来上がっていくのが言語だぜ、という話。
    • 言語学は門外漢で土地勘はないんだけど、言語学にはチョムスキー先生の「普遍文法」パラダイムが一時期席巻していたことがあって(これはいわばトップダウンな考え方だ)、そこが背景にあったうえでより動的で局所的な言語の生成過程を重視する、という問題意識なのであるそうだ。
      • 普遍文法について(p.136)『チョムスキーからすると、その論理的な流れとして、子どもはいうなれば「普遍文法」を持って生まれてくるに違いない。人間の遺伝的青写真には、言語を支配する抽象的な数学的原理が内包されているのだ。特定の言語を支配するパターンを学習するというのは結局のところ、北京官話であれホビ語であれバスク語であれ、その言語の細部をとらえられるように普遍言語を微調整するだけのことなのだ』
      • この普遍文法パラダイムに対して、実際は(この本の副題にもある通り)、言語は即興的な「ジェスチャーゲーム」の蓄積の過程として動的に生成される、というのが筆者二人のいいたいところ。
      • 「この数十年間、言語学分野―あるいは少なくともその一部―では静かな革命が進行してきた。世界中の言語の当てはまる隠れた普遍的パターンなるものをとらえた「壮大な体系」をまとめようとするよりも、小さなことから始めたほうがいいと多くの言語学者が思うようになった」(p.139)
      • 子どもの言語の学習を、N学習(自然界についての学習)としてではなくC学習(文化的世界についての学習)として捉えられたほうが、「言語の習得がなぜ可能なのか」という問いに答えやすいこと&ある文化圏におけるジェスチャーの理解・模倣として言語学習を考えたほうが自然である、ということが、このような考え方の一つの支持根拠となっているらしい(pp.205-209)
      • 言語学習が可能なのは、人間と関係のない、誰もがその習得をめざす「真実」の言語があるからではない
    • 訳者あとがきの冒頭で触れられているとおり(p.321)、この本の特徴はさまざまなレベルでの「言語が生まれる」メカニズムを扱っているところにある。以下のようなトピックがすべて抑えられている
      • ほかの動物にはない人類特有の言語が生まれたのはどうしてなのか(人間の知能・特性の根幹としての言語)
      • 世界中にたくさんの異なる言語があるように、地域や民族ごとに独自の言語が生まれるのはどういうわけか(言語のバリエーションの生成)
      • 1人の人間のなかで言語がうまれるのはどのようにしてか(言語の習得プロセス)
  • 実験言語学?とでもいうのか、実験的環境ででたらめな新しい言葉をつくって伝言ゲームをさせると、秩序が徐々にできてくるという研究例がいくつか紹介されており興味深かった。われわれは既に世界に存在している言語秩序を学んでいくわけだが、そもそも言語にどう秩序が生まれてくるのかを観察しようという試みである(pp.210-219)
  • よく言語学や語学学習関連の本で出てくる話題で「学ぶのが難しい言語は何か」というのがある。この話をするときはたいてい母語ではなくて第二、第三の言語のことを想定していることが多いのだが、母語として学ぶ言語にも難易度があって、デンマーク語はその難解さゆえに母語として学ぶスピードが他の言語より遅い、という話が面白かった(p.255-264あたり)
    • デンマーク語には40種類(!)の母音があり、それがデンマーク人のこどもたちにとっての言語習得にハードルになっているとのこと。ほぼ同じ過去時制の体系をもつノルウェー語・スウェーデン語を学んでいる子どもに比べても、過去時制の習得が2年遅かったり、語彙の発達スピードが遅かったりするそうだ。
  • 数年前にtwitterで教えてもらって面白かった本に『魚だって考える』っていう本があって、色々な魚の観察・実験からさまざまな「知性」を読み取れることを教えてくれる良書なのだけど、わりとこの『言語はこうして生まれる』は人類の知能・知性が他の動物の知能・知性と明確に峻別されるという立場にたっていて、その境界線の核として言語がある、という考え方だった。ここらへんは人によっては少し抵抗があるかもしれない。
    • 最後の2-3章くらいはわりと壮大な話になっていて、「サルはジェスチャーゲームはしない」という話から、人間とその他の動物を分かつ「文化の進化」の基底にあるのが言語なのだ、というデカすぎるテーマが語られていた。「言語はまったく新しい種類の進化プロセスを生んだのだ――遺伝子の進化ではない、文化の進化というプロセスを」(p.286)




中川裕『アイヌ文化で読み解く「ゴールデンカムイ」』

  • 帰還兵とアイヌの少女がやっかいな脱ぎたがりの奴らと金塊を奪い合う国民的漫画/アニメである『ゴールデンカムイ』の監修をしたアイヌ文化の研究者さんの本。実家に帰省していて、父の書棚にあったのでなんとなく読んでみた
  • 「カムイ」は無理やり日本語で近い言葉を当てはめて”神"と訳されることが多いけど、「環境」と捉えたほうがいい(アニミズム的な)とのこと。動物も自然もカムイだし、現代にかつてのアイヌ文化があったら電子機器とかもカムイとして捉えられている可能性もあると。
    • 日本や欧州の神話における"神"的存在と違うのは、悪いことをしたカムイ側(例:人を襲った熊)に対してわりと人間側がカジュアルに罰を与えられること、というのが面白かった。
    • 「カムイ」は元々の世界(現世とは別の)では人の形をしていると考えられていて、たとえば熊も熊の毛皮をかぶった人間のようなものとして考えていて、猟で熊を獲ったあとに感謝をささげながら食べたり毛皮を利用することが、カムイに対しての敬意として捉えられている。
    • だから、ウェンカムイ(悪いカムイ)は元の世界に帰れないようにお仕置きをする。人を襲った熊は毛皮にも食事にもせず、ただ刻んだり燃やしたりして地獄に落とすことができる、という発想らしい。なるほどなー。
  • 著者の方は、フィールドワークがてら色々なアイヌ料理を食しているそうで(各動物の各部位も)、脳みそはガチでうまいと力説してあった。
  • フィクションにおける歴史や文化の考証につきものではあるのだが、「忠実に再現するなら本当はこうですよ」といっても、どうしてもストーリーや絵としての見栄えやわかりやすさが重視されてしまうこともあるそう。だから、書名も「ゴールデンカムイで読み解くアイヌ文化」ではなく、「アイヌ文化で読み解くゴールデンカムイ」にしていると。
    • たとえば江戸時代の女性を忠実にお歯黒にしてしまうと、見てる側の違和感がすごくてスッと入ってこないよね..みたいなのがわかりやすい例として出されていた。
    • 大学一年でとった教養課程の授業で、ちょうど前年の大河を監修した先生の中世史をとっていたことがあるのだが、同じ悩みを吐露していたのを思い出した。「こんなことはありえなくて、こうしているはずです」みたいなことを言っても、現代のわれわれからの違和感や消化しやすさに負けちゃうことが多々あると。
    • この本の著者も、ゴールデンカムイの作者はすごいアイヌ文化へのリスペクトがあると述べている。それでも、どれだけ愛や配慮があったとしても、フィクションのなかで再現される歴史や文化はあくまでもフィクションだということを、われわれも時折思い出して抑制的に解釈する必要があると感じた。もちろん、色んな興味の入り口としての意義は否定しようがないし、「ゴールデンカムイ」がアイヌへの関心に対してポジティブな貢献をしていることを著者も捉えているようですが。
  • 近年アイヌ語を保存・復興しようという試みがかなり盛んになっているらしく、去年読んだ「フィールド言語学者、巣ごもる」(これもかなり面白い本だった)でおびただしい数の言語がすごいスピードで消滅していくという話がされていたのを思い出した。




村上春樹柴田元幸『翻訳夜話』

  • 父の書棚にあったのでなんとなく読んでいた本その2。翻訳が好きで好きでしょうがないふたりが対談や講演での質疑応答、競訳の検討などを通して、翻訳についての意見を交換し合う本。
  • 自分は申し訳ないけど村上春樹の小説はあまり読んだことなくて(たぶん読み通したことがあるのは「色彩を持たない~」だけだ)、その割に彼のエッセイは結構読んでる変な読者なのだが、これも面白かった。
    • 学者と小説家というもう一つの軸足を各々に持っているので、その立場の違いやキャラクターの違いが翻訳に関する考え方に出てきて興味深かった(「自分より下手な小説を訳すのがつらい」とのたまう村上さん)。
  • 柴田さんが「すべての翻訳は誤訳」と言っていて、(もしかしたら使い古された表現なのかもしれないけど)翻訳という行為の本質的な困難を表していてインパクトがあった。それでも翻訳が好きでしょうがないって言えるのは強いすなぁ。
  • 翻訳学校*3の生徒さんからの「Q:訳する作品の時代背景や文化や精神性についての理解や勉強はどれくらい必要ですか」という質問に対して、もちろん背景知識があるにこしたことはないけど、基本的には「テキストで全て説明されている」というスタンスで訳すべきだと二人が答えていたのが印象的だった。
  • 主語を省略しない英語から省略しがちな日本語に直していくとき、("~, he said."が続くのをいちいち「彼が言った」と訳す感じで)忠実になおすとくどい感じになるんだけど、英語で読んでもくどいときはあえてそこに作風上の実験を読み取ってそのままにしておくか悩む、みたいな話が悩ましくも面白い話だな、と思った。
  • 村上春樹の初期の作品(まだ飲食業との兼業だった頃の作品)は、英語で書いてから日本語に直していくことで、独特のリズムやテンポをつくっていったというのは有名な話。だけど、そういう翻訳的文体が染みつきすぎて、逆に村上さんの日本語作品を英語になおすときに翻訳者(英語ネイティブ)から「英語にはなおせるけど、そもそも日本語にこんな表現はなくないか」みたいな問い合わせがくるらしく、結構面白かった。

Degitar & Rose,"A Review of Generalizability and Transportability"

Link ※23/1/11現在, 最終verではないので注意。

  • いつか読もうとブックマークだけしてて後回しにしてたもの。やれEBPMだEBMだと言われるなかで、分析から「データに基づいて」提出された知見がどれだけ求めるターゲット集団*4に対して一般化(generalize)・移転(transport)可能なのか、という点について扱った研究のレビュー。勉強になった。
    • 実務的な観点からうれしいのは、target populationとstudy populationの差異を検討するときに、個票がつかえず集計レベルでの各変数の分布情報(平均、標準偏差、中央値など)しかないときにとれるアプローチについて言及があること。
  • やれ交絡、やれ疑似相関だ、と我々は内的妥当性(internal validity)にばかり意識が向きがちだけど、知見の導出のもとになったstudy sampleと施策・処置を適用したときの効果が知りたいtarget sampleの差異から生ずるバイアスについての外的妥当性(external validity)にも注意を払え!とのこと。いやはや、おっしゃる通りでございます..
    • 考える対象となる領域が政策であれ研究であれマーケティングであれスポーツであれ、基本的には意思決定の参考にするような分析知見を導出するのに用いたデータと、意思決定や選択が影響を及ぼすデータは基本的に絶対にズレる*5ので
    • イマドキの時代的背景というか問題意識としては、RCTが結構causal effectsを求める手段として普及してきているのだけど、RCTのstudy sampleというのはわりと本当に「処置・施策を実行したときの効果」が知りたい想定集団と性質を異にすることが多いので、そこらへんが念頭にあるっぽい。
  • 外的妥当性にかかわる概念としてgenaralizabilityとtransportabilityが二つの中心概念として定義されている。この二つは似て非なるものなので注意してね、とのこと(p.3)
    • generalizability:study population(分析を行った対象データの背後に想定している母集団)が、target population(実際の処置効果を知りたい対象の背後に想定する母集団)の一部のときの知見の一般化をさす
    • transportability:study populationがtarget populationの外部にあるときの、知見の移転をさす
  • ちなみにstudy sampleとかtarget populationとかどういうことやねん、というのは以下の概念図(p.2)を参照されたい。
    • 一応この図だとanalysis sample/populationとstudy sample/populationは区別されてるけど、その後あまりその区別については触れられない。まぁ欠測データ分析についての色々なアプローチが膨大な量あるので、そっちはそっちでやってねということでしょうか
{tareget/study/analysis}×{sample/population}の概念図
  • 外的妥当性バイアスをもたらす要因として、以下の4つがあげられている(p3)。これらがtarget/studyのgroup間でちがうと考えられるとき、安易に因果効果に関する知識をgeneralize/transportしちゃいけないYO
    • a) subject characterstics, 対象の性質.
    • b) settings, 環境や実験の設定(例として、地理的要因やhealth centerのtypeなどがあげられている)
    • c) treatment, 処置(例として、処置タイミングや処方量、スタッフの習熟度などがあげれている。同じtreatment=1 に割り振られていてもtarget vs studyで「処置」の意味するものが違ってくる、みたいな話ですね)
    • d) outcome, アウトカムの測定(例:測定のタイミングやフォローアップ機関の違いなど)
  • そんでもって、上記のようなバイアスの誘因があるとき、以下の三つの経路のいずれかを通して外的妥当性biasが起きることになる
    • a) 研究・調査対象になりうる確率の差異
    • b) 因果効果の異質性(heterogeneity in treatment effects)
    • c) a とb の相関(RCTの実際の対象グループと、適用したい想定集団を比べてRCTの対象に選ばれやすいような性質をもつことが、因果効果の異質性と相関をもつとき)
      • たとえば街頭アンケートである商品があるアトリビュートをもつことの効果を推定して、それを見込顧客全体に対しての効果の類推につかうときそもそも街頭アンケートに答えるような人がそのアトリビュートの効果も高いとき、実際にその施策を打っても効果がうすくなっちゃう、みたいな話

  • 実際のgeneralize/transportのステップとして、以下があげられている。詳細は略
    1. estimand:推定値の確認
    2. assumption:必要な前提の充足状況の確認
      • 因果推論の議論で耳タコになるくらい聞いたexhangeablity/positivity/SUTVAの3点セットの外的妥当性verみたいなものを確認しろ、とのこと
    3. evaluate:①処置効果のmodificationの存在の有無、②effect modiferとなる変数の分布がstudy/target間で異なるかどうか、を精査することによって、外的妥当性バイアスの深刻度を評価する
    4. methods:外的妥当性の処理を組み込んだ手法によって、target populationにおける処置効果を推定する

  • ちなみに論文全体のまとめは6章のDiscussionの部分にすごい分かりやすい感じであるので、全体の論旨を思い出したい時はそこだけ読めばいい(自分用覚書)
    • でもたぶんこの論文の利用価値としては、estimand/assumption/evaluate/methodsの各々のフェーズに関して、色々な議論や分析アプローチについての文献を豊富に紹介していることが一番だと思う。generalization/transportationに関してのpaper listとしての価値だ。
  • 個人的にはevaluateのところが勉強になった(pp.18-19あたり)。External validity bias exists when study and target population differs in their distribution of effect modifiers"なので、そのバイアスの深刻度を評価するには、以下の三つをすればいいとのこと。各評価手法に関連して色々な論文が紹介されていて、いつか必要なときに読もうとおもった(読まないやつ)
    1. baseline charactersticsの非類似度の比較
    2. アウトカムに関する非類似性の比較(target sampleにおける処置グループごとのアウトカム平均を、study sampleからweighing/matchingなどで予測した処置グループごとのアウトカムと比較して、equivalenceを確かめるみたいなことをやるっぽい)
    3. 処置効果のheterogeneityの検出
  • 論文全体を通して感じられるメッセージとして「外的妥当性に対処するための考え方や分析アプローチには、内的妥当性に対処するために用いられてきたものが援用できるよ」というスタンスがある
    • 確かに、紹介されてるassumptionとmethodsの数式表現は、どこかで見たものばかりである(あと読んでて気づいたけどこの著者の人は、わりとpropensity score推しだ)
    • これは蛇足of蛇足だけど、数か月前によんだ吉野諒三(2022, 「未回収層のプロファイリング:「信頼感」で読み解く世論調査の標本バイアス」『行動計量学』vol.49(2))先生のありがたい文章で「バイアス評価の経験則」と題したありがたい提言があり、そのひとつに"ウェイト調整は「補正」ではなく、バイアスを見つめるために活用せよ"(キャリブレーションや傾向スコアなどで「補正」しようとするより、元のデータの比率と調整量の差が大きい項目を考察し、どのようなテーマにどのようなバイアスがあるかを解明せよ)と書かれていてハッとした。もちろんgeneralizationやtransportへの志向性はあっていいのだけど、どこかで「別データは別データ」とわりきってデータをみつめることも大事ですね


ほかにノンフィクションを1冊、専門書を1冊、フィクションも2冊くらい読んだけど、あんま刺さらなかったのでメモは割愛。
いやはや、普段(目の前に必要なもの以外の)インプットの時間があまり捻出できてないぶん、来年の年末年始こそは事前に読もうと思っていたもののせめて半分はよみたいと、そう決意したのでした。
読むスピードと頭の回転がせめて人並みの1/2くらいになれば...(かなわぬ願い)


www.youtube.com


Enjoy!

*1:20代後半以降、ほんとうに読んだものを読んだそばから忘れるようになってしまった気がする...加齢のせいにしてはいけないなー。

*2:さすがに言い過ぎだと思う

*3:そういうものがあるのをはじめて知った、現代社会はなんでも学校化される社会だ

*4:マーケティングだったら見込顧客、政策だったら対象市民とか

*5:追跡調査や生の顧客データなど、分析対象が同一個人のときもあるじゃん!と言われるかもだが過去の彼と未来の彼は同じデータとはいえないし、同じとみなすならそれはそれなりに強い仮定をおいているのである

薬丸岳『友罪』

数か月ぶりにフィクションを読もうとおもって近くの古本屋で購入。
W杯を傍目にみつつ読み進めていたら、途中で引き込まれて600ページ弱を一気に読み終えてしまった

扱っているテーマがテーマなだけに、「爽快な読後感」みたいなものとは程遠いが、
しかし重く残りつつける澱のようなものをもたらす作品であった。

この本では、同じ工場ではたらく4人の登場人物が過去に起こした「罪」とともに苦しみながら生きる姿が描かれている。
もちろん一番重く描かれているのは、少年時代連続児童殺傷を起こした鈴木の罪であるが、中学時代に友人の自殺を止められなかった主人公益田にしろ、成人男性向けの映像作品にかつて出演したことで人生が狂った藤沢にしろ、息子が起こした事故の贖罪を考え続け、自らの家族が家族として生きていくその形を自ら解くこととなった山内にしろ、かつての「誤った」選択が生んだ帰結、そしてそれがどこまでもついてまわる人生のどうしようもなさに唸り、悶えている。

人を殺めたり、他人の命に関わるような罪や咎が私にあるわけではないが、いっぽうで傷の全くない人生ではないし、益田の隣室で夜中に唸り声を上げ続ける鈴木が完全に他人には思えなかった。
「どこまでも罪が追っかけてくる」という彼の声は、(作中の彼ほどの残忍で取り返しのつかない「罪」を過去にもつ人間でなくても)この社会で、少なくない人が心の中で発する慟哭ではないだろうか。

あのときこうしていれば.....、もっと注意していれば....、周りの人とのことや思ってくれていた大切な人のことが見えていれば....、
そう思いつづけて数年・数十年が経ち、なおも罪がもたらす傷がふさがらずに生き続けること。
そのように生きることを強いられるのがあまりにも辛くなって耐えられず、自ら終止符を打ってしまいたい思いに苛まれること。
それを一生体験せずに生きていく人のほうが多いのかもしれないし、それが真っ当で「正常」なのかもしれない。

しかしそこから外れてしまった人間は外れてしまった人間なりに生きていくしかないし、
そこが抜け出せない隘路であっても、周囲や環境、そして何より自身を突き刺すような己の悔恨とともに生きていくしかない。
その意味が、いや意味などなくともその困難が、どうしようもなく全身に浸潤していくような、そういった作品であった。

他人が、そしてなにより自分が、自分を許せずともそれでも歩くことの必要性、「歩くことは許されない」と思いつつも歩き続け、軋んでいく自身の心や体とともにあることの容易でなさを、描写することに成功した作品ではないかと感じた。


www.youtube.com

Enjoy!

【R備忘】{slider}パッケージの主要関数メモ

師走だけど、走らないよ

Introduction

時系列データ(あるいはもっと一般に、sequenceのindexがあるデータ)をあつかうとき、いわゆる「window関数」を定義して各指標を計算する(例:移動平均)ことは多い。
{slider}は、そのwindow関数による処理をより簡単におこなうためのパッケージである
なんか便利そうなので、主要関数の使い方をまとめておく

◆ 参考URL

関数ごとの使い方

slide()

基本関数。

  • .x(第一引数)にデータ(ベクトルやdata frame)を指定
  • .f(第二引数)に、関数を指定("~.x ** 2 "みたいに、表現式での指定でも可能
  • .before/.after引数には、前後何個分のデータを取得するかを指定。際限ない場合はInfにする
  • slide()は"type-stable"であり、取得したい値、.fに指定する関数の戻り値によってslide_dbl, slide_int, slide_dfr(データフレームね)などを使いましょう、とのこと。slide()はlist型を返す。
  • 他には.step(ステップ数を指定)、.complete(boolean; 系列に欠損がある場合も演算するか否かを指定)などの引数があり

引数名の「.」を忘れがちなので、注意

slide(1:4 , ~.x, .before=1 , .after=1)

# [[1]]
# [1] 1 2 #.complete=TならここはNULLになる
# 
# [[2]]
# [1] 1 2 3
# 
# [[3]]
# [1] 2 3 4
# 
# [[4]]
# [1] 3 4 #.complete=FならここはNULLになる

slide_dbl(1:5 ,.f = ~mean(.x), .before=1 , .after=1)
# [1] 1.5 2.0 3.0 4.0 4.5 
#_dblにしたのでnumericのベクトルで平均がかえってくる

slide_index()

slide()では、windowの幅を指定するさいに、系列はすべて等間隔で並んでいるという想定が暗黙裡になされていた
slide_indexは()、日付や時間、その他数値などの変数で系列上の位置が与えられているとき、その変数の値を利用してwindow幅を指定することができるのである。

たとえば、名古屋グランパス2022シーズンnの最後10試合を抽出すると、代表weekがあったりしたので
以下のように試合ごとの時間間隔がかなりマチマチになっていることがわかる。

こういうときに、過去N試合じゃなくて、「過去1か月」の平均得点を知りたい・計算したいときは、slide_index()が役に立つ

library( lubridate) #日付をあつかうための有能package 

#名古屋のラスト10試合を抽出
nge_last <- dfJ22 %>% filter( Club == "nago") %>% arrange( Date) %>% tail(10)

## 過去1か月の対戦相手をとってくる ##
slide_index( .x = nge_last$Opponent, .i = nge_last$Date,
             .f = ~.x, .before = months(1)) 

# 
# [[1]]
# [1] "iwat"
# 
# [[2]]
# [1] "iwat" "g-os"
# 
# [[3]]
# [1] "iwat" "g-os" "fuku"
# 
# [[4]]
# [1] "iwat" "g-os" "fuku" "kobe"
# 
# [[5]]
# [1] "iwat" "g-os" "fuku" "kobe" "ka-f"
# 
# [[6]]
# [1] "iwat" "g-os" "fuku" "kobe" "ka-f" "hiro"


## 「過去1か月の得点点の平均」を数値ベクトルとして取得 ##
slide_index_dbl( .x = nge_last$Goal_For, .i = nge_last$Date,
             .f = mean, .before = months(1)) 
# [1] 1.0000000 0.5000000 1.3333333 1.0000000 1.0000000
# [6] 0.8333333 0.8000000 0.4000000 1.0000000 1.3333333

まぁ例があまり適切じゃなかったけど、たとえば追跡パネルみたいなデータがあって途中離脱→復帰みたいなサンプルが含まれているときに、
単なるラグ変数をとるとおかしくなったりするので、そういうときに便利なのではなかろうか。

slide_period()

slide_indexと似てるんだけど、非なるもの。
indexとなる変数をより上位の単位にまとめて、その単位でwindowをつくる。
例)日付をIndexにして、「その月」の平均売上を算出する

一瞬、floor_date() + group_by()でよくね?ってなるけど、「当月+前月」みたいな感じで、
以下のように月単位でのwindow指定がえらい簡単にできるところに優位性があるよ、とのこと

# Vignetteからの抜粋

monthly_summary <- function(data) {
  summarise(data, index = max(index), sales = sum(sales))
}

slide_period_dfr(
  big_company,
  big_company$index,
  "month",
  monthly_summary
)
#> # A tibble: 4 × 2
#>   index      sales
#>   <date>     <dbl>
#> 1 2019-08-31     6
#> 2 2019-09-03    16
#> 3 2019-11-30    10
#> 4 2019-12-04    19


## 例:当月&前月

slide_period_dfr(
  big_company,
  big_company$index,
  "month",
  monthly_summary,
  .before = 1
)
#> # A tibble: 4 × 2
#>   index      sales
#>   <date>     <dbl>
#> 1 2019-08-31     6
#> 2 2019-09-03    22
#> 3 2019-11-30    10
#> 4 2019-12-04    29


三番目の引数(.period)がまとめる単位になるんだけど、そこに指定できるのは以下の文字列。
分単位の時刻データを時間単位にまとめる、とかもできる。
※"yday"とか"mday"とかはじめてきいたけど、わかりやすく解説されている記事があった。月初めや年はじめからの起算日数と。

tidyな処理との組み合わせなど

我々が扱うデータというのはしばしば単一系列ではなく、複数のユニットに紐づく複数系列だったりする。
各支社の売上の系列だったり、各国の気温変動だったり、各クラブの得点だったり...という具合にだ。

そういうときには、tidyverseの諸々の便利関数と組み合わせる。
ためしに、J1の2022年でデータで、クラブごとに「前後10日の平均勝点」を各節時点で求めてみる。

dfJ22_2 <-
 dfJ22 %>% 
  group_by( Club) %>% #クラブごとにグループ化 
  arrange( Date) %>% #日付昇順にする
  nest() %>% #nestする
  mutate( Goal_For_M = map( data , ~ 
                            slide_index_dbl(.x = .$Goal_For , .i = .$Date , .f = mean ,
                                            .before = days(10), .after= days(10))) ) %>%
            select(-data) %>% unnest( Goal_For_M) %>% as.data.frame()

head(dfJ22_2)

## 名古屋のラスト10試合で確認

dfJ22_2 %>% filter( Club=="nago") %>% tail(10) %>% bind_cols( nge_last %>% select( -Club)) %>% 
  select( Club , Date , Goal_For , Goal_For_M)

#   Club       Date Goal_For Goal_For_M
# 1  nago 2022-08-19        1  0.3333333
# 2  nago 2022-08-27        0  1.3333333
# 3  nago 2022-09-03        3  1.0000000
# 4  nago 2022-09-10        0  1.0000000
# 5  nago 2022-09-14        1  0.3333333
# 6  nago 2022-09-17        0  0.3333333
# 7  nago 2022-10-01        0  0.5000000
# 8  nago 2022-10-08        1  0.5000000
# 9  nago 2022-10-29        2  1.5000000
# 10 nago 2022-11-05        1  1.5000000

たとえば9/10のところには、きちんと前後10日(3+0+1+0)の平均(1.0点)が入っており、求める挙動になっている。


だいたい使い方は以上である。
2020年リリースということで、COVID-19下で脚光を浴びたパッケージらしいんですが、普通に縦断データの分析とかをするのに便利だと思いました


www.youtube.com

Enjoy!!