Correlation
Correlation batata hai ki do numbers saath-saath kaise badalte hain. Value −1 se +1 ke beech hoti hai:
Value | Matlab |
|---|---|
+1 ke paas | Strong positive — ek badhe to doosra bhi badhe |
0 ke paas | Koi linear rishta nahi |
−1 ke paas | Strong negative — ek badhe to doosra ghate |
Example
import numpy as np
import pandas as pd
from scipy import stats
rng = np.random.default_rng(10)
ad_spend = rng.uniform(10, 100, size=50) # hazaar Rs
sales = 200 + 5 * ad_spend + rng.normal(0, 60, size=50)
discount = rng.uniform(0, 30, size=50) # random, koi rishta nahi
df = pd.DataFrame({"ad_spend": ad_spend, "sales": sales, "discount": discount})
print(df.corr().round(2))
r, p = stats.pearsonr(df["ad_spend"], df["sales"])
print(f"\nad_spend vs sales: r = {r:.3f}, p-value = {p:.2e}")
Output
ad_spend sales discount
ad_spend 1.00 0.93 0.01
sales 0.93 1.00 0.06
discount 0.01 0.06 1.00
ad_spend vs sales: r = 0.928, p-value = 3.78e-22
Correlation ≠ Causation. Garmi me ice-cream ki sale aur doobne ki ghatnayein dono badhti hain — par ice-cream doobne ki wajah nahi hai. Dono ke peeche teesri cheez hai: garmi. Kisi cheez ko 'wajah' kehne ke liye controlled experiment (jaise A/B test) chahiye.
Hypothesis testing kya hai?
Hum data se kisi daave ko check karte hain. Do hypotheses banti hain:
- Null hypothesis (H₀) — koi farq nahi hai / koi effect nahi hai. (Default maan ke chalte hain.)
- Alternative hypothesis (H₁) — farq hai / effect hai.
p-value = agar H₀ sach hota, to itna (ya isse zyada) farq sirf chance se dikhne ki probability. Agar p-value hamare significance level (α, aam taur pe 0.05) se kam hai, to hum H₀ ko reject karte hain.
A/B test: t-test
Ek website ne naya design banaya. 200 users ko purana (A) aur 200 ko naya (B) design dikhaya aur dekha ki log site pe kitne second rukte hain. Kya naya design sach me behtar hai?
Example
design_a = rng.normal(120, 30, size=200) # seconds
design_b = rng.normal(128, 30, size=200)
print("A ka average:", round(design_a.mean(), 1))
print("B ka average:", round(design_b.mean(), 1))
t_stat, p_value = stats.ttest_ind(design_b, design_a)
print(f"t = {t_stat:.3f}, p-value = {p_value:.6f}")
if p_value < 0.05:
print("H0 reject: dono designs me significant farq hai.")
else:
print("H0 reject nahi kar sakte: farq chance se ho sakta hai.")
Output
A ka average: 115.6
B ka average: 128.7
t = 4.284, p-value = 0.000023
H0 reject: dono designs me significant farq hai.
Yaha p-value 0.000023 aaya, jo 0.05 se kam hai — yaani ye farq sirf chance ka nateeja hone ki sambhavna bahut kam hai, aur naya design sach me logon ko zyada der rok raha hai.
Chi-square test: do categories ka rishta
Kya customer ki city aur unka chuna hua plan aapas me jude hain? Category vs category ke liye chi-square test:
Example
observed = pd.DataFrame(
{"Basic": [90, 60, 50], "Premium": [30, 60, 45]},
index=["Delhi", "Mumbai", "Pune"],
)
print(observed)
chi2, p, dof, expected = stats.chi2_contingency(observed)
print(f"\nchi2 = {chi2:.2f}, dof = {dof}, p-value = {p:.4f}")
Output
Basic Premium
Delhi 90 30
Mumbai 60 60
Pune 50 45
chi2 = 18.34, dof = 2, p-value = 0.0001
p-value 0.0001 0.05 se kam hai, to hum keh sakte hain ki city aur plan ki choice aapas me jude hue hain — jaise Delhi me Basic plan zyada popular hai.
Kaunsa test kab?
Sawaal | Test | SciPy |
|---|---|---|
Do groups ke average me farq? | Independent t-test |
|
Same log, pehle vs baad me? | Paired t-test |
|
3+ groups ke average? | ANOVA |
|
Do categories ka rishta? | Chi-square |
|
Do numbers ka rishta? | Pearson correlation |
|
Type I aur Type II error
H₀ sach me sahi hai | H₀ sach me galat hai | |
|---|---|---|
H₀ reject kiya | Type I error (false positive) | Sahi decision |
H₀ reject nahi kiya | Sahi decision | Type II error (false negative) |
α = 0.05 ka matlab hai ki hum 5% Type I error ka risk lene ko taiyaar hain.