elsur.jpn.org >

« まず選手をランダムに選んでそこから優秀な選手を選抜するより、最初から同数の選手をランダムに選抜したほうが、集団の成績は高くなる、ということが必ずあるという証明 (Hong & Page, 2014) | メイン | 読了:「聖☆おにいさん」「BLACK LAGOON」「乙嫁語り」「オリンピア・キュクロス」「3月のライオン」「イノサン」「あさひなぐ」 »

2019年1月 4日 (金)

 年末に仕事の都合で、大急ぎで読んだ奴。他にやんなきゃいけないことがいっぱいあるこのときに、調査データの標本ウェイティングなどという話を...

DeVell, M., Krosnick, J. (2010) Computing Weights for American National Election Study Survey Data. ANES Technical Report series, no. nes012427.

 複雑な標本設計の調査において標本にウェイトを付与するためにどうするか、という話を調べていると、時々みかけるのがANES(American National Election Studies)である。これはそのテクニカルペーパーで、Rのanesrakeパッケージの元文献でもある。
 今気がついたけど、第二著者は調査法研究のKrosnickだ... スタンフォードの政治学者だったのか。てっきりミシガンの社会調査の人だと思ってた。

 ちょっと意外だったんだけど、このペーパーは「ANESの公開データに付与されている標本ウェイトを我々がどうつくったか説明する」という話というより、「ANESデータを分析するみなさんのために、標本ウェイトの作り方のガイドラインを示す」という感じの内容である。著者らいわく、正しいウェイトというのはひとつではない、ウェイトは分析目的によっても異なる、とのこと。
 (突き詰めていえば仰るとおりなんだけど、でもふつう標本ウェイティングを使うのは、データ分析の目的を問うことなく、標本抽出確率の不均等性をデータ収集デザインの問題として捉えようとしているときだと思う。もし個別具体的なデータ分析目的の下で考えるんなら、標本抽出確率に影響する変数を説明変数にいれたモデルを組むんじゃなかろうかと思うんだけど、そんなことないですかね?)

 業界の人を読み手として想定した愛想のない文章で、たとえばレイキングという概念についての事前説明はない。
 えーと、レイキングとは次のような話である。たとえば、20-60代男女の調査データにおいて、男女の分布が6:4, 年代の分布が2:2:1:1:1となっている。いっぽう母集団における男女の分布は1:1、年代の分布は1:1:1:1:1である、としよう。このまま集計しちゃうと歪んじゃうので、男や若者には小さめのウェイトを与えたい。さて、ウェイトを計算するにはどうするか。通常は、性x年代の10セルについて人数を数え、母集団における分布と比べてウェイトを決める。これがセル・ウェイティング。ところがこのやり方では、母集団における性x年代の分布が必要になるし、変数がこの2つじゃなくて3つ, 4つ...と増えていったときに大変な目に遭う。そこで、まず性に適切なウェイト値を振って、集計後の男女の分布を1:1にする。次に年代に適切なウェイト値を振って、集計後の年代の分布を1:1:1:1:1にする。すると、集計後の男女の分布が1:1ではなくなるので、ウェイト値をちょっと修正して、再び1:1にする。すると集計後の年代の分布が1:1:1:1:1でなくなるので...という作業を繰り返す。これがiterative proportional fitting, 愛称rakingである。
 以前、お取引様のご担当者(実は前職の同僚)とお電話でご相談していて、上記のレイキングについて説明したところ、それって掻き集めるってことですかね?という。「英語でrakeっていうんですよ、落葉とかをこう掻き集めるの」(彼は米国暮らしが長かったのである)。「あー!そういえばホームセンターでクマデ探してたら、店員さんにレーキですねっていわれた!」「あー!」というわけで、電話口でおっさん二名、ジャニーズ並みの美しいユニゾンとなった。後で調べたところ、rakingは熊手で縦に横に掻き集めるというところから由来している呼び方らしい。

 本文では、単一の横断調査、2ウェーブ・パネル、多ウェーブ・パネルの3つについてウェイティングの手順を説明しているんだけど、今関心があるのは横断調査なので、そこだけメモする。面接調査について説明するけど、RDDでも同様、とのこと。
 箇条書きで21項目もある...さあ深呼吸...

  1. まず、層別抽出とかオーバーサンプリングとかに由来する世帯選択確率の不等性に対処するためのウェイトをつくる。各単位がそれぞれの選択段階[←多段抽出のことね]で選択される確率をかけ算し、その逆数をウェイトにする。
  2. 世帯内の対象者選択確率の不等性に対処するウェイトをつくる。対象者を世帯内でランダムに選んでいる場合なら、世帯の人数をweighting factorにする。
  3. 無回答率の不等性に対処するウェイトをつくる。無回答者についてわかるのはふつうクラスタとか地域とかだけなので、そういう変数の水準ごとに回答率をみて、違っていたら、回答率の逆数をweighting factorにする。
  4. ここからは、既知の人口パラメータで事後層別するという話。まずベンチマーク比較をする。測定誤差と項目無回答率が小さいと思われる変数群を決め、その分布(もちろん、1-3で求めたウェイトを使う)を、Current Population Survey(CPS)みたいなベンチマークと比べる。年齢、性、人種、学歴、地域、等々がよろしかろう。選挙後調査なら、得票の分布、投票率も使うべし。投票率のベンチマークはvoting-age人口における投票率じゃなくてvoting-eligible人口における投票率にすべし[ふうん...なんか事情があるんでしょうね]。
  5. 上の結果を解釈する。もしずれが小さかったら気にしない、大きかったらその変数で事後層別する。ずれが5%ポイントを超えたら後者、2%ポイントを下回ったら前者とすることが多い。その間なら...たとえば得票率や投票率のような重要なアウトカムと関連している変数とか、それ自体に関心がある変数とかだったら、ウェイティングした方がいいんじゃないですかね。
  6. とこのようにして、事後層別に用いる変数を選びます。ただし、
    • 測定が正確で、無回答率が低い変数でないとだめ。特に年収は要注意、項目回答率が95%を切ってたらやめたほうがいい。
    • 得票率と投票率をいれる場合は、いれないバージョンといれるバージョンをつくるべし。
    • 事後層別ウェイティングは一元周辺分布、ないし二元周辺分布で行う[つまり、年代の分布や性x年代の分布はベンチマークに揃えようとするけど、性x年代x人種の分布を揃えようとはしない]。二元周辺分布で行うのは、一元周辺分布のレイキング(後述)ではうまく揃わない場合、ないし、下位グループでの分析に最適化したウェイトをつくりたい場合。
    • 欠損値がある場合、もし単純な補完方法がすぐに使えて、それが良い性質を持っていることがわかっているならばそれで補完すればよい。ふつうはそんな方法はないだろうから、レイキングの際には欠損があるケースもそのまま含めておき、最終的には無回答調整のためのベースウェイトを与える。[うーん、確信が持てないけど、たぶんこういうことではないかと思う。たとえば、性x年代の事後層別ウェイトをレイキングで求めたい、しかし年代には欠損がある、としよう。レイキングでは、年代が欠損である行を、年代の分布をベンチマークと揃えるステップでは無視し、性の分布をベンチマークと揃えるステップでは無視しない。このやりかたでもすべての行になんらかのウェイトが付与されることになる。で、年代が欠損だった行からはそのウェイトを取っ払い、ステップ1-3で求めたウェイトに戻す。あれれ? ということは、性についても年代についても、最終的な分布はベンチマークとちょっとずれることになるわけ?]
    • 連続変数、6カテゴリ以上のカテゴリカル変数、5%を切るカテゴリを持つカテゴリカル変数の場合はリコード。5カテゴリまで、いずれも5%以上とする。[あああ...ここはちょっと耳が痛い...]
  7. 事後層別ウェイティングの際には、セルウェイティングじゃなくてレイキングを使うこと。
  8. レイキングのためのコードはスクラッチから書いてもいいが、StataのWESVARとかSURVWGTモジュール、RのSurveyパッケージ, SASのRAKINGマクロを使ってもよい。
  9. レイキングの手順。
    • 無回答調整済ベース・ウェイトに値を掛けて、最初の事後層別ファクターの母集団分布に合致させる。たとえば、標本では女性が60パーセント、母集団では52パーセントだったら、ウェイトは0.52/0.60=0.87。
    • さらに値を掛けて、二番目の事後層別ファクターの母集団分布に合致させる。
    • これを残りのファクターについて繰り返す。
    • それぞれのステップで、極端なウェイトはcapする(truncateする)。ウェイトの平均を1として、5を超える奴を5にする。capした行にはその旨のフラグを振っておく。なお、上はこうしてcapするけど、下はcapしなくてよろしい。
    • 最初のファクターに戻って繰り返す。ベンチマークに一致するか、変化がなくなるまで繰り返す。
  10. 修正してもう一度レイキングする。
    • capのフラグが特定の特性を持つ行に偏っている場合は、capの閾値を上げてやり直す。
    • レイキングが終わったら、つくったウェイトの下でベンチマークと比較する
    • ベンチマークとずれていたら、capの閾値を上げてやりなおす。
    • レイキングのファクターになっていない変数について、レイキングの影響を調べる。ベンチマークとのずれが大きくなっているなら、後述する修正アプローチを試す。
    • ウェイトの変動係数と、新しいウェイトの下でのデザイン効果を調べる。レイキング後のデザイン効果がレイキング前のデザイン効果を(たとえば)0.5以上超えていたら、後述する修正アプローチを試す。[デザイン効果についての説明がないので困ってしまうが、おそらくはKishの定義、「標本の分散の、同じ要素数の単純無作為標本の分散に対する比」でよいのだろう]
    • 何か特定のマイノリティ集団について調べたいのなら、そこでの変動係数も調べておく。
    • 修正アプローチ: レイキングに使うカテゴリを併合する、事後層別するファクターを削るか入れ替える、capを調整する。
  11. 最後に、ウェイトの平均を1にする。
  12. 標本全体をベンチマークと一致させるウェイトが、標本を特定の集団に絞ったときにそれをベンチマークと一致させるウェイトになるとは限らない。もし下位集団の分析が研究目的なら、その下位集団のためのウェイトをつくるべきである。手っ取り早いのは、最初から二元周辺分布に対してレイキングしておくことである(たとえば、あとで男性だけの分析をするときにも年代の分布をベンチマークに合わせたい場合は、あらかじめ性x年代の二元周辺分布に対してレイキングしておく)。
  13. うまくウェイトがつくれたら、ウェイトはふつう正確性を増大させるが、分散は大きくなる。特定のデモグラフィック・ファクターについての正確性を最大化したい場合や、頑張ってウェイトをつくってみたはいいものの結局ベンチマークとのずれが残っているという場合には、デザイン効果が大きくなっても気にしないウェイトをつくり、これをsupplimentary weightとする。つまり、capは高くし、カテゴリは細かくし、なんなら事後層別ファクターを増やしてレイキングする。[この場合、分析報告では2種類のウェイトについての集計を報告することになるのだろう。はっはっは、めんどくせえなあ]
  14. ここからはドキュメンテーションの話。データには、層別・クラスタリングの全水準がわかるように、層とかPUSとか地域とかの変数を含めること。地域は恣意的な番号でよい(その地域が実際にどの地域かがわからない形でよい)。
  15. レイキング前のベースウェイトもデータに入れておくこと。
  16. ウェイトをつくる各段階で何を使ったかを述べること。
  17. 複数種類のウェイトをデータに含める場合には、どのウェイトを使うべきか素人にもわかるように説明すること。
  18. 目標母集団の特性とサイズ、そしてレイキングで使ったすべてのベンチマークについて記述すること。ウェイトの合計を母集団サイズに揃えたい場合にはウェイト値を何倍すれば良いかを述べること。
  19. レイキングに使った変数を列挙し、それらの変数においては標本抽出誤差が意味を持たないということを説明すること。[あ、なるほど...これは当然だけど大事だ]
  20. 関心ある統計量に対するデザイン効果を報告すること。
  21. ウェイトをtruncateした場合はその方法を正確に述べること。

 ...なにか目の覚めるような斬新なアドバイスがあったりしないかと思ったけど、そういうものではなかった。
 まあとにかく、ウェイト値のトリミング(ここでいうcap)に関して明確な基準がないということがわかった。なにかの目的関数を最適化するような閾値を決めるというアプローチがありそうなものだけれど、レイキングとは相性が悪いのかもしれない。

論文:データ解析(2018-) - 読了:Devell & Krosnick (2010) American National Election Studyにおける標本ウェイティング

rebuilt: 2020年11月16日 22:53
validate this page