outlier

建築士、プログラミング、ライフハック、etc.

PV数を簡単に予測する方法

こんにちは。

ブログ開始から、とにかく1日1記事ということで更新してきました。そのせいか、徐々にPV数が増えてきております。
ということで、今月のPV数を簡単な方法で予測してみたいと思います。

今までのPV数の推移

今までのPV数ですが、グラフにすると以下のようになります。最初の15日間はほぼ横ばいですが、20日以降から急にアクセス数が増え始めました。 f:id:lucky-radio:20180203192539p:plain

一番簡単な直線での回帰

まずは一番簡単な回帰として、原点を通る直線でのフィッティングを行います。ここではOctaveを使ってフィッティングします。
基本的には、実際のPV数と予測PV数(=係数a×日数day)との差の二乗和を最小にする係数aを求めることになります。
 minimize : error=\sum_{i=1}^n (pv_i-a*day)^{2}

Octaveでこれを計算するには、statisticsパッケージにあるregressという関数を使うのが簡単です。

% statistics をロード  
pkg load statistics     
% 1行目に日数、2行目にPV数としたファイルからデータを読み込み  
d=load("blog_access.dat");  
% 回帰係数(直線の傾き)
a=regress(d(:,2),d(;,1));
% 近似直線
predict=a*d(:,1) ;  

以上で回帰した結果がこちら。もう少しフィッティングを良くしたいところ・・・
f:id:lucky-radio:20180203193951p:plain

高次まで考慮してみる

上の図をみると、ブログ開始初期では実際のPV数を過大評価し、後半では過小評価しているように見えます。なので、もう少し高次の次数まで考慮したほうがよさそうです。
高次の次数まで含めたフィッティングには、polyfitという関数が使えます。

predict2 = polifyt(x,y,n)

ここでnはフィッティングの次数で、今回は3次式でのフィッティングを行いました。その結果は以下の通りとなり、直線よりはマシなフィッティングとなっております。
f:id:lucky-radio:20180203195735p:plain

なお、今回の回帰から予測すると、ブログ開始45日で累計1000PVに達します。

ということで、ブログPV数を簡単に予測する方法についてでした。

(おまけ)初めてMarkdown記法を使った

実は、理系出身のわりにtexMarkdownを使ったことがなく、今回初めて使ってみました。便利だが、なかなか難しい。