月別アーカイブ: 2014年12月

PV数を予測する神の数式を発見した。かもしれない。

下図は、本サイトのPV数稼ぎ頭のページたちの週間PVの数の推移だ。
vector の指数関数回帰曲線に注目してもらいたい。

temp

通常メモリでは、PV数が少ない期間が回帰曲線にどの程度フィットしているかがわかりづらいので、下図に対数軸のグラフも示しておく。

temp

 

回帰曲線の式は f(x) = 52.0 * exp(0.119 * x) で、実際のデータが期間全体において、それにとてもよくフィットしていることがよくわかると思う。

式で重要なのは x の係数で、exp(0.119) = 1.126 なので、平均して毎週 12.6% ずつPV数が増加しているということだ。

PV数が指数関数的に増加しているのは、口コミ(この場合は人→人 ではなく、人→検索エンジン→人 というサイクル)がうまく回っていることを表すのだが、指数関数的増加が永遠に続くことはありえないので、この式は問題がある。
指数関数的増加がいつ終了するかという情報がまったく無いのだ。

そこで、指数関数回帰を8週間の移動平均のように計算してみた(8週間の移動指数関数回帰 とでも呼ぶべきか?)
そして、その結果の x の係数をグラフにしたのが下図だ。

temp

 

波はあるが、係数が徐々に減少していっているのがわかると思う。
つまり、指数関数係数は指数関数的に減少する、ということだ。
式に書けば、以下の様になる(A, B, C は正の定数)。

PV(t) = A * exp( B * exp(-C * t) * t)

これが正しければ、来年7月初め頃の係数は 0.04 程度であり、exp(0.04) = 1.041、すなわち 約4%/週 のペースでPV数が増える、という計算になるわけだ。

もちろん、実際にはそれよりかなり上下(2.7%~5.2%程度?)するが、単なる指数関数よりもかなり現実的な予測だ。

というわけで、来年1年間の指数関数係数の平均は0.04程度だと推測される。
よって、来年末時点での週間PV数は、2000 * exp(0.04)^50 = 2000 * 7.39 = 14778 と出ました。
(悲観的予想:2000*exp(0.04*2/3)^50 = 6283, 楽観的予想:2000*exp(0.04*1.5)^50 = 40171)
※ 平均のべき乗は実際のデータの積算よりも大きくなる(2×2 = 4, 2.1*1.9=3.99)ので、実際はもっと少ない数値だ。
後でちゃんと計算し直す予定。

この式が正しいかどうかは、あと半年もすれば判定できると思うが、さて、どうなりますことやら。

 

cocos2d-x v3>論理座標系の設定

以下の様に論理座標系の範囲を指定しておくと、実際のウィンドウサイズとは独立に座標を指定できて便利だぞ。

さいごの引数は、縦横比が合っていないときにどうするか、という指定だ。
「ResolutionPolicy::SHOW_ALL」を指定すると、必ず全エリアが表示される様にスケーリングされる。

#define		LOGICAL_WIDTH		800
#define		LOGICAL_HEIGHT		1280

bool AppDelegate::applicationDidFinishLaunching() {
    ....
    glview->setDesignResolutionSize(LOGICAL_WIDTH, LOGICAL_HEIGHT,
        ResolutionPolicy::SHOW_ALL); 
    ....

cocos2d-x v3>Window サイズ指定

Class/AppDelegate.cpp を以下のように修正する。

bool AppDelegate::applicationDidFinishLaunching() {
    ....
    if(!glview) {
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
		glview = GLView::createWithRect("HakoMusu", Rect(0, 0, 400*1.2, 640*1.2));
#else
        glview = GLView::create("HakoMusu");
#endif
        director->setOpenGLView(glview);
    }
    .....

ペンタブを発掘したので模写してみた

5年くらい棚に放置プレイしてたペンタブ(バンブーファン)を発掘したので、模写してみた。

元絵はこれ↓

temp

最初に描いたのがこれ↓

20141225

これを某ニコ生主にみせたら「作画崩壊はしてませんね」と言われた。
練習方法を聞くと、「同じ元絵で何度も模写するといいかもよ」、とも言われたので、再度描いてみた。↓

20141225-2

最初より少しかわいくなった気はする

20141225-3

さらにもう一回模写。今度は色もちょいと付けてみました。
毎回、女の子の雰囲気が変わりますな。

週間PV数の推移を対数目盛りにしてみた

temp

上図は、5月中旬から 12/20 までの、本サイトのPV数稼ぎ頭ページの週間PV数の推移グラフだ。
PV数のレンジが大きく、指数関数回帰との差分がわかりづらくなっているので、対数目盛りにしてみた。

temp

 

これを見ると、3~6週目 が落ち込んでいるだけで、それ以外は指数関数にうまく乗っかっているようにも見えるぞ・・・

vector 指数関数回帰係数の指数関数回帰による vector PV数予測

temp

 

vector の週間PV数のデータが32週分あるので、8週間*4 に分割し、それぞれを指数関数回帰してみた。
結果は上記の通りで、exp の x の係数が、0.151, 0.113, 0.097, 0.0514 と単調に減少していることが分かる。
つまり、今後はPV数が倍になる期間が徐々に増大していく、ということだ。

これを指数関数回帰すると、下図のようになる。

temp

この予測が正しいとすると、#33~#40 週目は exp(0.04 x) となり、8週間で約1.38倍、#41~#48 週目は exp(0.03 x) となり、1.27倍、#49~#56 週目は exp(0.02 x) なので 1.17倍、#57~#64 週目は exp(0.016 x) で 1.14倍、#65~#72 は exp(0.01 x) で 1.08倍、#73~#80 週目は exp(0.075 x) で 1.06倍となる。
で、これらを全部掛けると、1.38 * 1.27 * 1.17 * 1.14 * 1.08 * 1.06 = 2.6761 倍となる。すなわち来年末時点の vector ページの週間PV数は 2000*2.6761 = 5352.2 という計算になるわけだ。

計算し易いように 5400PVとすると、string, 時間計測はその約半分なので、合計は 10800PV/週 となる。
目標は 1万PV/day = 7万PV/週 なので、あと6万PV/週だけ不足するという計算になる。。。

さて、この予想は正しいのか?

ワードプレスを更新しようとしたらエラーが発生・解決

4.1-ja がリリースしたので、【更新】ボタンを押したら、zip はDLできたんだけど、ファイルを上書き出来ないというエラーが発生した。

いつも助けてもらっているI氏に聞いたところ、wordpress のオーナーを変えればよいとご教授していただき、

chown -R www-data wordpress

を実行したところ、無事 4.1-ja にアップデート出来たでござるぞ。

12/20までの週間PV数の推移と今後の予測

temp

上図はここ12週間の本サイトの週間PV数の推移グラグだ。
「はてぶ」によるPV数急増の効果はほぼ無くなり、通常状態に戻った感じだ。
先週のPV数は、その3週間前より約30%増加して 1,2937PVとなった。
これから2週間は年末年始なので、PV数は一時的に減少すると予想される。

temp

 

上図は本サイトのPV数稼ぎ頭ページの週間PV数の推移グラフだ。
vector + string + 時間計測で 約4000PVなので、全体の約30%にもなっている。
C++プログラミング入門ページは 203Users もブックマークされたのだが、PV数の減衰が予想したよりも大きく、予想の1000PV/週には全然達しなかった。
その他はすべて過去最高をマークしている。
vector は8週間前に約1000PV/週になり、今回約2000PV/週となった。年末年始があるのでその分を割り引いて、約10週間後には約4000PV/週となる勢いだが、はたしてそれが続くのかどうかだ。

temp

上図は、最近追加したページの週間PV数の推移。
「C++ クラス入門」のページも「はてぶ」の影響がほぼ無くなり、安定的になった。
list, map は指数関数的増加ペースに乗っかっているようだ。

temp

ちなみに、上図は稼ぎ頭ページの最初の10週間の週間PV数をプロットしたグラフ。
list は 、50PV/週程度から始まり8週間で200PV/週に達っしており、vector のそれと非常によく似ていることが分かる。そうであれば、list のPV数もあと12週間もすれば1000PV/週に達すると期待していいのだろうか?
list の検索数が vector ほどあるとはちょっと考えづらいのだが、どうなんだろう?

あと、指数関数回帰の式をよく見ると、exp の中の x の係数が現在より有意に大きいことがわかる。
これは、PV数にはなんらかの現実的上限値があり、それ以上には増え様がないので、減衰成分が存在するということだ。従って、現状は約8週間でPV数が倍になっているが、その期間は徐々に増大していくということである。

 

箱入り娘に関するメモ

temp

  • 図1 は標準的な「箱入り娘」の初期状態だ。
  • マス目の数は 4×5 = 20
  • 各ピースの種別を8ビットで表せば、合計20byteとなる
  • 各ピースを32bit ビットボードで表せば、4*10 = 40 byte となる
  • 状態をハッシュ化するには、左上から順にピース番号を並べるとよい
    • (空欄を含めた)11桁のタイプ列で充分
    • 3bit * 11 = 33bit , または 5^11 = 4.88 * 10^7