A/B ਟੈਸਟ ਮਹੱਤਵਪੂਰਨਤਾ ਕੈਲਕੁਲੇਟਰ
ਆਪਣੇ A/B ਟੈਸਟ ਨਤੀਜੇ ਦੀ ਅੰਕੀ ਮਹੱਤਵਪੂਰਨਤਾ ਦੀ ਜਾਂਚ ਕਰੋ। ਦਰਸਕਾਂ ਅਤੇ ਰੂਪਾਂਤਰਣ ਦਰਜ ਕਰੋ p-ਮੁੱਲ, z-ਸਕੋਰ, ਆਤਮਵਿਸ਼ਵਾਸ ਅੰਤਰਾਲ, ਅਤੇ ਸਾਪੇਖ ਉਠਾਅ ਪ੍ਰਾਪਤ ਕਰੋ।
A/B ਟੈਸਟ ਮਹੱਤਵਪੂਰਨਤਾ ਕੈਲਕੁਲੇਟਰ
ਹਰ ਬਦਲਾਵ ਲਈ ਦਰਸਕਾਂ ਅਤੇ ਰੂਪਾਂਤਰਣ ਦਰਜ ਕਰੋ ਤਾਂ ਜੋ ਇਹ ਜਾਂਚਿਆ ਜਾ ਸਕੇ ਕਿ ਅੰਤਰ ਅਸਲ ਹੈ ਜਾਂ ਸਿਰਫ਼ ਸ਼ੋਰ।
ਨਤੀਜੇ
ਅੰਕੀ ਤੌਰ 'ਤੇ ਮਹੱਤਵਪੂਰਨ
ਅੰਤਰ ਤੁਹਾਡੀ ਚੁਣੀ ਹੋਈ ਆਤਮਵਿਸ਼ਵਾਸ ਪੱਧਰ ਤੇ ਸਮਝ ਕਾਰਨ ਹੋਣ ਦੀ ਸੰਭਾਵਨਾ ਨਹੀਂ ਹੈ।
Chance this gap is just luck — lower is stronger.
How far apart the two rates are, in standard errors.
The likely range for the true difference.
ਦਸਤਾਵੇਜ਼ੀਕਰਣ
ਇੱਕ ਮਿੰਟ ਵਿੱਚ A/B ਟੈਸਟਿੰਗ
ਤੁਸੀਂ ਇੱਕ ਬਟਨ, ਇੱਕ ਸਿਰਲੇਖ, ਜਾਂ ਇੱਕ ਚੈੱਕਆਉਟ ਪ੍ਰਵਾਹ ਬਦਲਿਆ ਹੈ। ਸੰਸਕਰਣ A ਪੁਰਾਣਾ ਹੈ, ਸੰਸਕਰਣ B ਨਵਾਂ ਹੈ। B ਬਿਹਤਰ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ — ਇਸ ਨੇ 15% ਦਰਸਕ ਤਬਦੀਲ ਕਰੇ ਬਨਾਮ A ਲਈ 10%। ਪਰ ਕੀ ਇਹ ਅੰਤਰ ਸਿਰਫ਼ ਕਿਸਮਤ ਹੋ ਸਕਦਾ ਹੈ, ਜਿਸ ਤਰ੍ਹਾਂ ਸਿੱਕਾ ਦਸ ਵਾਰ ਫਲਿਪ ਕਰਨ ਨਾਲ ਸੱਤ ਸਿਰ ਆ ਸਕਦਾ ਹੈ?
ਇਹ ਕੈਲਕੁਲੇਟਰ ਬਿਲਕੁਲ ਇਹ ਸਵਾਲ ਦਾ ਜਵਾਬ ਦਿੰਦਾ ਹੈ। ਤੁਸੀਂ ਦਰਜ ਕਰਦੇ ਹੋ ਕਿ ਕਿੰਨੇ ਮਾਮਲੇ ਹਰ ਸੰਸਕਰਣ ਦੇਖੇ ਅਤੇ ਕਿੰਨੇ ਤਬਦੀਲ ਹੋਏ, ਅਤੇ ਇਹ ਤੁਹਾਨੂੰ ਸੰਭਾਵਨਾ ਦੱਸਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਜਿਹੋ ਜਿਹੋ ਅੰਤਰ ਮਾਪਿਆ ਉਹ ਅਸਲ ਹੈ ਬਜਾਏ ਬੇਤਰਤੀਬ ਸ਼ੋਰ। ਜੇ ਇਹ ਸੰਭਾਵਨਾ ਕਾਫ਼ੀ ਬਲਵਾਨ ਹੈ ਤਾਂ ਤੁਹਾਡੇ ਕੋਲ ਜੇਤਾ ਹੈ। ਜੇ ਨਹੀਂ ਤਾਂ ਟੈਸਟ ਚਲਾਉਂਦੇ ਰਹੋ।
ਇੱਕ ਨੰਬਰ ਦੇ ਪ੍ਰਤੀ ਧਿਆਨ ਦਿਓ: p-ਮੁੱਲ: ਇੱਕ ਅੰਤਰ ਵੇਖਣ ਦੀ ਸੰਭਾਵਨਾ ਲੰਮਾ ਇਸ ਵੱਡਾ ਜੇ ਦੋਵੇਂ ਸੰਸਕਰਣ ਅਸਲ ਸਮਾਨ ਸਨ। ਛੋਟਾ p-ਮੁੱਲ (ਮਾਨੋ 0.05 ਤੋਂ ਹੇਠਾਂ) ਦਾ ਮਤਲਬ ਹੈ "ਇਹ ਸਮਝ ਨਾਲ ਬਾਹਰ ਆਉਂਦਾ ਹੈ, ਇਸ ਅੰਤਰ ਸੰਭਵ ਅਸਲ ਹੈ।"
ਇਹ ਕਿਵੇਂ ਵਰਤਿਆ ਜਾਵੇ
- ਦਰਸਕ — ਹਰ ਸੰਸਕਰਣ ਨੂੰ ਕਿੰਨੇ ਬੇਨਾਂ ਮਾਮਲੇ ਦਿਖਾਏ ਗਏ।
- ਰੂਪਾਂਤਰਣ — ਉਹਨਾਂ ਵਿਸ ਕਿੰਨੇ ਨੇ ਜੋ ਜੋ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ (ਖ਼ਰੀਦ, ਅਲਰਟ, ਕਲਿਕ) ਕੀਆ।
- ਆਤਮ-ਵਿਸ਼ਵਾਸ ਪੱਧਰ — ਬਿਰਤਾਨਨ ਨਾਮ ਮੰਨਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਸੀਂ ਕਿੰਨਾ ਸਕ-ਨਿਸਕ ਚਾਹੁੰਦੇ ਹੋ। 95% ਪ੍ਰਵਿਖ ਮਿਆਰ ਹੈ।
- ਪਰਿਕਲਪਨਾ — ਦੋ-ਪੱਖੀ ਪੁੱਛਦਾ ਹੈ "ਕੀ B ਵੱਖ ਹੈ A ਤੋਂ?" (ਸੁਰੱਖਿਅਤ, ਮਿਆਰ); ਇੱਕ-ਪੱਖੀ ਸਿਰਫ਼ ਪੁੱਛਦਾ ਹੈ "ਕੀ B ਬਿਹਤਰ ਹੈ A ਤੋਂ?" (ਜ਼ਿਆਦਾ ਸੁਸਤ ਪਰ ਤੁਹਾਨੂੰ ਦਿਸ਼ਾ ਜਤਨ ਕਰੀ ਰਜ਼ੀ ਸਾਤਣੋ)।
ਨਤੀਜਾ ਲਾਈਵ ਅਪਡੇਟ ਹਾਂਦਾ ਹੈ ਅਤੇ ਇਨਪੁਟ ਸਾਇਟ URL ਵਿੱਚ ਰੱਖੇ ਹੁੰਦੇ ਹਨ, ਇਸ ਲਈ ਤੁਸੀਂ ਕਿਸੇ ਨਤੀਜੇ ਨੂੰ ਬੁੱਕਮਾਰਕ ਜਾਂ ਬੱਂਟ ਸਕਦੇ ਹੋ। ਮੁੜ ਸਥਾਪਿਤ ਕਰੋ ਫਾਰਮ ਸਾਫ਼ ਕਰਦਾ ਹੈ; ਨਮੂਨਾ ਡਾਟਾ ਲੋਡ ਕਰੋ ਕੋਈ ਕੰਮ ਦੀ ਉਦਾਹਰਣ ਭਰਦਾ ਹੈ।
ਕੋਈ ਕੰਮ ਕੀ ਉਦਾਹਰਣ
| ਦਰਸਕ | ਰੂਪਾਂਤਰਣ | ਦਰ | |
|---|---|---|---|
| A (ਨਿਯੰਤਰਣ) | 1,000 | 100 | 10.0% |
| B (ਪਰਿਵਰਤਨ) | 1,000 | 150 | 15.0% |
ਇਹ ਇੱਕ 5 ਪ੍ਰਤਿਸ਼ਤ-ਪੁਆਇੰਟ ਸੂਪ ਲਿਫ਼ਟ ਅਤੇ ਇੱਕ +50% ਰਿਸਪੇਕਸਿਵ ਲਿਫ਼ਟ ਹੈ। ਕੈਲਕੁਲੇਟਰ ਗਿਆ ਬੁਝ 0.0007 ਦਾ p-ਮੁੱਲ ਵਾਪਿਸ ਕਰਦਾ ਹੈ — 0.05 ਨਿੱਚੇ — ਇਸ ਲਈ 95% ਤੋ-ਨਿਮੀ ਨਤੀਜਾ ਹੈ ਅੰਕਗ ਨਿਰਣਯ। ਲਗਭਗ ਤੋਰ 'ਤੇ, ਜੇ ਦੋਨੋਂ ਸਖਸਾਰਮ ਮਂਝ ਤੋ ਸਮਾਨ ਸਨ ਤੁਸੀਂ ਇਸ ਅਕਾਰ ਦਾ ਅੰਤਰ ਲਗਭਗ ਹਜਾਰ ਟੈਸਟਾਂ ਵਿਸ ਸਿੱਧ ਇੱਕ ਦਾ ਦੇਖਦੇ।
ਗਣਿਤ (ਦੋ-ਅਨੁਪਾਤ z-ਟੈਸਟ)
ਪਿੱਸੇ ਇਹ ਅਹਿ ਦੋ-ਅਨੁਪਾਤ z-ਟੈਸਟ ਜਿਹੜੇ ਮਤ ਲੱਭੁ ਪਰਿਵਤਕ ਗਣਿਤ ਵਿੱਚ ਸਿੱਖਾਏ ਜਾਂਦੇ ਰੋ ਜਿਥੋਂ ਮੁਖ A/B ਜਾਂਚਵ ਦੁਆਰਾ ਵਰਤੇ ਜਾਂਦੇ ਹਨ।
-
ਹਰਕ ਕੰਮ ਦੀ ਬਦਲ ਦਰ:
ਜਿੱਥੇ ਬਦਲਵ ਨ ਦਰਸਕ ਹਨ।
-
ਇਕੁਮਣ ਦਰ, ਮੰਨ ਲਓ (null ਪੋਰਕਲਪਨਾ ਲਈ) ਦੋਵੇ ਨਾਸ ਸਮਾਨ ਅਹਿ ਦਰ ਤੋਂ ਭਾਂਤ:
-
ਅੰਤਰ ਦੀ ਮਿਆਰੀ ਭੂਲ:
-
z-ਸਕੋਰ — ਦੋ ਦਰਾਂ ਕਿੰਨੀ ਮਿਆਰੀ ਭੂਲ ਆਉਟ ਅਲਹ:
-
p-ਮੁੱਲ ਅਹਿ ਸਮਾਂ ਜਾ ਅ ਸ ਤੇ ਆਸਾ ਹੈ। ਦੋ-ਪਾਸੜਾ: । ਇੱਕ-ਪਾਸੜਾ: ।
-
ਮਹੱਤਵਪੂਰਨ ਜਦ , ਜਿੱਥੇ (ਤਾਂ 0.05 ਨਾ 95%)।
ਕੈਲਕੁਲੇਟਰ ਇਲਾਵਾ ਇੱਕ ਤੁਰੰਤ-ਰੱਸ ਮਾਲ ਲਾਲ ਤੇ ਹੋਂ ਅੰਤਰ, ਹਿਸਾਬ ਬਿਨਾ-ਚਾਕ ਮਿਆਰੀ ਭੂਲ ਸਾ : ਸਹੀ ਰ ਸਿਮਾ। ਜੇ ਤਿਤਾਰ 0 ਹਟ ਦਿੰਦਾ ਹੈ ਨਤੀਜਾ ਮਹੱਤਵਪੂਰਨ ਹੈ।
95% ਤੋ-ਨਿਮੀ ਤੇ, ±1.96 ਦੀ ਬਾਹਰ ਇੱਕ z (ਛਾਈਵਾਂ ਪੁੱਛਾਂ, 5% ਖਾਕਾ) ਨਿਰਣਯ ਭੀ ਜਾਂਦਾ ਹੈ।
ਨਤੀਜਾ ਸਚੱਜੀ ਤੇ ਪੜੋ
- ਅੰਕੀ ਨਿਰਣਯ ਵਿਉਪਾਰ ਨਿਰਣਯ ਨਹੀਂ ਹੈ। ਇੱਕ 0.1% ਲਿਫ਼ਟ ਅੰਕੀ ਸਾਹਮਣੇ ਅਸਲ ਹੋ ਸਕਦੀ ਕਿਸੇ ਨੂੰ ਭੇਜਣ ਲਾਇਕ ਹੈ।
- ਅੱਗੇ ਓ ਸਮਾ ਰੋਕੋ। ਹਰ ਦਿਨ p-ਮੁੱਲ ਤੋ ਛਾਂ ਅਤੇ ਜਿਸੇ ਹੀ 0.05 ਨਿੱਚੇ ਵਿਛ ਉਚਾਲੂ ਝੂਠੀ-ਸਲੀ ਦਰ ਨੂੰ ਲਿਇਆ ਮਤਾ। ਬਰਾਬਰ ਸਾਈਜ਼ ਘਮਾ ਫ਼ੈਸਲਾ ਕਰਦੇ ਰਹੋ ਪ ਨਤੀਜਾ।
- ਬਰਾਬਰ-ਸਾਈਜ਼ ਨਿਯਮ ਦੇ ਮੁੱਠੀ ਨਿਗਾਹ ਰੱਖੋ। ਮਿਆਰੀ ਅਨੁਮਾਨ ਬ ਜਦ ਹਰ ਪਾਲ ਘੱਟਨਾ ~10 ਰੂਪਾਂਤਰਣ ਅਤੇ ~10 ਗੇਰ-ਰੂਪਾਂਤਰਣ ਤੁਰਵ ਭਾਕ ਹੈ। ਲਘੂ ਸੰਖਿਆ ਨਾਲ ਬਿਪਨਿਆਂ ਉੱਤੇ ਪ ਨਤੀਜੇ ਨੂੰ।
- ਤੋ-ਨਿਮੀ ≠ B ਸੁਸਆ ਹੈ ਉਚਾਲ। ਇੱਕ 95% ਤੋ-ਨਿਮੀ ਪੱਧਰ ਦਾ ਮਤਲਬ ਹੈ ਸਾ ਵਾਸ ਲੰਬੀ ਬਘ ਵਿੱਚ 5% ਤੋ ਜ਼ਿਆਦ ਗਲਤ ਇਹ ਦੀ ਪਲ ਸਠ "95% ਚਾਂਸ B ਮਾਲਾ।"
- ਇੱਕ ਜਾਂਚ, ਇੱਕ ਰੀ। ਹਜ਼ਾਰ ਰੀ ਜਾਂ ਪਰਿਵਰਤਨ ਇੱਕ ਸਾ ਜਾਂਚ ਲਨਾ ਮੌਂਜ ਵੋੜ ਹੁਲਕ; ਠੀਕ ਰਕਓ (ਮੌਜੂਦਾ Bonferroni) ਨੀ ਪੂਰਵ-ਮੋਟ ਇੱਕ ਬਣ ਭਾਟ ਤਾਂ ਜੀ ਸਾ ਆਨੀ।
ਆ ਗੀ ਗਣਨਾ ਕਰੋ
ਹਰ ਮੌਜੂਦਾ ਰਜ਼ੀ ਬਬੀ ਉਦਾਹਰਣ ਲਈ ਦੋ-ਅਲਾ p-ਮੁੱਲ ਦਾ ਗਣਿਤ ਕਰੋ।
1=2*(1-NORM.S.DIST(
2 (B2/A2 - B1/A1) /
3 SQRT(((B1+B2)/(A1+A2))*(1-(B1+B2)/(A1+A2))*(1/A1+1/A2)),
4 TRUE))
5' A1,B1 = control visitors, conversions ; A2,B2 = variation visitors, conversions
61from math import sqrt, erf
2
3def ab_pvalue(n1, x1, n2, x2, two_sided=True):
4 p1, p2 = x1 / n1, x2 / n2
5 p = (x1 + x2) / (n1 + n2)
6 se = sqrt(p * (1 - p) * (1 / n1 + 1 / n2))
7 z = (p2 - p1) / se
8 phi = lambda v: 0.5 * (1 + erf(v / sqrt(2))) # standard normal CDF
9 return 2 * (1 - phi(abs(z))) if two_sided else 1 - phi(z)
10
11print(ab_pvalue(1000, 100, 1000, 150)) # ~0.00072
121// erf via Abramowitz & Stegun 7.1.26
2function erf(x) {
3 const s = x < 0 ? -1 : 1;
4 x = Math.abs(x);
5 const t = 1 / (1 + 0.3275911 * x);
6 const y = 1 - ((((1.061405429 * t - 1.453152027) * t + 1.421413741) * t
7 - 0.284496736) * t + 0.254829592) * t * Math.exp(-x * x);
8 return s * y;
9}
10const phi = z => 0.5 * (1 + erf(z / Math.SQRT2));
11
12function abPValue(n1, x1, n2, x2, twoSided = true) {
13 const p1 = x1 / n1, p2 = x2 / n2, p = (x1 + x2) / (n1 + n2);
14 const se = Math.sqrt(p * (1 - p) * (1 / n1 + 1 / n2));
15 const z = (p2 - p1) / se;
16 return twoSided ? 2 * (1 - phi(Math.abs(z))) : 1 - phi(z);
17}
18console.log(abPValue(1000, 100, 1000, 150)); // ~0.00072
191public static double abPValue(int n1, int x1, int n2, int x2) {
2 double p1 = (double) x1 / n1, p2 = (double) x2 / n2;
3 double p = (double) (x1 + x2) / (n1 + n2);
4 double se = Math.sqrt(p * (1 - p) * (1.0 / n1 + 1.0 / n2));
5 double z = (p2 - p1) / se;
6 // Phi via the error function; erf approximated (A&S 7.1.26) separately.
7 double phi = 0.5 * (1 + erf(Math.abs(z) / Math.sqrt(2)));
8 return 2 * (1 - phi);
9}
101static double AbPValue(int n1, int x1, int n2, int x2) {
2 double p1 = (double)x1 / n1, p2 = (double)x2 / n2;
3 double p = (double)(x1 + x2) / (n1 + n2);
4 double se = Math.Sqrt(p * (1 - p) * (1.0 / n1 + 1.0 / n2));
5 double z = (p2 - p1) / se;
6 double phi = 0.5 * (1 + Erf(Math.Abs(z) / Math.Sqrt(2)));
7 return 2 * (1 - phi);
8}
91#include <cmath>
2
3double ab_pvalue(int n1, int x1, int n2, int x2) {
4 double p1 = (double)x1 / n1, p2 = (double)x2 / n2;
5 double p = (double)(x1 + x2) / (n1 + n2);
6 double se = std::sqrt(p * (1 - p) * (1.0 / n1 + 1.0 / n2));
7 double z = (p2 - p1) / se;
8 double phi = 0.5 * (1 + std::erf(std::fabs(z) / std::sqrt(2.0)));
9 return 2 * (1 - phi);
10}
111import "math"
2
3func abPValue(n1, x1, n2, x2 float64) float64 {
4 p1, p2 := x1/n1, x2/n2
5 p := (x1 + x2) / (n1 + n2)
6 se := math.Sqrt(p * (1 - p) * (1/n1 + 1/n2))
7 z := (p2 - p1) / se
8 phi := 0.5 * (1 + math.Erf(math.Abs(z)/math.Sqrt2))
9 return 2 * (1 - phi)
10}
111// erf from the `libm` crate; std has no erf.
2fn ab_pvalue(n1: f64, x1: f64, n2: f64, x2: f64) -> f64 {
3 let (p1, p2) = (x1 / n1, x2 / n2);
4 let p = (x1 + x2) / (n1 + n2);
5 let se = (p * (1.0 - p) * (1.0 / n1 + 1.0 / n2)).sqrt();
6 let z = (p2 - p1) / se;
7 let phi = 0.5 * (1.0 + libm::erf(z.abs() / 2f64.sqrt()));
8 2.0 * (1.0 - phi)
9}
101function ab_pvalue($n1, $x1, $n2, $x2) {
2 $p1 = $x1 / $n1; $p2 = $x2 / $n2;
3 $p = ($x1 + $x2) / ($n1 + $n2);
4 $se = sqrt($p * (1 - $p) * (1 / $n1 + 1 / $n2));
5 $z = ($p2 - $p1) / $se;
6 $phi = 0.5 * (1 + erf(abs($z) / sqrt(2)));
7 return 2 * (1 - $phi);
8}
91def ab_pvalue(n1, x1, n2, x2)
2 p1, p2 = x1.to_f / n1, x2.to_f / n2
3 p = (x1 + x2).to_f / (n1 + n2)
4 se = Math.sqrt(p * (1 - p) * (1.0 / n1 + 1.0 / n2))
5 z = (p2 - p1) / se
6 phi = 0.5 * (1 + Math.erf(z.abs / Math.sqrt(2)))
7 2 * (1 - phi)
8end
91# R has this built in: prop.test does the whole thing.
2prop.test(c(100, 150), c(1000, 1000), correct = FALSE)$p.value # ~0.00072
3ਸਵਾਲ ਅਤੇ ਜਵਾਬ
ਮਾਂ ਨੂੰ ਕਿੰਨੀ ਸ਼ੇਡ ਸਾਈਜ਼ ਲੁੜ ਹੈ? ਕਾਫ਼ੀ ਤਾਂ ਕਿ ਮਿਨੋ ਲਿਫ਼ਟ ਖਿੱਚਾ ਜਏ। ਘੱਟ ਤਲ ਤੇ ਪ੍ਰਯੋਕਿ ਕਾਲ ਸੈਂ ਬਦਲ ਪ੍ਰਤੀ ਪਰਿਵਰਤਨ; ਬਰਾਬਰ-ਸਾਈਜ਼ ਕਾਲਕਿਉਲੇਟਰ ਵਰਤੋ ਇਮਾਰਤ ਆਉਣੋ ਅਤੇ ਜ਼ਾਹਾਏ ਮਾਰ ਦਣ ਲਾਈਟ।
ਦੋ-ਬਿਸੜਾ ਅਲਸੋ ਇੱਕ-ਫਿਸੜਾ? ਦੋ-ਬਿਸੜਾ ਬਟ ਤਾਂ ਕਿ ਨਿਵੇਤਨ, ਪੂਰਵ-ਰਜ਼ੀ ਕਾਰਨ ਸੁਸ ਬਾਸ ਦਾ ਸ਼ੱਕ ਹੈ। ਇੱਕ-ਫਿਸੜਾ ਤੁਹਾਡੀ ਸੁਸਤਾ ਦੋਹੰ ਪਰ B ਮਰਾ ਪ੍ਰਤੀ ਪਰਿਹਾਣ ਸਰਦੀ ਕਰਦਾ ਹੈ।
ਕਿਉਂ ਕੈਲਕੁਲੇਟਰ ਤੋ-ਨਿਮੀ ਮਾਲ ਵਿਖਾਵੇ ਹੈ? ਇਹ ਸਾਹਮਣੇ ਮਾਲ ਅੰਤਰ ਦਾ ਭੂਵ ਵਿਖਾਵੇ ਹੈ, ਸਿਰਫ਼ ਜਿੰਦਰ/ਨਹੀ। ਚੌੜਾ ਮਾਲ ਜੋ 0 ਨੂੰ ਹਟ ਦਿੰਦਾ ਹੈ ਕਾਬ "ਦਾਟਾ ਉੱਠ ਨਹੀ।"
ਕੀ ਇਹ Bayesian ਹੈ? ਨਹੀਂ — ਇਹ frequentist z-ਜਾਂਚ ਸਭ ਸੁਭਸਕ ਸਿਖਲੀ ਬਲ ਤਰੀਕਾ ਹੈ। Bayesian A/B ਅਮਲ "ਸਸਮਾਭਲ B ਸ਼ਕਨ" p-ਮੁੱਲ ਜਾਂਵਲੇ ਰਿਪੋਟ; ਦੋਜ਼ ਰਿਸ਼ਤਉ, ਸ਼ਕ ਸਵਾਲਾਂ ਨੂੰ।