TwitterなどのSNSを利用していると、色々な動機でフォロワーを増やしたくなりますよね!
フォロワーを増やす方法のひとつに、ツイートにたくさんいいねをしていく方法があります。
でも、一体何人にいいねをすればいいのか分からず、闇雲にいいねをしていくのは辛いですよね、、、
そんな時には統計学を使えば見通しを持つことができます!
二項分布の応用
まず、いいねをした人の数といいねをした人の中でフォロワーになった人数を数えます。
例えば、今日一日で100人にいいねをして三日後に何人フォロワーが増えたか集計するわけです。
次に、増えたフォロワーの数をいいねをした人の数で割り、いいねをした人がフォロワーになった確率を求めてください。100人にいいねをして3人フォロワーが増えたなら、確率は 3 / 100 = 0.03です。この確率を利用して何人にいいねをしないといけないか計算することができます!
いいねを押すとフォロワーが増える、増えないのどちらかであることから、この問題を二項分布によって表すことができ、Twitterでいいねをしてフォロワーが少なくとも一人増える確率を95%以上にするには何人にいいねしないといけないかを考えます。
フォロワーになった人の数をX、いいねをしてフォロワーになる確率を0.03、n人にいいねをしたとすると、X~B(n, 0.03)。
フォロワーが少なくとも一人増える確率を95%以上にするので、
\begin{align}
P(X\geqq1)\geqq0.95\\
1-P(X=0)\geqq0.95\\
1-(1-0.03)^n\geqq0.95\\
(0.97)^n\leqq0.05\\
n\log0.97\leqq\log0.05\\
n\geqq\frac{\log0.05}{\log0.97}\\
n\geqq98.352
\end{align}
ゆえに、99人以上で少なくとも一人フォロワーが増える。
上の式をPythonでプログラムすると、、、
import cmath
import math
input_followed_probability = input('いいねをした人がフォロワーになった確率を小数で入力してください(例 8%→0.08:')
#今回は少なくとも一人増える確率を95%以上にしたいので、1 - 0.95 = 0.05
a = math.log10(0.05)
#真数が負の場合、mathのlog10()ではなくcmathのlog10()を使う。
b = cmath.log10(1- float(input_followed_probability))
n = a / b
#nは98.35227246335738-0jで複素数になっている。
#実部だけ取り出すためにreal属性を使う。
real = n.real
#float()に複素数を入れるとTypeError: can't convert complex to floatとなるため実部だけを代入する。
c = float(real)
#小数点以下切り上げ
m = math.ceil(c)
print(f'{m}人')
これでいいねをした人がフォロワーになった確率を小数で入力するだけで、何人にいいねをすればフォロワーが増えるかが分かります!また、いいねではなくリツイートでも同様のことができると思います。
統計学を使って効率よく目標を達成しましょう!
追記
求めた人数の解釈は、特定の期間に特定の人数にいいねをしてフォロワーの増加分を観測する作業を、100回繰り返したら、95回以上は少なくともその人数で、フォロワーが少なくとも一人増える、ということでいいのでしょうか?
統計学初学者なので解釈に自信がありません。詳しい方がいらしたら教えて頂けると幸いです(プログラミングも初心者なのでアドバイス頂けると助かります)。