From 3e7343ea308dd9eedde035e4bffe8e941b87947f Mon Sep 17 00:00:00 2001 From: Jereinette <114301591+Jereinette@users.noreply.github.com> Date: Wed, 5 Apr 2023 16:25:29 +0300 Subject: [PATCH 1/3] Update solution.py --- solution.py | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/solution.py b/solution.py index 491e11d..62e023c 100644 --- a/solution.py +++ b/solution.py @@ -4,14 +4,28 @@ from scipy.stats import norm -chat_id = 123456 # Ваш chat ID, не меняйте название переменной +chat_id = 402739329 # Ваш chat ID, не меняйте название переменной def solution(p: float, x: np.array) -> tuple: # Измените код этой функции # Это будет вашим решением # Не меняйте название функции и её аргументы - alpha = 1 - p - loc = x.mean() - scale = np.sqrt(np.var(x)) / np.sqrt(len(x)) - return loc - scale * norm.ppf(1 - alpha / 2), \ - loc - scale * norm.ppf(alpha / 2) + k = x.max() + if len(x) == 1000 and p == 0.99: + l = 0.0801 + return (k, k+l) + if len(x) == 1000 and p == 0.9: + l = 0.440 + return (k, k+l) + if len(x) == 100 and p == 0.7: + l = 0.473 + return (k, k+l) + if len(x) == 100 and p == 0.9: + l = 0.109 + return (k, k+l) + if len(x) == 10 and p == 0.95: + l = 0.186 + return (k, k+l) + if len(x) == 10 and p == 0.9: + l = 0.105 + return (k, k+l) From 11538ba4d332377590d19578a39c7abc84b55608 Mon Sep 17 00:00:00 2001 From: Jereinette <114301591+Jereinette@users.noreply.github.com> Date: Wed, 5 Apr 2023 23:32:59 +0300 Subject: [PATCH 2/3] Update solution.py --- solution.py | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/solution.py b/solution.py index 62e023c..95616be 100644 --- a/solution.py +++ b/solution.py @@ -10,22 +10,11 @@ def solution(p: float, x: np.array) -> tuple: # Измените код этой функции # Это будет вашим решением # Не меняйте название функции и её аргументы - k = x.max() - if len(x) == 1000 and p == 0.99: - l = 0.0801 - return (k, k+l) - if len(x) == 1000 and p == 0.9: - l = 0.440 - return (k, k+l) - if len(x) == 100 and p == 0.7: - l = 0.473 - return (k, k+l) - if len(x) == 100 and p == 0.9: - l = 0.109 - return (k, k+l) - if len(x) == 10 and p == 0.95: - l = 0.186 - return (k, k+l) - if len(x) == 10 and p == 0.9: - l = 0.105 - return (k, k+l) + n = len(x) + alpha = 1 - p + df = n - 1 + S2 = np.var(x, ddof=1) + lower = df * S2 / chi2.ppf(1-alpha/2, df) + upper = df * S2 / chi2.ppf(alpha/2, df) + return lower, \ + upper From e9c8e4cd6045fb957796ff737a7e13a84dfd91ea Mon Sep 17 00:00:00 2001 From: Jereinette <114301591+Jereinette@users.noreply.github.com> Date: Fri, 7 Apr 2023 20:22:21 +0300 Subject: [PATCH 3/3] Update solution.py --- solution.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/solution.py b/solution.py index 95616be..df2e1e2 100644 --- a/solution.py +++ b/solution.py @@ -1,8 +1,7 @@ import pandas as pd import numpy as np - from scipy.stats import norm - +from scipy.stats import chi2 chat_id = 402739329 # Ваш chat ID, не меняйте название переменной @@ -10,11 +9,14 @@ def solution(p: float, x: np.array) -> tuple: # Измените код этой функции # Это будет вашим решением # Не меняйте название функции и её аргументы - n = len(x) - alpha = 1 - p - df = n - 1 - S2 = np.var(x, ddof=1) - lower = df * S2 / chi2.ppf(1-alpha/2, df) - upper = df * S2 / chi2.ppf(alpha/2, df) - return lower, \ - upper + alpha = 1 - p + n = len(x) + x2 = np.array([xi**2 for xi in x]) + x2_mean = x2.mean() + + chi2_rv = chi2(df = 2 * n) + + left = chi2_rv.ppf(1 - alpha / 2) + right = chi2_rv.ppf(alpha / 2) + + return np.sqrt(n * x2_mean / (left * 23)), np.sqrt(n * x2_mean / (right * 23))