π€¨ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π€ΠΈΡΠ΅ΡΠ° Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ Π΄ΠΎΠ²Π΅ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ ΠΠΈΡΡΠΎΠ½Π°
ΠΠΎΡΡΠ΅Π»ΡΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΡΡΠΎΠΈΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ, ΠΎΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ ΠΈΠ»ΠΈ Π±ΠΈΠ·Π½Π΅ΡΠΎΠ²ΠΎ ΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Ρ βοΈ
ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ np.corrcoef(a, b)[0,1] Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
ΠΡ ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ Π½ΠΈΠΆΠ΅ π½ `import numpy as np r = (np.cov([a,b], bias=True) / np.sqrt(np.var(a) * np.var(b)))[0][1]
ΠΡΠΎ Ρ ΠΎΡΠΎΡΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΡΠΎΡΠ΅ΡΠ½ΡΡ ΠΎΡΠ΅Π½ΠΊΡ Π½Π° Π²ΡΠ±ΠΎΡΠΊΠ΅. ΠΠΎ! ΠΡ ΠΆΠ΅ Π½Π΅ Π·Π½Π°Π΅ΠΌ ΠΈΡΡΠΈΠ½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ° ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ Π³Π΅Π½Π΅ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΠΈ (ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΡΠ΅Π΄Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ). ΠΡΡ ΠΎΠ΄: ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΡΠΎΠΈΠΌ Π΄ΠΎΠ²Π΅ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π·Π½Π°ΡΠΈΠΌΠΎΡΡΠΈ alpha.
ΠΠΎΡΡΠ΅Π»ΡΡΠΈΡ 0.8 Π·Π²ΡΡΠΈΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎ, Π½ΠΎ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΡ Π² Π½Π΅ΠΉ ΡΠ²Π΅ΡΠ΅Π½Ρ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ?
ΠΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ?
1. ΠΠ½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ: Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ»ΡΠ½ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Ρ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠ΅, Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΠΎΠΈΡΠΊΡ ΠΏΡΠΎΠΊΡΠΈ-ΠΌΠ΅ΡΡΠΈΠΊ Π² π 2. Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. 3. Π π» Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ΅ΡΡΠΈΠΊΠΎΠΉ... 4. ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΠΌΠ΅ΡΡΠΈΠΊ. ΠΡΠ»ΠΈ Π½Π°ΡΠ°Π»Π° ΡΠ²ΡΠ·Ρ ΡΠ°Π·ΡΠ΅Π·ΠΆΠ°ΡΡΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΠΎΡΡ.
ΠΠΈΠΆΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π€ΠΈΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΈΠΆΠ΅ ΠΊ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ. Π‘Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ Π΄Π²Π΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ Ρ ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠ΅ΠΉ, ΡΠ°Π²Π½ΠΎΠΉ 0.8. ΠΠ»Ρ Π½ΠΈΡ ΠΏΠΎΡΡΠΈΡΠ°Π΅ΠΌ Π΄ΠΎΠ²Π΅ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π€ΠΈΡΠ΅ΡΠ° Π½Π° Python π `from scipy.stats import norm import numpy as np
np.random.seed(42)
n = 10000 rho = 0.8
mean = [0, 0] cov = [[1, rho], [rho, 1]]
x, y = np.random.multivariate_normal(mean, cov, size=n).T
r = np.corrcoef(x, y)[0, 1]
def fisher_ci(r, n, alpha=0.05): z = np.arctanh(r) se = 1/np.sqrt(n-3) z_crit = norm.ppf(1-alpha/2) lo = np.tanh(z - z_critse) hi = np.tanh(z + z_critse) return lo, hi
lo, hi = fisher_ci(r, n) print(f"ΠΠΎΠ²Π΅ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ ΠΠΈΡΡΠΎΠ½Π°: [{lo:.3f}, {hi:.3f}]")
ΠΠ»Ρ Π‘ΠΏΠΈΡΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΠ΅Π½Π΄Π°Π»Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΡΡΡΡΡΠ°ΠΏ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΡ...
ΠΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ°Π·Π±ΠΎΡ β ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ΅ΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ π) Π±ΡΠ²Π°ΡΡ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ β ΡΡΠ°Π²ΡΡΠ΅ 100 πΊ****, ΡΠΎΠ±Π΅ΡΡ ΠΏΠΎΠ΄Π±ΠΎΡΠΊΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ Π Π΅ΡΠ΅ Π½Π΅Π΄Π°Π²Π½ΠΎ Ρ ΠΌΠ΅Π½Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΡΡ ΠΠ‘ Π² π, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΏΡΠΎ ΡΡΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ, ΡΡΠ°Π²ΡΡΠ΅ 100 π @zasql_python``