はてブで遊ぶ(3) -ホットエントリの総獲得ブックマーク数を予想できるか?-
またしてもはてブであれやこれやです。
前々回のエントリで、ホットエントリー入りした記事の分類を行いました。すると、ほとんどのエントリが、ホットエントリ入りしたときに爆発的にブックマークを稼ぎ、その後はじわじわとブックマークを増やしていく、ということがわかりました。
さて、ホットエントリ入りした瞬間の爆発的なブックマークの伸び(以下「初期速度」と呼ぶ)と、その後のじわじわとしたブックマークの増加(以下「長期成長速度」と呼ぶ)の間には、何か関係があるのでしょうか。単純に考えれば、初期速度が大きいエントリは、長期成長速度も大きいように思えます。そして、もしこの両者の間に関係があるとすれば、ホットエントリ入りした瞬間に、その記事がどのくらいブックマークを稼げるか、わかってしまいます。本当でしょうか。調べてみましょう。
次の図は、典型的なブックマークの時系列と、その関数によるフィッティングです。図中に示してあるように、時系列を、指数関数と一次関数の和で表します。指数関数が、開始直後のブックマークの伸びを示し、一次関数がその後のじわじわとした成長を表します。この関数を微分すると(しなくても)、初期速度と長期成長速度がわかります。これも、図中に示してあります。このようにして、時系列のフィッティングを行い、フィッティングパラメータから、初期速度と長期成長速度を計算します。

次の図が、横軸に初期速度、縦軸に長期成長速度をプロットした図です。なお、データは、2008年9月にホットエントリ入りしたデータを用いました。
えー、見事に何も関係がないように見えます。図中に両対数プロットも添えてみましたが、やっぱりバラバラ極まりない感じです。ちょっとだけ面白いのは、初期速度と長期速度は、だいたい3ケタくらい違うということです。ホットエントリの集客力を、ブックマークの速度の面から見ることができました。

このままだとあんまり面白くないので、今度は、初期速度と総ブックマーク数の関係を示します。ここでの総ブックマーク数とは、2008年の9月から2009年の10月まで、ほぼ1年の間に稼いだブックマークの数ということになります。
横軸に初期速度、縦軸に総ブックマーク数をプロットしてあります。やっぱりというかなんというか、初期速度が大きければ総ブックマーク数も大きいです。しかし、点は非常にばらついていて、初期速度から総ブックマーク数を精度よく予言するのは無理そうです。

というわけで、目の付け所が悪かったのか、あまり面白くない結果となりました。もう少し範囲を限定する、たとえば、記事をジャンルごとに分けるなどすれば、何か意味のある結果が出るかもしれません。が、面倒なのでやりません。
関連エントリ
前々回のエントリで、ホットエントリー入りした記事の分類を行いました。すると、ほとんどのエントリが、ホットエントリ入りしたときに爆発的にブックマークを稼ぎ、その後はじわじわとブックマークを増やしていく、ということがわかりました。
さて、ホットエントリ入りした瞬間の爆発的なブックマークの伸び(以下「初期速度」と呼ぶ)と、その後のじわじわとしたブックマークの増加(以下「長期成長速度」と呼ぶ)の間には、何か関係があるのでしょうか。単純に考えれば、初期速度が大きいエントリは、長期成長速度も大きいように思えます。そして、もしこの両者の間に関係があるとすれば、ホットエントリ入りした瞬間に、その記事がどのくらいブックマークを稼げるか、わかってしまいます。本当でしょうか。調べてみましょう。
次の図は、典型的なブックマークの時系列と、その関数によるフィッティングです。図中に示してあるように、時系列を、指数関数と一次関数の和で表します。指数関数が、開始直後のブックマークの伸びを示し、一次関数がその後のじわじわとした成長を表します。この関数を微分すると(しなくても)、初期速度と長期成長速度がわかります。これも、図中に示してあります。このようにして、時系列のフィッティングを行い、フィッティングパラメータから、初期速度と長期成長速度を計算します。

次の図が、横軸に初期速度、縦軸に長期成長速度をプロットした図です。なお、データは、2008年9月にホットエントリ入りしたデータを用いました。
えー、見事に何も関係がないように見えます。図中に両対数プロットも添えてみましたが、やっぱりバラバラ極まりない感じです。ちょっとだけ面白いのは、初期速度と長期速度は、だいたい3ケタくらい違うということです。ホットエントリの集客力を、ブックマークの速度の面から見ることができました。

このままだとあんまり面白くないので、今度は、初期速度と総ブックマーク数の関係を示します。ここでの総ブックマーク数とは、2008年の9月から2009年の10月まで、ほぼ1年の間に稼いだブックマークの数ということになります。
横軸に初期速度、縦軸に総ブックマーク数をプロットしてあります。やっぱりというかなんというか、初期速度が大きければ総ブックマーク数も大きいです。しかし、点は非常にばらついていて、初期速度から総ブックマーク数を精度よく予言するのは無理そうです。

というわけで、目の付け所が悪かったのか、あまり面白くない結果となりました。もう少し範囲を限定する、たとえば、記事をジャンルごとに分けるなどすれば、何か意味のある結果が出るかもしれません。が、面倒なのでやりません。
関連エントリ
- はてブで遊ぶ(1) -ホットエントリー入りした記事を時系列で分類する- ホットエントリ入りしたエントリの、ブックマーク時系列の分類をしています。適当に。
- はてブで遊ぶ(2) -ブックマーク数の統計をとってみる- ブックマーク数と、その頻度との間にべき乗則が成り立つらしいです。本エントリとはあんまり関係ありません。
- perlとgnuplotでグラフとフィッティングパラメータを大量生成する方法 本エントリでのフィッティングパラメータの生成にはこの方法を使っています。
はてブで遊ぶ(2) -ブックマーク数の統計をとってみる-
前回に引き続き、はてブのあれやこれやを調べてみます。
今回は、ブックマーク数の頻度を調べます。すなわち、あるブックマーク数を稼いでいるエントリが何個あるかを調べます。ブックマークされるページのうち、ホットエントリ入りするなどしてブックマークを稼ぐページはほんの一握りで、大多数のページはブックマークをほとんど獲得できていないと予想されます。その分布の様子がどうなっているか、実際に見てみようという目論見です。
ブックマークされている全ページから、20000ページをランダムに選択し、ブックマーク数とその頻度を調べてみました。結果が次のグラフです。横軸にブックマーク数、縦軸に頻度(というか、記事の個数)をプロットしました。なお、両対数プロットにしてあります。

すると、どうやら、記事の頻度はブックマーク数の-2乗に比例するようです。少なくとも、ブックマーク数30以下の記事に対しては、それがあてはまるようです。またべき乗か、このべき乗脳が!とか自分に言いたくなりますが、やっぱりそれなりにべき乗となっているように見えるのです。
一つ気になるのは、高ブックマーク側で、データがべき乗から大きくずれているように見えることです。単純に考えると、数百以上の莫大なブックマークを稼ぐ超人気エントリは、べき乗則が予想するよりも高確率で生成される、ということになります。もしかすると、ホットエントリー入りしたエントリーが、爆発的にブックマークを稼ぐ効果が見えているのかもしれません。
これが本当だったら面白いのですが、さすがにこのばらつきではそこまで言いきれない気がします。またこの結果は、ブックマーカーの母集団の変動を全く考えていません。そのあたりの効果もちゃんと補正しないと意味のあることは言えないでしょう。
解析手法
今回のミソは、ブックマークされたすべてのページの中から、ランダムにページを選ぶやりかたです。
実は、はてブに掲載された記事には、それぞれeidと呼ばれるIDが振られています。例えば、eidが398のページのブクマコメントは、次のURLで取得できます。
http://b.hatena.ne.jp/entry/398
最新の記事では、eidが16000000台です。そこからランダムに20000個の数字を選び、上記のようなURLにアクセスしてブックマーク数の情報を調べています。
関連記事
今回は、ブックマーク数の頻度を調べます。すなわち、あるブックマーク数を稼いでいるエントリが何個あるかを調べます。ブックマークされるページのうち、ホットエントリ入りするなどしてブックマークを稼ぐページはほんの一握りで、大多数のページはブックマークをほとんど獲得できていないと予想されます。その分布の様子がどうなっているか、実際に見てみようという目論見です。
ブックマークされている全ページから、20000ページをランダムに選択し、ブックマーク数とその頻度を調べてみました。結果が次のグラフです。横軸にブックマーク数、縦軸に頻度(というか、記事の個数)をプロットしました。なお、両対数プロットにしてあります。

すると、どうやら、記事の頻度はブックマーク数の-2乗に比例するようです。少なくとも、ブックマーク数30以下の記事に対しては、それがあてはまるようです。またべき乗か、このべき乗脳が!とか自分に言いたくなりますが、やっぱりそれなりにべき乗となっているように見えるのです。
一つ気になるのは、高ブックマーク側で、データがべき乗から大きくずれているように見えることです。単純に考えると、数百以上の莫大なブックマークを稼ぐ超人気エントリは、べき乗則が予想するよりも高確率で生成される、ということになります。もしかすると、ホットエントリー入りしたエントリーが、爆発的にブックマークを稼ぐ効果が見えているのかもしれません。
これが本当だったら面白いのですが、さすがにこのばらつきではそこまで言いきれない気がします。またこの結果は、ブックマーカーの母集団の変動を全く考えていません。そのあたりの効果もちゃんと補正しないと意味のあることは言えないでしょう。
解析手法
今回のミソは、ブックマークされたすべてのページの中から、ランダムにページを選ぶやりかたです。
実は、はてブに掲載された記事には、それぞれeidと呼ばれるIDが振られています。例えば、eidが398のページのブクマコメントは、次のURLで取得できます。
http://b.hatena.ne.jp/entry/398
最新の記事では、eidが16000000台です。そこからランダムに20000個の数字を選び、上記のようなURLにアクセスしてブックマーク数の情報を調べています。
関連記事
はてブで遊ぶ(1) -ホットエントリー入りした記事を時系列で分類する-
はてなブックマーク(以下はてブ)は、日本最大のソーシャルブックマークサイトで、独自の濃ゆい空間を作り出しています。はてブでブックマークされる記事の中で、特に人気のある記事は、人気エントリー(以下、ホットエントリーと記述)に掲載されます。
ホットエントリーには、毎日入れ替わり立ち替わり、多種多様なページが掲載されます。一過性のネタ記事やフレームから、非常に資料性の高いページまで、内容は本当に多様です。しかし実は、ブックマーク数の伸び方(ブックーマークの時系列)を見てみると、どうも各エントリがいくつかのカテゴリに分類出来るように思えるのです。
以下では、ホットエントリー入りした記事のブックマークの時系列に着目し、それを分類してみようと思います。2008年9月にホットエントリした記事+αを調べてみました。解析方法はこの記事の最後に書いてあります。その手法から、ブックマークをプライベートモードで使用している人のデータは含まれていません。
初っ端から不穏な名称ですがお許し願いたい。
このタイプは、記事の掲載直後にホットエントリー入りし、そこで爆発的にブックマークを集めるが、ホットエントリーから外れるとほとんどブックマークを獲得できないタイプです。例として、以下のページを挙げます。
4Gamer.net — [Gamefest 08#02]ダウンロードコンテンツで儲けるには? アイマス開発者が語るダウンロード販売成功の秘訣(アイドルマスター)
はてなブックマーク - 4Gamer.net — [Gamefest 08#02]ダウンロードコンテンツで儲けるには? アイマス開発者が語るダウンロード販売成功の秘訣(アイドルマスター)
実際に、どのようにブックマークされているか、時系列を見てみましょう。以下のグラフをご覧ください。横軸に時刻、縦軸に総ブックマーク数を取り、ブックマーク数がどのように伸びているかを図示してあります。この記事は、2008年9月4日に掲載され、直後ホットエントリー入りし、9月6日までにブックマークを爆発的に集めました。ところが、その後この記事をブックマークする人はほとんどおらず、グラフは横ばいとなります。

このタイプは、最初にホットエントリ入りしたときにブックマークを稼ぐけれど、その後もじわじわと少しずつブックマークされていくタイプです。例は次の記事です。
WindowsでSubversionを使う:TortoiseSVNでバージョン管理 - SourceForge.JP Magazine
はてなブックマーク - WindowsでSubversionを使う:TortoiseSVNでバージョン管理 - SourceForge.JP Magazine
これも、グラフを見てみましょう。2008年9月1日にホットエントリ入りし、数日で多数のブックマークを稼ぐところまでは、一発屋タイプと同じです。ところが、ホットエントリーから外れた後も少しずつブックマークを集め、現在では総ブックマーク数の半分程度が非ホットエントリーから得られたものです。

実際、ほとんどのエントリーが、「当てた後着実」タイプです。「一発屋」タイプはこれの亜種と言えます。ホットエントリーから外れた後の伸びがどのようなものであれ、記事が発表された直後にホットエントリー入りし、その後はそれなり、というのが基本パターンのようです。
イベントのレポートなど、鮮度が命!な記事や、新聞社の記事ページなどが、一発屋タイプに近くなる傾向があるようです。また、ソフトウェアのTipsなど、時間が経ってもその価値を失わない記事は、着実に伸びていくようです。
以下で紹介するのは、上記の基本パターンから逸脱したタイプとなります。
これは、記事(やページ)が発表された当初は少数のブックマークしか集まらなかったが、何かの拍子にホットエントリー入りするというものです。例は下記のサイトです。
9arrows.com | Ruby on Rails オープンソース
はてなブックマーク - 9arrows.com | Ruby on Rails オープンソース
最初のブックマークは、2008年7月24日になされており、そこからじわじわとブックマークが集まります。そして、なぜか9月9日にホットエントリー入りし、大ブレイクします。その後の挙動は「当てた後着実」タイプと同じです。この「下積み後ブレイク」タイプと「当てた後着実」タイプに、なぜ違いが生じるのかは、正直なところよくわかりません。もっとデータを集めれば見えてくるかもしれませんが。。

これは、ホットエントリ入り&大ブレイクとじわじわブックマークを交互に繰り返すタイプです。例として、プライベートモードを合わせると6000ブックマークオーバーの、以下の超人気エントリを挙げておきます。
東大で学んだ卒論の書き方★論文の書き方
はてなブックマーク - 東大で学んだ卒論の書き方★論文の書き方
何が起こっているかは、グラフを見れば一目瞭然かと思います。何度も何度も、年に1回くらいはホットエントリー入りしているようです。極めて資料的に価値のあるエントリでは、このようなことが起こるようです。
この記事に関して面白いのは、ホットエントリ入りするタイミングが、必ずしも周期的でないことです。卒論執筆時期に4年生が大挙してブクマ→ホットエントリ入り、の流れだと思っていたのですがそうでもないようで。よく見てみると、どの時期にもコンスタントにブックマークを集めつづけているようです。

続いては、ほとんど「当てた後着実」タイプと同じですが、ホットエントリ入りしていないにもかかわらず、ブックマークが急激に伸びているものです。例は以下のサイト。
はてなブックマーク用ブックマークレット for iPhone - sarusaruworld lab - Web Lab
はてなブックマーク - はてなブックマーク用ブックマークレット for iPhone - sarusaruworld lab - Web Lab
この記事は、2008年8月31日にホットエントリ入りし、その後しばらくは「当てた後着実」タイプとしてブックマークを集めます。「着実」タイプだと、ブックマークの伸びは一定か、もしくは徐々に減速していきます。ところが、この記事だと、2009年の6月前頃から伸びが加速します。このエントリは、iPhone用のユーティリティを扱ったものです。そして実は、iPhone 3GSの発売が2009年の6月です。iPhone 3GSの発売で、潜在的にこの記事をブックマークしうる人の数が増えた、と解釈できます。こんなところからも、iPhone人気が垣間見えたようです。iPhone欲しいです。

最後に、ホットエントリー入りはしていないけれども、多数のブックマークを獲得しているページを紹介します。Googleのトップページです。
Google
はてなブックマーク - Google
ホットエントリ入りしたとき特有のグラフの飛びはありませんが、着実に多数のブックマークを集めています。そして、ブックマークの伸びは確実に加速しています。はてブを使い慣れている人がわざわざGoogleをブックマークするとも思えませんので、この伸びは、はてブ使用者の増加を反映したもののように思えますが、確証はありません。

データの取得
はてブのページから、ブックマークした日時のデータを取得します。各エントリのHTMLページ(たとえば、はてなブックマーク - Google)では、ブックマークされた日付の情報のみ取得できます。今回のようなロングスパンでの解析ならそれで十分です。
しかし、各エントリのRSSページ(上記の例では、Google)には、分単位の時刻の情報まで記載されています。24時間より短い時間スケールを調べたいときは、こちらの情報が必要となります。本エントリ程度の時間スケールを見たい場合は、ここまでする必要はありません。しかし、別件で既にRSS取得・解析プログラムを作ってしまっていたので、今回はそれを流用してデータをまとめています。
関連記事
ホットエントリーには、毎日入れ替わり立ち替わり、多種多様なページが掲載されます。一過性のネタ記事やフレームから、非常に資料性の高いページまで、内容は本当に多様です。しかし実は、ブックマーク数の伸び方(ブックーマークの時系列)を見てみると、どうも各エントリがいくつかのカテゴリに分類出来るように思えるのです。
以下では、ホットエントリー入りした記事のブックマークの時系列に着目し、それを分類してみようと思います。2008年9月にホットエントリした記事+αを調べてみました。解析方法はこの記事の最後に書いてあります。その手法から、ブックマークをプライベートモードで使用している人のデータは含まれていません。
- 完全一発屋タイプ
初っ端から不穏な名称ですがお許し願いたい。
このタイプは、記事の掲載直後にホットエントリー入りし、そこで爆発的にブックマークを集めるが、ホットエントリーから外れるとほとんどブックマークを獲得できないタイプです。例として、以下のページを挙げます。
4Gamer.net — [Gamefest 08#02]ダウンロードコンテンツで儲けるには? アイマス開発者が語るダウンロード販売成功の秘訣(アイドルマスター)
はてなブックマーク - 4Gamer.net — [Gamefest 08#02]ダウンロードコンテンツで儲けるには? アイマス開発者が語るダウンロード販売成功の秘訣(アイドルマスター)
実際に、どのようにブックマークされているか、時系列を見てみましょう。以下のグラフをご覧ください。横軸に時刻、縦軸に総ブックマーク数を取り、ブックマーク数がどのように伸びているかを図示してあります。この記事は、2008年9月4日に掲載され、直後ホットエントリー入りし、9月6日までにブックマークを爆発的に集めました。ところが、その後この記事をブックマークする人はほとんどおらず、グラフは横ばいとなります。

- 当てたあとも着実にタイプ
このタイプは、最初にホットエントリ入りしたときにブックマークを稼ぐけれど、その後もじわじわと少しずつブックマークされていくタイプです。例は次の記事です。
WindowsでSubversionを使う:TortoiseSVNでバージョン管理 - SourceForge.JP Magazine
はてなブックマーク - WindowsでSubversionを使う:TortoiseSVNでバージョン管理 - SourceForge.JP Magazine
これも、グラフを見てみましょう。2008年9月1日にホットエントリ入りし、数日で多数のブックマークを稼ぐところまでは、一発屋タイプと同じです。ところが、ホットエントリーから外れた後も少しずつブックマークを集め、現在では総ブックマーク数の半分程度が非ホットエントリーから得られたものです。

実際、ほとんどのエントリーが、「当てた後着実」タイプです。「一発屋」タイプはこれの亜種と言えます。ホットエントリーから外れた後の伸びがどのようなものであれ、記事が発表された直後にホットエントリー入りし、その後はそれなり、というのが基本パターンのようです。
イベントのレポートなど、鮮度が命!な記事や、新聞社の記事ページなどが、一発屋タイプに近くなる傾向があるようです。また、ソフトウェアのTipsなど、時間が経ってもその価値を失わない記事は、着実に伸びていくようです。
以下で紹介するのは、上記の基本パターンから逸脱したタイプとなります。
- 下積み後ブレイクタイプ
これは、記事(やページ)が発表された当初は少数のブックマークしか集まらなかったが、何かの拍子にホットエントリー入りするというものです。例は下記のサイトです。
9arrows.com | Ruby on Rails オープンソース
はてなブックマーク - 9arrows.com | Ruby on Rails オープンソース
最初のブックマークは、2008年7月24日になされており、そこからじわじわとブックマークが集まります。そして、なぜか9月9日にホットエントリー入りし、大ブレイクします。その後の挙動は「当てた後着実」タイプと同じです。この「下積み後ブレイク」タイプと「当てた後着実」タイプに、なぜ違いが生じるのかは、正直なところよくわかりません。もっとデータを集めれば見えてくるかもしれませんが。。

- 何度もブレイクタイプ
これは、ホットエントリ入り&大ブレイクとじわじわブックマークを交互に繰り返すタイプです。例として、プライベートモードを合わせると6000ブックマークオーバーの、以下の超人気エントリを挙げておきます。
東大で学んだ卒論の書き方★論文の書き方
はてなブックマーク - 東大で学んだ卒論の書き方★論文の書き方
何が起こっているかは、グラフを見れば一目瞭然かと思います。何度も何度も、年に1回くらいはホットエントリー入りしているようです。極めて資料的に価値のあるエントリでは、このようなことが起こるようです。
この記事に関して面白いのは、ホットエントリ入りするタイミングが、必ずしも周期的でないことです。卒論執筆時期に4年生が大挙してブクマ→ホットエントリ入り、の流れだと思っていたのですがそうでもないようで。よく見てみると、どの時期にもコンスタントにブックマークを集めつづけているようです。

- 人気急上昇タイプ
続いては、ほとんど「当てた後着実」タイプと同じですが、ホットエントリ入りしていないにもかかわらず、ブックマークが急激に伸びているものです。例は以下のサイト。
はてなブックマーク用ブックマークレット for iPhone - sarusaruworld lab - Web Lab
はてなブックマーク - はてなブックマーク用ブックマークレット for iPhone - sarusaruworld lab - Web Lab
この記事は、2008年8月31日にホットエントリ入りし、その後しばらくは「当てた後着実」タイプとしてブックマークを集めます。「着実」タイプだと、ブックマークの伸びは一定か、もしくは徐々に減速していきます。ところが、この記事だと、2009年の6月前頃から伸びが加速します。このエントリは、iPhone用のユーティリティを扱ったものです。そして実は、iPhone 3GSの発売が2009年の6月です。iPhone 3GSの発売で、潜在的にこの記事をブックマークしうる人の数が増えた、と解釈できます。こんなところからも、iPhone人気が垣間見えたようです。iPhone欲しいです。

- 大御所タイプ
最後に、ホットエントリー入りはしていないけれども、多数のブックマークを獲得しているページを紹介します。Googleのトップページです。
はてなブックマーク - Google
ホットエントリ入りしたとき特有のグラフの飛びはありませんが、着実に多数のブックマークを集めています。そして、ブックマークの伸びは確実に加速しています。はてブを使い慣れている人がわざわざGoogleをブックマークするとも思えませんので、この伸びは、はてブ使用者の増加を反映したもののように思えますが、確証はありません。

データの取得
はてブのページから、ブックマークした日時のデータを取得します。各エントリのHTMLページ(たとえば、はてなブックマーク - Google)では、ブックマークされた日付の情報のみ取得できます。今回のようなロングスパンでの解析ならそれで十分です。
しかし、各エントリのRSSページ(上記の例では、Google)には、分単位の時刻の情報まで記載されています。24時間より短い時間スケールを調べたいときは、こちらの情報が必要となります。本エントリ程度の時間スケールを見たい場合は、ここまでする必要はありません。しかし、別件で既にRSS取得・解析プログラムを作ってしまっていたので、今回はそれを流用してデータをまとめています。
関連記事
perlとgnuplotでグラフとフィッティングパラメータを大量生成する方法
誰しも、人生に一度や二度、大量のデータのカーブフィッティングとグラフ出力をしなくてはならない瞬間が来ることと思います。こんな感じで。

データ数が数個でしたら、gnuplotを使って手作業で出来る仕事です。しかしこれだけ数が多いと、手作業でやりたいとは思いません。ということで、グラフとフィッティングパラメータの生成を自動化してみました。
perlからgnuplotを呼び出し、フィッティングとグラフ描画を行います。基本的には、フィッティングパラメータとグラフの出力はgnuplotに丸投げです。perlは、データファイルの列挙と、gnuplotのスクリプト生成器として使用します。
以下がコードです。
できるとわかってしまえば、なんてことない処理ではあります。
結果。
フィッティングパラメータとグラフが生成されています。今回は、1データにつきパラメータファイル1個としました。生成後に、perlで列挙して別の処理を施しています。
これでデータファイルが1000個あっても怖くないですね!

いままで、仕事で大量のデータを扱う機会には恵まれ(?)なかったので、ブログのネタ用データの処理手法として考えてみました。本職の人は大量データのフィッティングしたくなるとき、どうやって処理してるんだろう。

データ数が数個でしたら、gnuplotを使って手作業で出来る仕事です。しかしこれだけ数が多いと、手作業でやりたいとは思いません。ということで、グラフとフィッティングパラメータの生成を自動化してみました。
perlからgnuplotを呼び出し、フィッティングとグラフ描画を行います。基本的には、フィッティングパラメータとグラフの出力はgnuplotに丸投げです。perlは、データファイルの列挙と、gnuplotのスクリプト生成器として使用します。
以下がコードです。
できるとわかってしまえば、なんてことない処理ではあります。
#!/usr/bin/perl
use strict;
use warnings;
my @filelist;
my $filename;
my $pltfile;
my $result;
#gnuplotのスクリプトファイル
$pltfile = "__plotfile__.plt";
#データファイルを列挙します
@filelist = glob("*.dat");
foreach $filename (@filelist){
#ここから、gnuplotのスクリプトファイルを生成します。
open (PLTFILE,"> $pltfile");
#gnuplotのprintの出力先をファイルに指定します。
#これがないと、printはSTDERRに出力されます。
print PLTFILE "set print \"$filename.param\"\n";
#誤差も出力します。
print PLTFILE "set fit errorvariables\n";
#適当な関数でフィッティングします。
print PLTFILE "t=1;v=0.001;a=-1;c=1\n";
print PLTFILE "f(x)=a*exp(-(x/t))+v*x+c\n";
print PLTFILE "fit f(x) \"$filename\" us 1:2 via t,v,a,c\n";
#パラメータが指定されたファイルに出力されます。
#誤差を出力しておくと、フィッティングがうまくいかないデータの選別に役立ちます。
print PLTFILE "print t,v,a,c,t_err,v_err,a_err,c_err\n";
#グラフの出力先をファイルにします。
print PLTFILE "set output \"$filename.eps\"\n";
#eps形式で出力します。
print PLTFILE "set term post enh color\n";
#グラフがファイルに書き込まれます。
print PLTFILE "plot f(x) ,\"$filename\" us 1:2\n";
print PLTFILE "exit\n";
#ここまで、gnuplotのスクリプトファイルでした。
close (PLTFILE);
#gnuplotを実行します。
#上で作成したスクリプトファイルを読み込むように指定します。
#フィッティングパラメータとグラフの出力は勝手にgnuplotがやってくれます。
$result=`gnuplot $pltfile`;
}
結果。
フィッティングパラメータとグラフが生成されています。今回は、1データにつきパラメータファイル1個としました。生成後に、perlで列挙して別の処理を施しています。
これでデータファイルが1000個あっても怖くないですね!

いままで、仕事で大量のデータを扱う機会には恵まれ(?)なかったので、ブログのネタ用データの処理手法として考えてみました。本職の人は大量データのフィッティングしたくなるとき、どうやって処理してるんだろう。
Googleサジェストがフィルタリングされていることに今気づいた
タイトルのとおりです。Googleサジェストがある種の単語をフィルタリングしていることにいま気づきました。。
例えば。
ワクテカしながらこんな感じで検索ワードを打ち込むわけです。この時点で、正直、アレ?という結果なのですけれども。

勇んで変換キーを叩くと、あれあれ?Google先生なにやってんすか。

まあ、上のは確かに昨今よろしくないキーワードだったかもしれません。もう少し一般的な単語に切り替えましょう。ここまでは、まあ違和感があるけどよろしい。

しかし。残念賞。

表示設定でフィルタリングを切っても、だめみたいです。うーむ。とはいえ、日常生活に何の問題もないからどうでもいいといえばどうでもいいのですけれど。でも、単語の候補だけフィルタリングしても意味が無いと思うのだけれどね。
例えば。
ワクテカしながらこんな感じで検索ワードを打ち込むわけです。この時点で、正直、アレ?という結果なのですけれども。

勇んで変換キーを叩くと、あれあれ?Google先生なにやってんすか。

まあ、上のは確かに昨今よろしくないキーワードだったかもしれません。もう少し一般的な単語に切り替えましょう。ここまでは、まあ違和感があるけどよろしい。

しかし。残念賞。

表示設定でフィルタリングを切っても、だめみたいです。うーむ。とはいえ、日常生活に何の問題もないからどうでもいいといえばどうでもいいのですけれど。でも、単語の候補だけフィルタリングしても意味が無いと思うのだけれどね。

