2008年2月10日日曜日

Perlサーベイを読み解く

以前のエントリで書いたが、Perl Survey 2007というアンケートの結果が公開されている。年齢、プログラミング年数、Perlコミュニティへのかかわり、年収など考えられるすべての情報を網羅した貴重な情報だ。

生データを見ているだけでは何もわからないので、各要素の類似度(相関係数)を計算してグラフにしてみた。相関係数は数種類定義があるが、ここではスピアマンの順位相関係数を使った(細かいことは一番下に書いた)。

年齢と相関が高い要素トップ10

年齢の高いPerlプログラマは

  • プログラミング歴が長く(1位)、Perlプログラミング歴もそこそこ長く(6位)
  • Perlの開発に参加していることが多く(2位、3位)
  • 地元以外でのPerlモンガーズやPerlカンファレンスにこの1年間に参加したことがある(5位、8位)
  • という傾向が読み取れる。

地元の集まりに参加したことがあるかどうかはランク外。つまり、PerlモンガーズとPerlカンファレンスに参加したことがあるかどうか、は年齢とあまり関係ないものの、年齢が高い人ほど地元以外の集まりに出かけていることが多い。

Perlプログラミング歴と相関の高い要素トップ10

年齢のグラフより全体的に相関係数が高めである。Perlプログラミング歴の長い人は

  • Perl以外も含めたプログラミング歴が長く(1位)
  • Perlの開発に参加し(2位、3位)
  • Perlモンガーズやカンファレンスに参加し(5位、6位、7位)
  • CPANのモジュールを開発し(10位)
  • 男である可能性が高い(4位)

プログラミングに占めるPerlの量と相関の高い要素トップ10

一見Perlプログラミング歴と似た結果だが、Perlプログラミング歴で1位だった「Perl以外も含めたプログラミング歴」はランク外に落ちた(相関係数0.1以下)。つまり、プログラミング歴とPerlの使用率は何の関係もない。

年収と相関の高い要素トップ10

年収の高い人は、

  • Perlの開発に参加しており(1位、2位)
  • 地元以外のPerlモンガーズに参加していて(4位、5位)
  • カンファレンスで発表し(6位)
  • 男性であることが多い(3位)

年齢の相関係数0.35はそれほど高くない。すなわち年収と年齢はそれほど強い相関関係にないことに注目したい。言い換えるとPerlプログラマの年収は年功序列とはいえない。

注釈

  • 普通の相関係数(ピアソンの積率相関係数)ではなく、スピアマンの順位相関係数を使ったのはバラバラな指標(Perlの開発に参加しているか:yesとnoの2値、プログラミング歴:正規分布からほど遠い整数、CPANモジュール数:大多数が0)をまとめて扱いたかったからであるが、もっといい方法があるかもしれない。
  • コンピュータネットワークの発達していない地域で傾向が違うのは避けられないため、一人当たりのGDPが上位25か国(Wikipedia参照)の在住者のみを対象にした。ルクセンブルク(lu)、アイルランド(ie)、ノルウェー(no)、米国(us)、アイスランド(is)、スイス(ch)、オランダ(nl)、デンマーク(dk)、カタール(qa)、オーストリア(at)、フィンランド(fi)、カナダ(ca)、英国(uk)、ベルギー(be)、スウェーデン(se)、UAE(ae)、シンガポール(sg)、オーストラリア(au)、ギリシア(gr)、日本(jp)、フランス(fr)、イスラエル(il)、ドイツ(de)、イタリア(it)、中国(cn)。
  • 1985年以降に生まれた人は統計から除外した。
  • 年収(任意回答)を答えなかった人は統計から除外した。
  • 以上の結果、統計の対象になったデータは2368個。

リンク

Greg氏のHacking with Greg: Charlie Brown Plays With Stats。私がこの企画を温めていたら、先に似たことをされてしまった。yesとnoで答える項目だけの集計だが、これはこれで面白い。

So with the improvements in my mind I managed to adjust it in just a few minutes. And the results where astonishing!....-ly boring. Here's the top 5...

If 'Posted to Perl Mongers list ' Then 'Subscribed to Perl Mongers list ' (With 0.995 probability)
If 'Posted to other list ' Then 'Subscribed to other list ' (With 0.990 probability)
If 'Attended conference (non-local) ' Then 'Attended conference ' (With 0.970 probability)
If 'Attended Perl Mongers (non-local)' Then 'Attended Perl Mongers ' (With 0.965 probability)
If 'Contributed to Perl 5 ' Then 'Subscribed to other list ' (With 0.882 probability)

(拙訳)

これはすごい……つまらない。項目ごとの類似度を出して、そのベスト5を出したものは
「Perlモンガーズのメーリングリストに投稿したことのある人」は99.5%の確率で「Perlモンガーズのメーリングリストに入っている」
「その他の(Perlモンガーズ以外の)メーリングリストに投稿したことのある人」は99.0%の確率で「その他のメーリングリストに入っている」
「地元以外のPerlカンファレンスに参加したことのある人」は97.0%の確率で「Perlカンファレンスに参加したことがある」
「地元以外のPerlカンファレンスに参加したことのある人」は96.5%の確率で「Perlモンガーズの会合に参加したことがある」
「Perl5の開発に参加したことがある人」は88.2%の確率で「Perlモンガーズ以外のメーリングリストに入っている」

謝辞

スピアマンの順位相関係数を求めるスクリプトはSpearman's rho test download pageからいただいた。

その他

  • 統計は素人のため、ご提案、間違いのご指摘など歓迎します。
  • グラフが英語なのはGoogle Chart APIで漢字が使えないという制限のためです。
  • 相関がどれだけ有意かというのはまた別の問題です。参考程度にご覧ください。

統計の対象にした全項目

項目名解説
整数Year of birth生まれた年。ここでは年齢と同じこと
3値Sex性別。ここでは「男」が1、「女」が0、「その他」を0.5として計算した
範囲Income年収
整数Years programming PerlPerlプログラミング歴(年数)
整数Years programming (total)Perl以外も含めたプログラミング歴(年数)
Proportion of Perlこの1年に書いたプログラム、Perlは何%?
2値Subscribed to Perl Mongers listPerlモンガーズのメーリングリストに入っている
2値Posted to Perl Mongers listこの1年にPerlモンガーズのメーリングリストに投稿した
2値Subscribed to other listその他Perl関連のメーリングリストに入っている
2値Posted to other listこの1年にその他Perl関連のメーリングリストに投稿した
2値Perlmonksこの1年にPerlmonksに投稿した
2値Contributed to websitesこの1年にその他Perlのサイトに投稿した(フォーラム、Wiki、ブログ)
2値Attended Perl Mongersこの1年にPerl Mongersのミーティングに出席した
2値Attended Perl Mongers (non-local)この1年に地元以外でPerl Mongersのミーティングに出席した(地元以外:1000km以上)
2値Attended conferenceこの1年にPerlのカンファレンスに出席した
2値Attended conference (non-local)この1年に地元以外でPerlのカンファレンスに出席した
2値Presented at conferenceこの1年にPerlのカンファレンスやミーティングで発表した
2値Contributed to CPANモジュールを発表するなどCPANに貢献したことがある
2値Contributed to Perl 5Perl5に貢献したことがある
2値Contributed to Perl 6Perl6に貢献したことがある
2値Contributed to other projectsオープンソースソフトウェア(OSS)などにPerlで貢献したことがある
2値Led other projectsOSSなどのプロジェクトを開始した、もしくはリーダーをしたことがある
2値Provided feedbackPerl関係のバグレポートなどフィードバックを送ったことがある
整数CPAN modules maintainedCPANでメンテナンスを担当しているモジュール数

0 件のコメント:

コメントを投稿