0

AB テストを実行しようとしています - Web サイトのバリアント間の収益を比較します。

私たちの標準的なアプローチ (t 検定を使用) は、収益を二項式でモデル化できないため、うまくいかないように思われました。ただし、ブートストラップについて読んで、次のコードを思いつきました。

import numpy as np
import scipy.stats as stats
import random

def resampler(original_array, number_of_samples):
    sample_array = np.zeros(number_of_samples)
    choice = random.choice
    for i in range(number_of_samples):
        sample_array[i] = sum([choice(original_array) for _ in range(len(original_array))])

    y = stats.normaltest(sample_array)
    if y[1] > 0.001:
        print y
        new_y = resampler(original_array, number_of_samples * 2)
        y = new_y
    return sample_array

基本的に、「収益ベクトル」(まばらに入力されたベクトル - コンバージョンに至っていないすべての訪問者はゼロ)からランダムにサンプリングし、正規分布が得られるまで結果のベクトルを合計します。

両方のテスト グループに対してこれを実行すると、t 検定用に 2 つの正規分布量が得られます。を使用scipy.stats.ttest_indすると、ある程度妥当に見える結果を得ることができました。

ただし、この手順を実行すると、Cookie の分割にどのような影響があるのだろうと思いました (各グループが Cookie の 50% を確認することを期待していました)。ここで、次のコードを考えると、かなり予想外のことがわかりました。

x = [272898,389076,61091,65251,10060,1468815,216014,25863,42421,476379,73761]
y = [274253,387941,61333,65020,10056,1466908,214679,25682,42873,474692,73837]
print stats.ttest_ind(x,y)

出力が得られます: (0.0021911476165975929, 0.99827342714956546)

まったく重要ではありません(正しく解釈していると思いますか?)

ただし、このコードを実行すると:

for i in range(1000, 100000, 5000):
    one_array = resampler(x,i)
    two_array = resampler(y,i)
    t_value, p_value = stats.ttest_ind(one_array, two_array)
    t_value_array.append(t_value)
    p_value_array.append(p_value)

print np.mean(t_value_array)
print np.mean(p_value_array)

私が得る: 0.642213492773 0.490587258892

これらの数値の解釈方法がよくわかりません。私が知る限り、実際の Cookie 分割から正規分布を繰り返し生成しました (配列内の各数値は異なるサイトを表します)。これらのケースのそれぞれで、2 つの分布に対して t 検定を使用し、t 統計量と p 値を取得しました。

これは合法的な行為ですか?これらのテストを複数回実行しただけです。これを実行しないと、p 値と t 統計量に大きな変動が見られたからです。

この種のテストを実行する明らかな方法がありませんか?

乾杯、

マット

ps

私たちが持っているデータ: ウェブサイト 1: テスト グループ 1: 固有の Cookie: 収益 ウェブサイト 1: テスト グループ 2: 固有の Cookie: 収益 ウェブサイト 2: テスト グループ 1: 固有の Cookie: 収益 ウェブサイト 2: テスト グループ 2: 固有の Cookie: 収益 など

私たちが望むもの:

テスト グループ x はテスト グループ y を z% の確率で上回っています

(検定グループ 1 の帰無仮説 = 検定グループ 2)

ボーナス:

上記と同じですが、サイトごと、および全体的な基準で

4

1 に答える 1