numpyp 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- numpyp-0.0.1/PKG-INFO +20 -0
- numpyp-0.0.1/README.md +6 -0
- numpyp-0.0.1/numpyp.egg-info/PKG-INFO +20 -0
- numpyp-0.0.1/numpyp.egg-info/SOURCES.txt +10 -0
- numpyp-0.0.1/numpyp.egg-info/dependency_links.txt +1 -0
- numpyp-0.0.1/numpyp.egg-info/requires.txt +2 -0
- numpyp-0.0.1/numpyp.egg-info/top_level.txt +1 -0
- numpyp-0.0.1/numpyy/__init__.py +4 -0
- numpyp-0.0.1/numpyy/see.py +253 -0
- numpyp-0.0.1/numpyy/terver.py +780 -0
- numpyp-0.0.1/setup.cfg +4 -0
- numpyp-0.0.1/setup.py +25 -0
numpyp-0.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: numpyp
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: This is the simplest module for quick work with files.
|
|
5
|
+
License: MIT
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: IPython
|
|
8
|
+
Requires-Dist: pyperclip
|
|
9
|
+
Dynamic: description
|
|
10
|
+
Dynamic: description-content-type
|
|
11
|
+
Dynamic: license
|
|
12
|
+
Dynamic: requires-dist
|
|
13
|
+
Dynamic: summary
|
|
14
|
+
|
|
15
|
+
Это надеюсь будет классной библиотекой
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
numpyp-0.0.1/README.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: numpyp
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: This is the simplest module for quick work with files.
|
|
5
|
+
License: MIT
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: IPython
|
|
8
|
+
Requires-Dist: pyperclip
|
|
9
|
+
Dynamic: description
|
|
10
|
+
Dynamic: description-content-type
|
|
11
|
+
Dynamic: license
|
|
12
|
+
Dynamic: requires-dist
|
|
13
|
+
Dynamic: summary
|
|
14
|
+
|
|
15
|
+
Это надеюсь будет классной библиотекой
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
numpyy
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
|
|
2
|
+
def z_5():
|
|
3
|
+
print(f'''
|
|
4
|
+
1) Независимые наблюдения нормально распределенной случайной величины X, описывающей
|
|
5
|
+
приращение стоимости акций некоторой компании, представлены в виде выборки (campus.fa.ru).
|
|
6
|
+
Скопируйте и преобразуйте в столбец "A" данные выборки на лист "Лист1" Excel-файла и,
|
|
7
|
+
используя Excel, очистите исходную выборку от пропусков "NA", преобразуйте её в
|
|
8
|
+
вариационный ряд. Для полученного ряда вычислите требуемые далее величины: количество
|
|
9
|
+
пропущенных значений в исходной выборке, обозначенные как "NA"; объем очищенной от
|
|
10
|
+
пропусков выборки; среднее значение; стандартное отклонение (исправленное); несмещенную
|
|
11
|
+
дисперсию; первую и третью квартиль; медиану; максимальное и минимальное значение в
|
|
12
|
+
вариационном ряду; размах выборки; исправленный эксцесс и коэффициент асимметрии
|
|
13
|
+
(формулы по умолчанию в Excel); значение ошибки выборки; границы 0.95-доверительного
|
|
14
|
+
интервала для E(X) и Var(X); количество выбросов выше и ниже нормы. Постройте на листе
|
|
15
|
+
"Лист1" гистограмму и диаграмму "ящик с усиками" для исходной выборки, очищенной от "NA"
|
|
16
|
+
и выбросов.
|
|
17
|
+
|
|
18
|
+
z_5_1(data, gamma, yr_qvant)
|
|
19
|
+
|
|
20
|
+
2) По результатам социологического исследования ответы респондентов на определенный
|
|
21
|
+
вопрос анкеты представлены в виде выборки (campus.fa.ru). Скопируйте и преобразуйте в столбец
|
|
22
|
+
"A" данные выборки на лист "Лист1" Excel-файла. Используя Excel, очистите выборку от
|
|
23
|
+
пропусков, обозначенных как "NA", и вычислите требуемые далее величины: количество
|
|
24
|
+
различных вариантов ответов респондентов, встречающиеся в очищенной выборке; объем
|
|
25
|
+
очищенной от "NA" выборки; количество пропущенных данных "NA" в исходной выборке; доля
|
|
26
|
+
респондентов, которые дали ответ "M"; границs 0.95-доверительного интервала для истинной
|
|
27
|
+
доли ответов "M". На уровне значимости 0.1 проверьте критерием согласия (Хи-квадрат
|
|
28
|
+
критерием Пирсона) гипотезу о равновероятном распределении ответов респондентов.
|
|
29
|
+
Вычислите количество степеней свободы, критическое значение статистики хи-квадрат и
|
|
30
|
+
наблюдаемое значение хи-квадрат. Сделайте вывод: есть ли основания отвергнуть гипотезу о
|
|
31
|
+
равновероятном распределении ответов. Постройте на листе "Лист2" гистограмму для исходной
|
|
32
|
+
выборки, очищенной от "NA".
|
|
33
|
+
|
|
34
|
+
z_5_2(data='1',alpha1 = 0.05, alpha2 = 0.05)
|
|
35
|
+
|
|
36
|
+
3) Ряд совместных наблюдений независимых нормально распределенных случайных величин X
|
|
37
|
+
и Y, описывающих некоторый финансовый показатель двух фирм, задан двумерной выборкой
|
|
38
|
+
(campus.fa.ru). Скопируйте данную выборку на лист "Лист3" и преобразуйте ее в столбцы "A" и
|
|
39
|
+
"B" соответственно для первой и второй фирмы. При этом связанные значения показателей
|
|
40
|
+
должны располагаться в одной строке. Используя Excel, очистите исходную выборку от
|
|
41
|
+
пропущенных данных, обозначенных как "NA", и вычислите требуемые далее величины:
|
|
42
|
+
выборочный коэффициент корреляции Пирсона между X и Y; значение P-value в проверке
|
|
43
|
+
гипотезы о равенстве средних значений показателей фирм при альтернативной гипотезе об их
|
|
44
|
+
неравенстве (без каких-либо предположений о равенстве дисперсий); значение P-value в проверке
|
|
45
|
+
гипотезы о равенстве дисперсий показателей двух фирм при альтернативной гипотезе об их
|
|
46
|
+
неравенстве. Сделайте выводы: На уровне значимости 0.05 можно ли утверждать, что средние
|
|
47
|
+
значения показателей у фирм различны? На уровне значимости 0.05 можно ли утверждать, что
|
|
48
|
+
дисперсии показателей фирм различны?
|
|
49
|
+
|
|
50
|
+
z_5_3(data, flag1, alpha1, flag2, alpha2)
|
|
51
|
+
''')
|
|
52
|
+
|
|
53
|
+
def z_2():
|
|
54
|
+
print('''№ 1.
|
|
55
|
+
В группе Ω учится 10 студентов Ω = {1, 2, ..., 10}. Пусть X(i) - 100-балльная оценка студента i ∈ Ω. Из группы Ω случайным образом 5 раз выбирается студент ω ∈ Ω. Повторный выбор допускается. Пусть ωj - студент, полученный после выбора j = 1, ..., 5. X(ωj) - его оценка. Среднюю оценку на случайный выборке обозначим X̄ = 1/5 * Σ X(ωj). Оценки в группе даны: 53, 34, 61, 58, 83, 74, 61, 87, 6, 79. Требуется найти 1) дисперсию Var(X̄); 2) центральный момент μ3(X̄).
|
|
56
|
+
''')
|
|
57
|
+
print(
|
|
58
|
+
'''№ 2. В группе Ω учится 10 студентов Ω = {1, 2, ..., 10}. Пусть X(j) — 100-балльная оценка студента i ∈ Ω. В группе Ω случайным образом 5 раз выбирается студент ω ∈ Ω. Повторный выбор не допускается. Пусть ω_j — студент, полученный после выбора j = 1, ..., 5. X(ω_j) — его оценка. Среднюю оценку на случайной выборке обозначим X̄ = (1/5) * ∑(X(ω_j)) для j от 1 до 5. Оценки в группе даны: 77, 70, 54, 51, 95, 45, 80, 72, 97, 63. Требуется найти: 1) математическое ожидание E(X̄); 2) дисперсию Var(X̄).''')
|
|
59
|
+
print('''№ 3. Распределение Баллов на экзамене до перепроверки задано таблицей:
|
|
60
|
+
|
|
61
|
+
Оценка работы | 2 | 3 | 4 | 5
|
|
62
|
+
--------------|---|---|---|---
|
|
63
|
+
Число работ | 7 | 22 | 49 | 22
|
|
64
|
+
|
|
65
|
+
Работы будут перепроверять 5 преподавателей, которые разделили все работы между собой поровну случайным образом. Пусть X̄ — средний балл (до перепроверки) работ, попавших к одному из преподавателей. Требуется найти: 1) математическое ожидание E(X̄); 2) стандартное отклонение σ(X̄).''')
|
|
66
|
+
|
|
67
|
+
print('''
|
|
68
|
+
|
|
69
|
+
№ 4. Две игральные кости, красная и синяя подбрасываются до тех пор, пока не выпадет 19 различных (с учетом цвета) комбинаций кубиков. Пусть R_i — число очков на красной кости, а B_i — число очков на синей кости в комбинации с номером i. Случайные величины X_i задаются соотношениями: X_i = 11R_i - 9B_i, i = 1,...,19. Среднее арифметическое этих величин обозначим X̄ = (1/19) * ∑(X_i) для i от 1 до 19. Требуется найти: 1) математическое ожидание E(X̄); 2) стандартное отклонение σ(X̄).''')
|
|
70
|
+
print('''
|
|
71
|
+
№ 5. Имеется 11 пронумерованных монет. Монеты подбрасываются до тех пор, пока не выпадет 257 различных (с учетом номера монеты) комбинаций орел-решка.
|
|
72
|
+
Пусть X_i — число орлов в комбинации с номером i, а X̄ = (1/257) * ∑(X_i) для i от 1 до 257 — среднее число орлов в полученных таким образом комбинациях.
|
|
73
|
+
Требуется найти: 1) математическое ожидание E(X̄); 2) дисперсию Var(X̄).''')
|
|
74
|
+
print('''
|
|
75
|
+
№ 6. Эмпирические распределения признаков X и Y из генеральной совокупности Ω = {1, 2, ..., 100} задано таблицей частот:
|
|
76
|
+
|
|
77
|
+
| Y = 1 | Y = 3 | Y = 5
|
|
78
|
+
--------------------------------
|
|
79
|
+
X = 100 | 13 | 16 | 20
|
|
80
|
+
X = 300 | 12 | 28 | 11
|
|
81
|
+
|
|
82
|
+
Из Ω случайным образом без возвращения извлекают 10 элементов. Пусть X̄ и Ȳ — средние значения признаков на выбранных элементах. Требуется найти: 1) математическое ожидание E(X̄); 2) дисперсию Var(Ȳ); 3) коэффициент корреляции ρ(X̄, Ȳ).
|
|
83
|
+
''')
|
|
84
|
+
print('''
|
|
85
|
+
№ 7. Эмпирические распределения признаков X и Y из генеральной совокупности Ω = {1, 2, ..., 100} задано таблицей частот:
|
|
86
|
+
|
|
87
|
+
X | Y = 1 | Y = 3 | Y = 5
|
|
88
|
+
--------------------------------
|
|
89
|
+
X = 200 | 10 | 15 | 16
|
|
90
|
+
X = 300 | 14 | 11 | 14
|
|
91
|
+
|
|
92
|
+
Из Ω случайным образом без возвращения извлекают 10 элементов. Пусть X̄ и Ȳ — средние значения признаков на выбранных элементах. Требуется найти: 1) математическое ожидание E(Ȳ); 2) стандартное отклонение σ(X̄); 3) ковариацию Cov(X̄, Ȳ).
|
|
93
|
+
''')
|
|
94
|
+
|
|
95
|
+
def gip_sr():
|
|
96
|
+
print('''
|
|
97
|
+
1. Пусть x = (x1, ..., x30) - реализация случайной выборки X = (X1, ..., X30) из нормального распределения N(му, 3.2^2). Проверить на уровне значимости альфа = 0.04 основную гипотезу H0: му = 1.65 против альтернативной гипотезы H1: му ≠ 1.65 с критическим множеством вида Kα = (-бесконечность, -A] ∪ [A, +бесконечность).
|
|
98
|
+
|
|
99
|
+
1) Найдите значение статистики критерия Zнабл = Z(x).
|
|
100
|
+
2) Найдите (границу) A критического множества.
|
|
101
|
+
3) Найдите P-значение критерия и сделайте выводы.
|
|
102
|
+
4) Найдите мощность W критерия для H1: му = 1.52.
|
|
103
|
+
|
|
104
|
+
Исходные данные: x =
|
|
105
|
+
(-5,641; 5,885; -1,079; 7,921; 5,669; -0,001; 9,762; 5,076; 3,167; 3,471; 1,036; 6,13; 0,419; 2,498; -1,457; 2,824; 1,725; 3,795; -3,386; -0,196).
|
|
106
|
+
''')
|
|
107
|
+
print('''
|
|
108
|
+
2. Пусть x = (x1, ..., x20) - реализация случайной выборки X = (X1, ..., X20) из нормального распределения N(му, сигма^2). Проверить на уровне значимости альфа = 0.05 основную гипотезу H0: му = 1.65 против альтернативной гипотезы H1: му ≠ 1.65 с критическим множеством вида Kα = (-бесконечность, -A] ∪ [A, +бесконечность).
|
|
109
|
+
|
|
110
|
+
1) Найдите значение статистики критерия t = Tнабл. = T(x).
|
|
111
|
+
2) Найдите (границу) A критического множества.
|
|
112
|
+
3) Найдите P-значение критерия и сделайте вывод.
|
|
113
|
+
4) Найдите мощность W критерия для H1: му = 1.52.
|
|
114
|
+
|
|
115
|
+
Исходные данные: x = (1.146, 2.958, 3.325, -0.534, 0.374, 5.293, 0.12, 1.185, 5.148, 5.351, 2.639, 1.47, -1.967, 4.96, 6.057, -0.542, 1.544, -0.243, -1.988, 2.844).
|
|
116
|
+
''')
|
|
117
|
+
|
|
118
|
+
def gip_var():
|
|
119
|
+
print('''
|
|
120
|
+
1. Пусть x = (x1, ..., x30) - реализация случайной выборки X = (X1, ..., X30) из нормального распределения N(1.65, сигма^2). Проверить на уровне значимости альфа = 0.05 гипотезу H0: сигма = 1.15 против альтернативной гипотезы H1: сигма ≠ 1.15 с критическим множеством вида Kα = (0, A] ∪ (B, +бесконечность).
|
|
121
|
+
|
|
122
|
+
1) Найдите значение статистики критерия x_2_0^2.
|
|
123
|
+
2) Найдите границы A и B критического множества и проверьте гипотезу H0.
|
|
124
|
+
3) Найдите P-значение критерия.
|
|
125
|
+
4) Найдите вероятность ошибки второго рода при сигма = 1.25.
|
|
126
|
+
|
|
127
|
+
Исходные данные: x = (-0.738, 2.94, 0.676, 0.874, 0.824, -1.162, 0.93, 2.749, 2.44, 0.591, 2.566, -0.634, 1.575, 0.886, 2.808, 0.885, 3.55, 1.322, 7.96, 3.074, 3.033, 1.228, 0.959, -0.171, 1.779, 0.062, 0.485, 0.609, -0.052, 0.487).
|
|
128
|
+
''')
|
|
129
|
+
print('''
|
|
130
|
+
2. Пусть z = (x1, ..., x30) - реализация случайной выборки X = (X1, ..., X30) из нормального распределения N(mu; sigma^2). Проверить на уровне значимости alpha = 0.05 гипотезу H0: sigma = 1.15 против альтернативной гипотезы H1: sigma ≠ 1.15 с критическим множеством вида Kα = (0;A) ∪ (B; + ∞).
|
|
131
|
+
|
|
132
|
+
1) Найдите значение статистики критерия x^2.
|
|
133
|
+
2) Найдите границы A и B критического множества и проверьте гипотезу H0.
|
|
134
|
+
3) Найдите P-значение критерия.
|
|
135
|
+
4) Найдите вероятность ошибки второго рода beta для sigma = 1.25.
|
|
136
|
+
|
|
137
|
+
Исходные данные z = (-0.738, 2.94, 0.676, 0.874, 0.824, -1.162, 0.93, 2.749, 2.447, 0.591, -0.669, -0.634, 1.573, 0.886, 2.808, 0.885, 3.55, 1.347, 1.796, 3.074, 3.033, 1.226, 0.999, -0.171, 1.779, 0.062, 0.485, 0.609, -0.062, 0.487).
|
|
138
|
+
''')
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def show(filename):
|
|
142
|
+
import importlib.resources as pkg_resources
|
|
143
|
+
from IPython.display import display, Image
|
|
144
|
+
package = "varr_0.theory"
|
|
145
|
+
filename += '.png'
|
|
146
|
+
try:
|
|
147
|
+
with pkg_resources.path(package, filename) as file_path:
|
|
148
|
+
img = Image(filename=str(file_path))
|
|
149
|
+
display(img)
|
|
150
|
+
except Exception as e:
|
|
151
|
+
print(f'Неправильное имя файла: {e}')
|
|
152
|
+
return filename
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def show_pdf(filename):
|
|
156
|
+
import importlib.resources as pkg_resources
|
|
157
|
+
from IPython.display import display, IFrame
|
|
158
|
+
package = "varr_0.theory"
|
|
159
|
+
filename += '.pdf'
|
|
160
|
+
try:
|
|
161
|
+
with pkg_resources.path(package, filename) as file_path:
|
|
162
|
+
# Создаем IFrame для отображения PDF
|
|
163
|
+
pdf_iframe = IFrame(src=str(file_path), width=1000, height=800)
|
|
164
|
+
display(pdf_iframe)
|
|
165
|
+
except Exception as e:
|
|
166
|
+
print(f'Неправильное имя файла: {e}')
|
|
167
|
+
return filename
|
|
168
|
+
|
|
169
|
+
def vec():
|
|
170
|
+
show('photo_2025-01-13_17-12-00')
|
|
171
|
+
show('photo_2025-01-13_19-55-34')
|
|
172
|
+
show('photo_2025-01-13_17-30-02')
|
|
173
|
+
show('photo_2025-01-13_17-30-02 (2)')
|
|
174
|
+
show('photo_2025-01-13_17-30-02 (3)')
|
|
175
|
+
show('photo_2025-01-13_17-30-02 (4)')
|
|
176
|
+
show('photo_2025-01-13_19-00-29')
|
|
177
|
+
|
|
178
|
+
def discr():
|
|
179
|
+
print(
|
|
180
|
+
'В первом броске участвуют 160 несимметричных монет. Во втором броске участвуют только те монеты, на которых в первом броске выпал "орел".\n'
|
|
181
|
+
'Известно, что вероятность выпадения "орла" для данных несимметричных монет равна 0,55. Найдите:\n'
|
|
182
|
+
'1) математическое ожидание числа "орлов", выпавших во втором броске;\n'
|
|
183
|
+
'2) дисперсию условного математического ожидания числа "орлов", выпавших во втором броске, относительно числа "орлов", выпавших в первом броске.')
|
|
184
|
+
show('1')
|
|
185
|
+
print(
|
|
186
|
+
'Вариант задачи 2: В первом броске участвуют 118 несимметричных монет. Во втором броске участвуют только те монеты, на которых в первом броске выпал орел. Известно, что вероятность выпадения орла для данных несимметричных монет равна 0,65. Найдите: 1) математическое ожидание числа "орлов", выпавших во втором броске; 2) математическое ожидание условной дисперсии числа "орлов", выпавших во втором броске, относительно числа "орлов", выпавших в первом броске.')
|
|
187
|
+
show('2')
|
|
188
|
+
print('В первом броске участвуют 88 несимметричных монет. Во втором броске участвуют только те монеты, на которых в первом броске выпал \'орел\'. Известно, что вероятность выпадения \'орла\' для данных несимметричных монет равна 0,7. Найдите: 1) математическое ожидание условной дисперсии числа \'орлов\', выпавших во втором броске, относительно числа \'орлов\', выпавших в первом броске; 2) дисперсию условного математического ожидания числа \'орлов\', выпавших во втором броске, относительно числа \'орлов\', выпавших в первом броске.')
|
|
189
|
+
show('3')
|
|
190
|
+
print('Средний ущерб от одного пожара составляет 4,4 млн. руб. Предполагается, что ущерб распределен по показательному закону, а число пожаров за год - по закону Пуассона. Также известно, что за 5 лет в среднем происходит 14 пожаров. Найдите: 1) математическое ожидание суммарного ущерба от всех пожаров за один год; 2) стандартное отклонение суммарного ущерба от пожаров за год.')
|
|
191
|
+
show('4')
|
|
192
|
+
print('Максимальный ущерб от страхового случая составляет 3,3 млн. руб. Предполагается, что фактический ущерб распределен равномерно от 0 до максимального ущерба, а число страховых случаев за год - по закону Пуассона. Также известно, что за 10 лет в среднем происходит 12 страховых случаев. Найдите: 1) математическое ожидание суммарного ущерба от всех страховых случаев за один год; 2) стандартное отклонение суммарного ущерба от страховых случаев за год.')
|
|
193
|
+
show('5')
|
|
194
|
+
print('Для случайной цены Y известны вероятности: P(Y=2)=0,6 и P(Y=15)=0,4. При условии, что Y=y, распределение выручки X является равномерным на отрезке [0,7y]. Найдите: 1) математическое ожидание E(XY); 2) ковариацию Cov(X,Y).')
|
|
195
|
+
show('6')
|
|
196
|
+
print('Условие задачи:\nИгральная кость и 29 монет подбрасываются до тех пор, пока в очередном броске не выпадет ровно 8 "орлов".\nПусть S – суммарное число очков, выпавших на игральной кости при всех бросках.\nНайдите:\n1) Математическое ожидание E(S);\n2) Стандартное отклонение σS.')
|
|
197
|
+
show('7')
|
|
198
|
+
|
|
199
|
+
def ms_16():
|
|
200
|
+
show('МС16_№2')
|
|
201
|
+
show('МС16_№3')
|
|
202
|
+
show('МС16_№4')
|
|
203
|
+
show('МС16_№5')
|
|
204
|
+
show('МС16_6')
|
|
205
|
+
show('МС16_7')
|
|
206
|
+
show('МС16_11')
|
|
207
|
+
show('МС16_12')
|
|
208
|
+
|
|
209
|
+
def ms():
|
|
210
|
+
print("""
|
|
211
|
+
1. В таблице представлены данные по числу сделок на фондовой бирже за квартал для 400 инвесторов:
|
|
212
|
+
|
|
213
|
+
x_i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|
|
214
|
+
n_i | 146 | 97 | 73 | 34 | 23 | 10 | 6 | 3 | 4 | 2 | 2 |
|
|
215
|
+
|
|
216
|
+
В предположении, что случайное число сделок описывается распределением Пуассона, оценить параметр λ методом моментов.
|
|
217
|
+
Определить вероятность того, что число сделок за квартал будет не менее двух, применяя, метод моментов, и непосредственно по таблице.
|
|
218
|
+
Ответ: λ = 1,535. На основе метода моментов – 46%, по таблице – 39%.
|
|
219
|
+
""")
|
|
220
|
+
print("""Пусть случайная величина 𝑋 равномерно распределена на [𝑎; 𝑏]. Найдите методом моментов оценки для параметров 𝑎 и 𝑏.""")
|
|
221
|
+
print("""3.Известно, что доля возврата по кредитам в банке имеет распределение:
|
|
222
|
+
F(x) = x^β, 0 ≤ x ≤ 1.
|
|
223
|
+
|
|
224
|
+
Наблюдения показали, что в среднем она составляет 90%.
|
|
225
|
+
Методом моментов оцените параметр β. Найдите вероятность того, что доля возврата опустится ниже 75%.
|
|
226
|
+
|
|
227
|
+
Ответ: β̂ = 9; вероятность = 0,0751.""")
|
|
228
|
+
print("""4. Известно, что доля возврата по кредитам в банке имеет распределение:
|
|
229
|
+
F(x) = x^β, 0 ≤ x ≤ 1.
|
|
230
|
+
|
|
231
|
+
Наблюдения показали, что в среднем она составляет 90%.
|
|
232
|
+
Методом моментов оцените параметр β. Найдите вероятность того, что доля возврата опустится ниже 75%.
|
|
233
|
+
|
|
234
|
+
Ответ: β̂ = 9; вероятность = 0,0751.""")
|
|
235
|
+
|
|
236
|
+
def ms_2():
|
|
237
|
+
show('12')
|
|
238
|
+
|
|
239
|
+
def func():
|
|
240
|
+
print('z_5 : z_5_1, z_5_2, z_5_3(flag1 = , flag2= )')
|
|
241
|
+
print('выборки из конечной совокупности z_2 : z_2_1, z_2_2, z_2_3, z_2_4, z_2_5, z_2_6, z_2_7')
|
|
242
|
+
print('проверка гипотез о значении среднего gip_sr : gip_sr_1, gip_sr_2')
|
|
243
|
+
print('проверка гипотез о значении дисперсии gip_var : gip_var_1, gip_var_2')
|
|
244
|
+
print('проверка гипотез о равенстве двух средних gip_2_sr')
|
|
245
|
+
print('проверка гипотез о равенстве трех средних gip_3_sr')
|
|
246
|
+
print('доверительный интервал для коэффициента корреляции dov_int_ro')
|
|
247
|
+
print('лекции show_pdf(\"''\") : lec_1, lec_2, lec_3, lec_4, lec_5, lec_6, lec_7, lec_8')
|
|
248
|
+
print('теория show_pdf(\"''\") : ms_1, ms_2, ms_3, ms_4, ms_5')
|
|
249
|
+
print('метод максимального правдоподобия mmp')
|
|
250
|
+
print('вектора vec')
|
|
251
|
+
print('условные характеристики относительно дискретной СВ discr')
|
|
252
|
+
print('ms_16')
|
|
253
|
+
print('ms : ms_1, ms_2, ms_3, ms_4')
|
|
@@ -0,0 +1,780 @@
|
|
|
1
|
+
import pyperclip
|
|
2
|
+
|
|
3
|
+
def z_5_1(data = 1, gamma = 1, yr_qvant = 0.9):
|
|
4
|
+
data = f"'''{data}'''"
|
|
5
|
+
anser = f'''
|
|
6
|
+
import numpy as np
|
|
7
|
+
import scipy.stats as sts
|
|
8
|
+
import matplotlib.pyplot as plt
|
|
9
|
+
import pandas as pd
|
|
10
|
+
|
|
11
|
+
data = {data}
|
|
12
|
+
gamma = {gamma}
|
|
13
|
+
yr_qvant = {yr_qvant}
|
|
14
|
+
|
|
15
|
+
data = data.split(sep='; ')
|
|
16
|
+
data_grap = data.copy()
|
|
17
|
+
n = len(data)
|
|
18
|
+
print('Объем выборки ', n)
|
|
19
|
+
count_NA = data.count('NA')
|
|
20
|
+
print('Количество NA', count_NA)
|
|
21
|
+
data = [i for i in data if (i != ' NA') and (i != 'NA')]
|
|
22
|
+
data = pd.Series([float(i) for i in data if (i != ' NA') or (i != 'NA')])
|
|
23
|
+
n_without = len(data)
|
|
24
|
+
print('Объем без NA ', n_without)
|
|
25
|
+
|
|
26
|
+
print('Минимальное значение в вариационном ряду', min(data))
|
|
27
|
+
print('Максимальное значение в вариационном ряду', max(data))
|
|
28
|
+
print('Размах выборки', max(data) - min(data))
|
|
29
|
+
Q1 = np.quantile(data, 0.25)
|
|
30
|
+
print('Значение первой квартили (Q1)', Q1)
|
|
31
|
+
Q2 = np.quantile(data, 0.5)
|
|
32
|
+
print('Значение медианы (Q2)', Q2)
|
|
33
|
+
Q3 = np.quantile(data, 0.75)
|
|
34
|
+
print('Значение третьей квартили (Q3)', Q3)
|
|
35
|
+
R = Q3 - Q1
|
|
36
|
+
print('Квартильный размах', R)
|
|
37
|
+
mean = data.mean()
|
|
38
|
+
print('Среднее выборочное значение', mean)
|
|
39
|
+
std_corr = data.std(ddof=1)
|
|
40
|
+
print('Стандартное отклонение (S) корень из дисп.в (исправленной)', std_corr)
|
|
41
|
+
var_corr = data.var(ddof=1)
|
|
42
|
+
print('Исправленная дисперсия ', var_corr)
|
|
43
|
+
kurt = sts.kurtosis(data, bias=False)
|
|
44
|
+
print('Эксцесс (формула по умолчанию в Excel)', sts.kurtosis(data, bias=False))
|
|
45
|
+
skew = sts.skew(data, bias=False)
|
|
46
|
+
print('Коэффициент асимметрии (формула по умолчанию в Excel)', skew)
|
|
47
|
+
error = std_corr / n_without**0.5
|
|
48
|
+
print('Ошибка выборки', error)
|
|
49
|
+
print('Значение ', yr_qvant, ' квантили', np.quantile(data, yr_qvant))
|
|
50
|
+
x_stat_max = Q3 + 1.5 * R
|
|
51
|
+
print('Верхняя граница нормы (Xst_max)', x_stat_max)
|
|
52
|
+
x_stat_min = Q1 - 1.5 * R
|
|
53
|
+
print('Нижняя граница нормы (Xst_min)', x_stat_min)
|
|
54
|
+
print('Количество выбросов ниже нижней нормы', len(data[data < x_stat_min]))
|
|
55
|
+
print('Количество выбросов выше верхней нормы', len(data[data > x_stat_max]))
|
|
56
|
+
print('Общее количество выбросов', len(data[(data > Q3 + 1.5 * R) | (data < Q1 - 1.5 * R)]))
|
|
57
|
+
|
|
58
|
+
interv = sts.t.interval(gamma, n - 1, mean, std_corr / np.sqrt(n_without))
|
|
59
|
+
print('доверительный интервал для E(X)', gamma, ' уровняя ', interv)
|
|
60
|
+
|
|
61
|
+
chi2_gamma1 = sts.chi2.ppf((1 - gamma) / 2, n_without - 1)
|
|
62
|
+
chi2_gamma2 = sts.chi2.ppf((1 + gamma) / 2, n_without - 1)
|
|
63
|
+
print('доверительный интервал для Var(X)', gamma, ' уровняя ',
|
|
64
|
+
(n_without - 1) * var_corr / chi2_gamma2, (n_without - 1) * var_corr / chi2_gamma1)
|
|
65
|
+
|
|
66
|
+
data = pd.Series([float(i.replace(',', '.')) for i in data_grap if i != 'NA'])
|
|
67
|
+
|
|
68
|
+
plt.figure(figsize=(8, 4))
|
|
69
|
+
plt.hist(data, bins=10, edgecolor='black')
|
|
70
|
+
plt.title('Гистограмма c выбросами')
|
|
71
|
+
plt.show()
|
|
72
|
+
|
|
73
|
+
plt.figure(figsize=(8, 4))
|
|
74
|
+
plt.boxplot(data, vert=True, patch_artist=True, showmeans=True)
|
|
75
|
+
plt.title('Диаграмма "Ящик с усиками" с выбросами')
|
|
76
|
+
plt.show()
|
|
77
|
+
|
|
78
|
+
data = pd.Series([i for i in data if i != np.nan])
|
|
79
|
+
data = data[(data < x_stat_max) & (data > x_stat_min)]
|
|
80
|
+
|
|
81
|
+
plt.figure(figsize=(8, 4))
|
|
82
|
+
plt.hist(data, bins=10, edgecolor='black')
|
|
83
|
+
plt.title('Гистограмма без выбросов и NA ')
|
|
84
|
+
plt.show()
|
|
85
|
+
|
|
86
|
+
plt.figure(figsize=(8, 4))
|
|
87
|
+
plt.boxplot(data, vert=True, patch_artist=True, showmeans=True)
|
|
88
|
+
plt.title('Диаграмма "Ящик с усиками" без выбросов и NA')
|
|
89
|
+
plt.show()
|
|
90
|
+
'''
|
|
91
|
+
pyperclip.copy(anser)
|
|
92
|
+
pyperclip.paste()
|
|
93
|
+
|
|
94
|
+
def z_5_2(data='1',alpha1 = 0.05, alpha2 = 0.05):
|
|
95
|
+
data = f"'''{data}'''"
|
|
96
|
+
ansver = f'''
|
|
97
|
+
import pandas as pd
|
|
98
|
+
import numpy as np
|
|
99
|
+
import scipy.stats as sts
|
|
100
|
+
import matplotlib.pyplot as plt
|
|
101
|
+
data = {data}
|
|
102
|
+
data = data.replace(' ','').replace('\\n','').split(sep = ';')
|
|
103
|
+
n_all = len(data)
|
|
104
|
+
data = np.array([i for i in data if i!= 'NA'])
|
|
105
|
+
uniq = np.unique(data)
|
|
106
|
+
print('количество различных вариантов ответов респондентов, встречающиеся в очищенной выборке',len(uniq))
|
|
107
|
+
n = len(data)
|
|
108
|
+
print('объем очищенной от "NA" выборки',n)
|
|
109
|
+
print('количество пропущенных данных "NA" в исходной выборке',n_all-n)
|
|
110
|
+
ni_obs = np.array([list(data).count(i) for i in uniq])
|
|
111
|
+
print('Введите количество респондентов, которые дали ответ "..."',ni_obs,uniq)
|
|
112
|
+
n_pi = ni_obs/np.sum(ni_obs)
|
|
113
|
+
print('Введите долю респондентов, которые дали ответ "..."',n_pi,uniq)
|
|
114
|
+
alpha = {alpha1}
|
|
115
|
+
z_cr = sts.norm.ppf(1-alpha/2)
|
|
116
|
+
print('интервал',n_pi[1] - z_cr * np.sqrt(n_pi[1]* (1 - n_pi[1]) / n), n_pi[1] + z_cr * np.sqrt(n_pi[1]* (1 - n_pi[1]) / n))
|
|
117
|
+
alpha = {alpha2}
|
|
118
|
+
chi2_cr = sts.chi2.ppf(1 - alpha, len(ni_obs)-1)
|
|
119
|
+
print('Введите количество степеней свободы ',len(ni_obs)-1)
|
|
120
|
+
print('критическое значение chi2',chi2_cr)
|
|
121
|
+
k = len(uniq)
|
|
122
|
+
N = sum(ni_obs)
|
|
123
|
+
ni_exp =[N/k] * k
|
|
124
|
+
chi2_obs = ((ni_obs- ni_exp)**2 / ni_exp).sum()
|
|
125
|
+
print('Введите наблюдаемое значение хи-квадрат ',chi2_obs)
|
|
126
|
+
print('H0 принимается') if chi2_obs < chi2_cr else print('H1 принимается')
|
|
127
|
+
plt.hist(data)
|
|
128
|
+
plt.show()
|
|
129
|
+
'''
|
|
130
|
+
pyperclip.copy(ansver)
|
|
131
|
+
pyperclip.paste()
|
|
132
|
+
|
|
133
|
+
def z_5_3(data = 1, flag1 = '!=', alpha1 = 0.05, flag2 = '!=', alpha2 = 0.05):
|
|
134
|
+
df = f"'''{data}'''"
|
|
135
|
+
ansver = f'''
|
|
136
|
+
import pandas as pd
|
|
137
|
+
import scipy.stats as sts
|
|
138
|
+
df = {df}
|
|
139
|
+
df = [eval(i) for i in df.replace('\\n','').replace('NA', 'None').split(';')]
|
|
140
|
+
df = pd.DataFrame(df).dropna()
|
|
141
|
+
|
|
142
|
+
print('Введите выборочный коэффициент корреляции Пирсона между X и Y',sts.pearsonr(df[0],df[1]))'''
|
|
143
|
+
|
|
144
|
+
if flag1 == '!=':
|
|
145
|
+
ansver += f'''
|
|
146
|
+
# H0 : mu0 = mu1
|
|
147
|
+
# H1 : mu0 != mu1
|
|
148
|
+
_, p_val = sts.ttest_ind(df[0],df[1], equal_var=False, alternative='two-sided')
|
|
149
|
+
alpha = {alpha1}
|
|
150
|
+
print('принимаем H0') if p_val>alpha else print('принимаем H1')
|
|
151
|
+
print('p-value ',p_val)'''
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
if flag1 == '<':
|
|
155
|
+
ansver += f'''
|
|
156
|
+
# H0 : mu0 = mu1
|
|
157
|
+
# H1 : mu0 < mu1
|
|
158
|
+
_, p_val = sts.ttest_ind(df[0],df[1], equal_var=False, alternative='less')
|
|
159
|
+
alpha = {alpha1}
|
|
160
|
+
print('принимаем H0') if p_val>alpha else print('принимаем H1')
|
|
161
|
+
print('p-value ',p_val)'''
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
if flag1 == '>' :
|
|
165
|
+
ansver += f'''
|
|
166
|
+
# H0 : mu0 = mu1
|
|
167
|
+
# H1 : mu0 > mu1
|
|
168
|
+
alpha = {alpha1}
|
|
169
|
+
_, p_val = sts.ttest_ind(df[0],df[1], equal_var=False, alternative='greater')
|
|
170
|
+
print('принимаем H0') if p_val>alpha else print('принимаем H1')
|
|
171
|
+
print('p-value ',p_val)'''
|
|
172
|
+
|
|
173
|
+
if flag2 == '!=' :
|
|
174
|
+
ansver+= f'''
|
|
175
|
+
# H0 : sigma_x = sigma_y
|
|
176
|
+
# H1 : sigma_x != sigma_y
|
|
177
|
+
|
|
178
|
+
m = len(df[0])
|
|
179
|
+
n = len(df[1])
|
|
180
|
+
s2_x = df[0].var(ddof = 1)
|
|
181
|
+
s2_y = df[1].var(ddof = 1)
|
|
182
|
+
f_obs = max(s2_x,s2_y)/min(s2_x,s2_y)
|
|
183
|
+
|
|
184
|
+
if s2_x>s2_y:
|
|
185
|
+
k1 = m-1
|
|
186
|
+
k2 = n-1
|
|
187
|
+
else:
|
|
188
|
+
k1 = n-1
|
|
189
|
+
k2= m-1
|
|
190
|
+
p_val = 2* min(sts.f.cdf(f_obs,k1,k2),sts.f.sf(f_obs,k1,k2))
|
|
191
|
+
alpha = {alpha2}
|
|
192
|
+
print('принимаем H0') if p_val>alpha else print('принимаем H1')
|
|
193
|
+
print('p-value ',p_val)'''
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
if flag2 == '<' :
|
|
197
|
+
ansver+= f'''
|
|
198
|
+
# H0 : sigma_x = sigma_y
|
|
199
|
+
# H1 : sigma_x < sigma_y
|
|
200
|
+
|
|
201
|
+
m = len(df[0])
|
|
202
|
+
n = len(df[1])
|
|
203
|
+
s2_x = df[0].var(ddof = 1)
|
|
204
|
+
s2_y = df[1].var(ddof = 1)
|
|
205
|
+
f_obs = max(s2_x,s2_y)/min(s2_x,s2_y)
|
|
206
|
+
|
|
207
|
+
if s2_x>s2_y:
|
|
208
|
+
k1 = m-1
|
|
209
|
+
k2 = n-1
|
|
210
|
+
else:
|
|
211
|
+
k1 = n-1
|
|
212
|
+
k2= m-1
|
|
213
|
+
p_val = sts.f.sf(f_obs,k1,k2)
|
|
214
|
+
alpha = {alpha2}
|
|
215
|
+
print('принимаем H0') if p_val>alpha else print('принимаем H1')
|
|
216
|
+
print('p-value ',p_val)'''
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
if flag2 == '>' :
|
|
220
|
+
ansver+= f'''
|
|
221
|
+
# H0 : sigma_x = sigma_y
|
|
222
|
+
# H1 : sigma_x > sigma_y
|
|
223
|
+
|
|
224
|
+
m = len(df[0])
|
|
225
|
+
n = len(df[1])
|
|
226
|
+
s2_x = df[0].var(ddof = 1)
|
|
227
|
+
s2_y = df[1].var(ddof = 1)
|
|
228
|
+
|
|
229
|
+
f_obs = max(s2_x,s2_y)/min(s2_x,s2_y)
|
|
230
|
+
|
|
231
|
+
if s2_x>s2_y:
|
|
232
|
+
k1 = m-1
|
|
233
|
+
k2 = n-1
|
|
234
|
+
else:
|
|
235
|
+
k1 = n-1
|
|
236
|
+
k2= m-1
|
|
237
|
+
|
|
238
|
+
p_val = sts.f.sf(f_obs,k1,k2)
|
|
239
|
+
alpha = {alpha2}
|
|
240
|
+
print('принимаем H0') if p_val>alpha else print('принимаем H1')
|
|
241
|
+
print('p-value ',p_val)'''
|
|
242
|
+
pyperclip.copy(ansver)
|
|
243
|
+
pyperclip.paste()
|
|
244
|
+
|
|
245
|
+
def z_2_1():
|
|
246
|
+
ans = f'''
|
|
247
|
+
import scipy.stats as sts
|
|
248
|
+
import numpy as np
|
|
249
|
+
data = '83, 100, 100, 51, 94, 53, 17, 46, 53, 76, 88, 72, 57, 53, 70, 94, 0, 95, 0, 93, 25, 23, 87, 81, 43'
|
|
250
|
+
data = np.array([eval(i) for i in data.split(sep = ',')])
|
|
251
|
+
n=9
|
|
252
|
+
var = data.var(ddof=0)/n
|
|
253
|
+
mu3 = sts.moment(data, 3)/n**2
|
|
254
|
+
print('дисперсия',var)
|
|
255
|
+
print('центральный момент',mu3)
|
|
256
|
+
'''
|
|
257
|
+
pyperclip.copy(ans)
|
|
258
|
+
pyperclip.paste()
|
|
259
|
+
|
|
260
|
+
def z_2_2():
|
|
261
|
+
ans = '''
|
|
262
|
+
import numpy as np
|
|
263
|
+
scores = np.array([46, 86, 82, 84, 70, 72, 83, 0, 0, 53, 98, 51, 66, 45, 92, 84, 92, 76, 76, 65, 88, 0, 66, 72, 70, 90])
|
|
264
|
+
N = len(scores)
|
|
265
|
+
n = 5
|
|
266
|
+
mu = np.mean(scores)
|
|
267
|
+
sigma2 = np.var(scores, ddof=0)
|
|
268
|
+
E_X_bar = mu
|
|
269
|
+
Var_X_bar = (sigma2 / n) * ((N - n) / (N - 1))
|
|
270
|
+
print(f"Математическое ожидание E(X(ср)): {E_X_bar:.3f}")
|
|
271
|
+
print(f"Дисперсия Var(X(ср)): {Var_X_bar:.3f}")'''
|
|
272
|
+
pyperclip.copy(ans)
|
|
273
|
+
pyperclip.paste()
|
|
274
|
+
|
|
275
|
+
def z_2_3():
|
|
276
|
+
ans = '''
|
|
277
|
+
import numpy as np
|
|
278
|
+
ni = [2,3,4,5]
|
|
279
|
+
pi = [7,48,8,105]
|
|
280
|
+
n_prepog = 6
|
|
281
|
+
X = np.array([x for x, count in zip(ni, pi) for _ in range(count)])
|
|
282
|
+
mu = X.mean()
|
|
283
|
+
s = X.std() * np.sqrt((len(X) - len(X)/n_prepog)/(len(X)/n_prepog * (len(X)-1)) )
|
|
284
|
+
|
|
285
|
+
print('математическое ожидание = ',mu)
|
|
286
|
+
print('стандартное отклонение = ',s)'''
|
|
287
|
+
pyperclip.copy(ans)
|
|
288
|
+
pyperclip.paste()
|
|
289
|
+
|
|
290
|
+
def z_2_4():
|
|
291
|
+
ans = '''
|
|
292
|
+
N = 36 # Общее количество уникальных комбинаций (6 красных * 6 синих)
|
|
293
|
+
n = 19 # Количество выбранных уникальных комбинаций
|
|
294
|
+
|
|
295
|
+
E_R = np.sum([1+2+3+4+5+6])/6
|
|
296
|
+
E_B = np.sum([1+2+3+4+5+6])/6
|
|
297
|
+
Var_R = np.sum([1+2*2+3*3+4*4+5*5+6*6])/6 - (np.sum([1+2+3+4+5+6])/6)**2
|
|
298
|
+
Var_B = np.sum([1+2*2+3*3+4*4+5*5+6*6])/6 - (np.sum([1+2+3+4+5+6])/6)**2
|
|
299
|
+
# из функции
|
|
300
|
+
a = 11
|
|
301
|
+
b = -8
|
|
302
|
+
E_X = a * E_R + b * E_B
|
|
303
|
+
print(f"Математическое ожидание E(X̄): {E_X}")
|
|
304
|
+
|
|
305
|
+
Var_X = a**2 * Var_R + b**2 * Var_B
|
|
306
|
+
print(f"Дисперсия Var(X): {Var_X}")
|
|
307
|
+
|
|
308
|
+
Var_X_bar = (1 / n) * ((N - n) / (N - 1)) * Var_X
|
|
309
|
+
print(f"Дисперсия Var(X̄): {Var_X_bar}")
|
|
310
|
+
|
|
311
|
+
sigma_X_bar = np.sqrt(Var_X_bar)
|
|
312
|
+
print(f"Стандартное отклонение σ(X̄): {sigma_X_bar}")'''
|
|
313
|
+
pyperclip.copy(ans)
|
|
314
|
+
pyperclip.paste()
|
|
315
|
+
|
|
316
|
+
def z_2_5():
|
|
317
|
+
ans = '''
|
|
318
|
+
import scipy.stats as sts
|
|
319
|
+
n_coins = 11
|
|
320
|
+
n_comb = 257
|
|
321
|
+
X = sts.binom(n_coins,1/2)
|
|
322
|
+
N = 2**n_coins
|
|
323
|
+
print('математическое ожидание ',n_coins/2)
|
|
324
|
+
print('дисперсия ',X.var() /n_comb * (N-n_comb)/(N-1))'''
|
|
325
|
+
pyperclip.copy(ans)
|
|
326
|
+
pyperclip.paste()
|
|
327
|
+
|
|
328
|
+
def z_2_6():
|
|
329
|
+
ans = '''
|
|
330
|
+
import numpy as np
|
|
331
|
+
import pandas as pd
|
|
332
|
+
|
|
333
|
+
n = 7
|
|
334
|
+
data = {
|
|
335
|
+
"X": [100,100,100,400,400,400],
|
|
336
|
+
"Y": [1,2,3,1,2,3],
|
|
337
|
+
"f": [11,32,11,24,11,11]
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
df = pd.DataFrame(data)
|
|
341
|
+
|
|
342
|
+
N = df["f"].sum()
|
|
343
|
+
|
|
344
|
+
E_X = (df["X"] * df["f"]).sum() / N
|
|
345
|
+
E_Y = (df["Y"] * df["f"]).sum() / N
|
|
346
|
+
|
|
347
|
+
Var_X = ((df["X"] - E_X)**2 * df["f"]).sum() / N
|
|
348
|
+
Var_Y = ((df["Y"] - E_Y)**2 * df["f"]).sum() / N
|
|
349
|
+
|
|
350
|
+
Cov_XY = ((df["X"] - E_X) * (df["Y"] - E_Y) * df["f"]).sum() / N
|
|
351
|
+
|
|
352
|
+
Var_X_bar = (1 / n) * ((N - n) / (N - 1)) * Var_X
|
|
353
|
+
Var_Y_bar = (1 / n) * ((N - n) / (N - 1)) * Var_Y
|
|
354
|
+
|
|
355
|
+
r_XY = Cov_XY / np.sqrt(Var_X * Var_Y)
|
|
356
|
+
|
|
357
|
+
print("Математическое ожидание", E_X)
|
|
358
|
+
print("Дисперсия", Var_Y_bar)
|
|
359
|
+
print("Коэффициент корреляции", r_XY)'''
|
|
360
|
+
pyperclip.copy(ans)
|
|
361
|
+
pyperclip.paste()
|
|
362
|
+
|
|
363
|
+
def z_2_7():
|
|
364
|
+
ans = '''
|
|
365
|
+
import numpy as np
|
|
366
|
+
import pandas as pd
|
|
367
|
+
n = 6
|
|
368
|
+
data = {
|
|
369
|
+
"X": [100,100,100,400,400,400],
|
|
370
|
+
"Y": [1,2,3,1,2,3],
|
|
371
|
+
"f": [11,32,11,24,11,11]
|
|
372
|
+
}
|
|
373
|
+
df = pd.DataFrame(data)
|
|
374
|
+
N = df["f"].sum()
|
|
375
|
+
|
|
376
|
+
E_X = (df["X"] * df["f"]).sum() / N
|
|
377
|
+
E_Y = (df["Y"] * df["f"]).sum() / N
|
|
378
|
+
E_XY = (df["Y"] * df["f"] * df["X"]).sum() / N
|
|
379
|
+
|
|
380
|
+
var_X = ((df["X"] - E_X)**2 * df["f"]).sum() / N
|
|
381
|
+
var_Y = ((df["Y"] - E_Y)**2 * df["f"]).sum() / N
|
|
382
|
+
|
|
383
|
+
cov_XY = E_XY - E_X*E_Y
|
|
384
|
+
|
|
385
|
+
sigma_X_bar = np.sqrt((1 / n) * ((N - n) / (N - 1)) * var_X)
|
|
386
|
+
|
|
387
|
+
cov_X_bar_Y_bar = (1 / n) * ((N - n) / (N - 1)) * cov_XY
|
|
388
|
+
print("математическое ожидание", E_Y)
|
|
389
|
+
print("стандартное отклонение", sigma_X_bar)
|
|
390
|
+
print("ковариация", cov_X_bar_Y_bar)'''
|
|
391
|
+
pyperclip.copy(ans)
|
|
392
|
+
pyperclip.paste()
|
|
393
|
+
|
|
394
|
+
def gip_sr_1():
|
|
395
|
+
ans = '''
|
|
396
|
+
import numpy as np
|
|
397
|
+
from scipy.stats import norm
|
|
398
|
+
data = '0,189; -0,66; 0,218; -0,828; -0,65; 0,814; 2,846; 6,009; 1,634; -3,487; 1,606; -1,147; 0,615; 2,491; -1,091; 2,202; -1,503; 3,921; 2,095; -2,205; 3,671; -1,27; 6,15; 5,291; -2,73'
|
|
399
|
+
data = list(map(float,data.replace(',','.').split('; ')))
|
|
400
|
+
n = len(data)
|
|
401
|
+
mu0 = 1.22
|
|
402
|
+
alpha = 0.08
|
|
403
|
+
sigma = 2.7
|
|
404
|
+
sample_mean = np.mean(data)
|
|
405
|
+
standard_error = sigma / np.sqrt(n)
|
|
406
|
+
Z_obs = (sample_mean - mu0) / standard_error
|
|
407
|
+
|
|
408
|
+
print(f"1) Значение статистики критерия Z_obs: {Z_obs:.4f}")
|
|
409
|
+
|
|
410
|
+
alpha_half = alpha / 2
|
|
411
|
+
A = norm.ppf(1 - alpha_half)
|
|
412
|
+
|
|
413
|
+
print(f"2) Граница A критического множества: {A:.4f}")
|
|
414
|
+
p_value = 2 * (1 - norm.cdf(abs(Z_obs)))
|
|
415
|
+
|
|
416
|
+
print(f"3) P-значение критерия: {p_value:.4f}")
|
|
417
|
+
|
|
418
|
+
if p_value < alpha:
|
|
419
|
+
print("Вывод: Отвергаем основную гипотезу H0.")
|
|
420
|
+
else:
|
|
421
|
+
print("Вывод: Нет оснований отвергать основную гипотезу H0.")
|
|
422
|
+
mu1 = 1.03
|
|
423
|
+
delta = (mu1 - mu0) / standard_error
|
|
424
|
+
W = norm.cdf(-A + delta) + (1 - norm.cdf(A + delta))
|
|
425
|
+
|
|
426
|
+
print(f"4) Мощность критерия W при μ = {mu1}: {W:.4f}")'''
|
|
427
|
+
pyperclip.copy(ans)
|
|
428
|
+
pyperclip.paste()
|
|
429
|
+
|
|
430
|
+
def gip_sr_2():
|
|
431
|
+
ans = '''
|
|
432
|
+
import numpy as np
|
|
433
|
+
from scipy import stats
|
|
434
|
+
data = '1,146; 2,958; -3,325; -0,534; 0,374; 5,293; 0,12; 1,185; 5,148; 5,351; 2,639; 1,47; -1,967; 4,96; 6,057; -0,542; 1,544; -0,243; -1,988; 2,844'
|
|
435
|
+
data = list(map(float,data.replace(',','.').split('; ')))
|
|
436
|
+
n = len(data)
|
|
437
|
+
mu0 = 1.10
|
|
438
|
+
alpha = 0.05
|
|
439
|
+
sample_mean = np.mean(data)
|
|
440
|
+
sample_std = np.std(data, ddof=1)
|
|
441
|
+
standard_error = sample_std / np.sqrt(n)
|
|
442
|
+
t_stat = (sample_mean - mu0) / standard_error
|
|
443
|
+
|
|
444
|
+
print(f"1) Значение статистики критерия t = {t_stat:.4f}")
|
|
445
|
+
df = n - 1
|
|
446
|
+
alpha_half = alpha / 2
|
|
447
|
+
A = stats.t.ppf(1 - alpha_half, df)
|
|
448
|
+
|
|
449
|
+
print(f"2) Граница A критического множества: {A:.4f}")
|
|
450
|
+
|
|
451
|
+
p_value = 2 * stats.t.sf(np.abs(t_stat), df)
|
|
452
|
+
|
|
453
|
+
print(f"3) P-значение критерия: {p_value:.4f}")
|
|
454
|
+
|
|
455
|
+
if p_value < alpha:
|
|
456
|
+
print("Вывод: Отвергаем основную гипотезу H0.")
|
|
457
|
+
else:
|
|
458
|
+
print("Вывод: Нет оснований отвергать основную гипотезу H0.")
|
|
459
|
+
|
|
460
|
+
mu1 = 0.91
|
|
461
|
+
|
|
462
|
+
delta = (mu1 - mu0) / (sample_std / np.sqrt(n))
|
|
463
|
+
left_tail = stats.nct.cdf(-A, df, delta)
|
|
464
|
+
right_tail = 1 - stats.nct.cdf(A, df, delta)
|
|
465
|
+
W = left_tail + right_tail
|
|
466
|
+
|
|
467
|
+
print(f"4) Мощность критерия W при μ = {mu1}: {W:.4f}")'''
|
|
468
|
+
pyperclip.copy(ans)
|
|
469
|
+
pyperclip.paste()
|
|
470
|
+
|
|
471
|
+
def gip_3_sr():
|
|
472
|
+
print('Для трех групп финансовых показателей A: (X₁; ...; X₂₀), B: (Y₁; ...; Y₂₁), C: (Z₁; ...; Z₂₂), которые по предположению независимы и распределены, соответственно, по трем нормальным законам N(μₓ, σ²), N(μᵧ, σ²), N(μ𝓏, σ²) (с одинаковой неизвестной дисперсией σ²) на уровне значимости α = 0.04 с помощью F-критерия (Фишера) проверяется гипотеза H₀: μₓ = μᵧ = μ𝓏 о совпадении ожидаемых значений показателей. Конкретные значения всех показателей указаны ниже. 1) По данным значениям показателей найдите межгрупповую дисперсию. 2) По этим же данным найдите среднюю групповую дисперсию. 3) Найдите значение статистики F-критерия, критическое множество Kα и проверьте гипотезу H₀. 4) Найдите P-значение критерия и сделайте выводы. Значения показателей группы A: (3.645; 6.926; 5.956; -1.441; 3.57; 0.706; 0.832; 2.168; 1.475; 4.881; 3.079; 1.416; 2.254; 1.968; 4.985; 0.567; 1.914; -1.121; -5.538; 2.799). Значения показателей группы B: (3.348; -0.83; 7.001; -2.681; 1.219; 0.613; 5.085; 4.92; 1.503; 2.083; -1.208; -4.05; 0.195; 1.507; 4.299; 4.226; 0.093; 0.314; -1.626; -2.592; -3.336). Значения показателей группы C: (6.172; -0.225; -0.039; -2.157; 3.121; -3.096; 0.547; -1.228; 2.106; -0.228; -1.97; 1.027; 2.214; 1.273; 1.886; -0.549; 0.157; -0.648; 0.165; -1.014; -3.388; 1.561).')
|
|
473
|
+
ans = '''
|
|
474
|
+
k = 3
|
|
475
|
+
A = np.array([])
|
|
476
|
+
|
|
477
|
+
B = np.array([])
|
|
478
|
+
|
|
479
|
+
C = np.array([])
|
|
480
|
+
|
|
481
|
+
n1,n2,n3 = len(A),len(B),len(C)
|
|
482
|
+
|
|
483
|
+
ni = np.array((n1,n2,n3))
|
|
484
|
+
n = ni.sum()
|
|
485
|
+
|
|
486
|
+
Gr_sr = np.array((A.mean(),B.mean(),C.mean()))
|
|
487
|
+
Gr_var = np.array((A.var(),B.var(),C.var()))
|
|
488
|
+
all_sr = np.dot(Gr_sr,ni)/n
|
|
489
|
+
|
|
490
|
+
delta2 = np.dot((Gr_sr - all_sr)**2,ni)/n
|
|
491
|
+
|
|
492
|
+
sigma2_sr = np.dot(Gr_var,ni)/n
|
|
493
|
+
|
|
494
|
+
sigma2 =sigma2_sr + delta2
|
|
495
|
+
|
|
496
|
+
MSA = n * delta2 /(k-1)
|
|
497
|
+
MSW = n *sigma2_sr/(n - k)
|
|
498
|
+
MST = n * sigma2 / (n-1)
|
|
499
|
+
|
|
500
|
+
F_obs = MSA/MSW
|
|
501
|
+
|
|
502
|
+
F_cr = sts.f.ppf(1 - alpha, k-1, n-k)
|
|
503
|
+
p_val = sts.f.sf(F_obs,k-1,n-k)
|
|
504
|
+
print('Межгрупповая дисперсия ',delta2)
|
|
505
|
+
print('Средняя групповая дисперсия ',sigma2_sr)
|
|
506
|
+
print('P-значение критерия ',p_val)
|
|
507
|
+
print('Значение статистики критерия ',F_obs)'''
|
|
508
|
+
pyperclip.copy(ans)
|
|
509
|
+
pyperclip.paste()
|
|
510
|
+
|
|
511
|
+
def gip_var_1():
|
|
512
|
+
ans = '''
|
|
513
|
+
import numpy as np
|
|
514
|
+
from scipy.stats import chi2
|
|
515
|
+
data = '0,185; 1,269; 2,034; 1,356; 2,498; -0,185; 1,665; 0,436; 0,226; 0,556; 0,858; 1,273; -0,107; 2,228; 1,736; -0,526; 2,892; 3,352; 2,542; 1,007; 0,0; 2,402; 0,754; 2,591; 1,445; 2,314; 1,613; 2,008; 1,222; 3,228; 1,353; 1,664; 3,338; -0,313; -0,226; 2,305; -0,116; 3,406; 0,743; 0,365; 3,383; 2,883; 3,32; 2,234; 0,237'
|
|
516
|
+
data = np.array(list(map(float,data.replace(',','.').split('; '))))
|
|
517
|
+
n = len(data)
|
|
518
|
+
mu = 1.83
|
|
519
|
+
sigma0 = 1.13
|
|
520
|
+
|
|
521
|
+
deviations = data - mu
|
|
522
|
+
sum_of_squares = np.sum(deviations ** 2)
|
|
523
|
+
chi_square_stat = sum_of_squares / sigma0 ** 2
|
|
524
|
+
|
|
525
|
+
print("1) Значение статистики критерия =", round(chi_square_stat, 4))
|
|
526
|
+
|
|
527
|
+
alpha = 0.03
|
|
528
|
+
df = n
|
|
529
|
+
A = chi2.ppf(alpha / 2, df )
|
|
530
|
+
B = chi2.ppf(1 - alpha / 2, df)
|
|
531
|
+
|
|
532
|
+
print("2) Границы критического множества: A =", round(A, 4), "и B =", round(B, 4))
|
|
533
|
+
|
|
534
|
+
if chi_square_stat < A or chi_square_stat > B:
|
|
535
|
+
decision = "Отвергаем H0"
|
|
536
|
+
else:
|
|
537
|
+
decision = "Не отвергаем H0"
|
|
538
|
+
|
|
539
|
+
print("Решение:", decision)
|
|
540
|
+
p_value = 2 * min(chi2.cdf(chi_square_stat, df), 1 - chi2.cdf(chi_square_stat, df))
|
|
541
|
+
|
|
542
|
+
print("3) P-значение критерия =", round(p_value, 4))
|
|
543
|
+
sigma_1 = 1.23
|
|
544
|
+
sigma1_squared = sigma_1 ** 2
|
|
545
|
+
sigma0_squared = sigma0 ** 2
|
|
546
|
+
factor = sigma1_squared / sigma0_squared
|
|
547
|
+
c1 = A * factor
|
|
548
|
+
c2 = B * factor
|
|
549
|
+
beta = chi2.cdf(B, df=n, scale=sigma_1**2 / sigma0**2) - chi2.cdf(A, df=n, scale=sigma_1**2 / sigma0**2)
|
|
550
|
+
print("4) Вероятность ошибки второго рода =", round(beta, 4))'''
|
|
551
|
+
pyperclip.copy(ans)
|
|
552
|
+
pyperclip.paste()
|
|
553
|
+
|
|
554
|
+
def gip_var_2():
|
|
555
|
+
ans = '''
|
|
556
|
+
import numpy as np
|
|
557
|
+
from scipy.stats import chi2
|
|
558
|
+
|
|
559
|
+
# Данные
|
|
560
|
+
x = np.array([])
|
|
561
|
+
n = len(x) # Объем выборки
|
|
562
|
+
sigma_0 = 1.13 # Проверяемое значение стандартного отклонения
|
|
563
|
+
alpha = 0.03 # Уровень значимости
|
|
564
|
+
|
|
565
|
+
# 1. Найти значение статистики критерия χ^2
|
|
566
|
+
S2 = np.var(x, ddof=1) # Выборочная дисперсия
|
|
567
|
+
chi2_stat = (n - 1) * S2 / sigma_0**2
|
|
568
|
+
|
|
569
|
+
# 2. Найти границы A и B критического множества
|
|
570
|
+
A = chi2.ppf(alpha / 2, df=n-1) # Левая критическая граница
|
|
571
|
+
B = chi2.ppf(1 - alpha / 2, df=n-1) # Правая критическая граница
|
|
572
|
+
|
|
573
|
+
# Проверка гипотезы H0
|
|
574
|
+
reject_H0 = chi2_stat < A or chi2_stat > B
|
|
575
|
+
|
|
576
|
+
# 3. Найти p-значение критерия
|
|
577
|
+
p_value = 2 * min(chi2.cdf(chi2_stat, df=n-1), 1 - chi2.cdf(chi2_stat, df=n-1))
|
|
578
|
+
|
|
579
|
+
# 4. Найти вероятность ошибки второго рода β для σ1 = 1.24
|
|
580
|
+
sigma_1 = 1.23
|
|
581
|
+
noncentral_chi2_stat = (n - 1) * sigma_1**2 / sigma_0**2
|
|
582
|
+
|
|
583
|
+
beta = chi2.cdf(B, df=n-1, scale=sigma_1**2 / sigma_0**2) - chi2.cdf(A, df=n-1, scale=sigma_1**2 / sigma_0**2)
|
|
584
|
+
|
|
585
|
+
# Вывод результатов
|
|
586
|
+
print(f"1. Значение статистики критерия χ^2: {chi2_stat:.4f}")
|
|
587
|
+
print(f"2. Границы критического множества: A = {A:.4f}, B = {B:.4f}")
|
|
588
|
+
print(f"Гипотеза H0 {'отвергается' if reject_H0 else 'не отвергается'}")
|
|
589
|
+
print(f"3. P-значение: {p_value:.4f}")
|
|
590
|
+
print(f"4. Вероятность ошибки второго рода β: {beta:.4f}")'''
|
|
591
|
+
pyperclip.copy(ans)
|
|
592
|
+
pyperclip.paste()
|
|
593
|
+
|
|
594
|
+
def dov_int_ro():
|
|
595
|
+
print('Пусть (x₁, y₁); ...; (x₂₀, y₂₀) — реализация случайной выборки (X₁, Y₁); ...; (X₂₀, Y₂₀) из двумерного нормального распределения N(μₓ, μᵧ, σₓ², σᵧ², ρ). Используя векторы x = (x₁; ...; x₂₀) и y = (y₁; ...; y₂₀), постройте асимптотический 0.74-доверительный интервал (θ̂₁, θ̂₂) для коэффициента корреляции ρ. В ответе укажите: 1) выборочный коэффициент корреляции ρ̂; 2) верхнюю границу θ̂₂ построенного доверительного интервала для ρ. Исходные данные: x = (-1.808; -1.381; -1.652; -0.905; 0.025; -0.414; -0.77; -0.498; -1.429; -0.148; 2.386; -0.71; -1.958; -0.01; -1.781; -0.223; 1.243; 0.313; -1.434; 0.437), y = (-1.658; -0.542; -2.017; -0.962; 0.178; 0.131; -0.725; -0.374; -1.506; -0.467; 2.63; -0.988; -2.502; -0.08; -1.231; -0.081; 0.502; 0.371; -0.984; 0.324).')
|
|
596
|
+
ans = '''
|
|
597
|
+
import numpy as np
|
|
598
|
+
from scipy.stats import norm
|
|
599
|
+
|
|
600
|
+
# Данные
|
|
601
|
+
x = np.array([])
|
|
602
|
+
y = np.array([])
|
|
603
|
+
|
|
604
|
+
n = len(x)
|
|
605
|
+
|
|
606
|
+
# 1. Вычисление выборочного коэффициента корреляции
|
|
607
|
+
r_hat = np.corrcoef(x, y)[0, 1]
|
|
608
|
+
|
|
609
|
+
# 2. Преобразование Фишера
|
|
610
|
+
z_hat = 0.5 * np.log((1 + r_hat) / (1 - r_hat))
|
|
611
|
+
|
|
612
|
+
# 3. Стандартная ошибка
|
|
613
|
+
SE = 1/np.sqrt(n - 3)
|
|
614
|
+
|
|
615
|
+
# 4. Критическое значение для уровня 0.93
|
|
616
|
+
alpha = 1 - 0.93
|
|
617
|
+
z_critical = norm.ppf(1 - alpha/2) # z_{0.965}
|
|
618
|
+
|
|
619
|
+
# 5. Доверительный интервал для z
|
|
620
|
+
z_lower = z_hat - z_critical * SE
|
|
621
|
+
z_upper = z_hat + z_critical * SE
|
|
622
|
+
|
|
623
|
+
# 6. Обратное преобразование Фишера для границ доверительного интервала
|
|
624
|
+
def fisher_inverse(z):
|
|
625
|
+
return (np.exp(2*z) - 1) / (np.exp(2*z) + 1)
|
|
626
|
+
|
|
627
|
+
rho_lower = fisher_inverse(z_lower)
|
|
628
|
+
rho_upper = fisher_inverse(z_upper)
|
|
629
|
+
|
|
630
|
+
# Вывод результатов
|
|
631
|
+
print(f"1) Выборочный коэффициент корреляции ρ̂: {r_hat:.4f}")
|
|
632
|
+
print(f"2) Верхняя граница доверительного интервала θ̂₂ для ρ: {rho_upper:.4f}")'''
|
|
633
|
+
pyperclip.copy(ans)
|
|
634
|
+
pyperclip.paste()
|
|
635
|
+
|
|
636
|
+
def gip_2_sr():
|
|
637
|
+
print('1. Пусть x⃗ =(x1,…,x25) – реализация случайной выборки X⃗ =(X1,…,X25) из нормального распределения N(μx;0,72), а y⃗ =(y1,…,y30) – реализация случайной выборки Y⃗ =(Y1,…,Y30) из нормального распределения N(μy;1,42). Известно, что X⃗ и Y⃗ независимы. Проверяется гипотеза H0:μx=μy против альтернативной гипотезы H1:μx>μy. При уровне значимости α применяется критерий с критической областью {Z>A}, где статистика критерия Z=Z(X⃗ ,Y⃗ ) – это нормированная разность X¯−Y¯, A=Aα – зависящее от α критическое значение. Соответствующее критическое множество имеет вид Kα=(Aα;∞). 1) Найдите значение статистики критерия Zнабл.=Z(x⃗ ,y⃗ ). 2) Найдите P-значение критерия. 3) Найдите критическое значение A, критическое множество Kα и проверьте гипотезу H0 при α=0,02. 4) Найдите мощность критерия W в случае μx−μy=0,1 и α=0,02. Исходные данные: x⃗ = (3,842; 3,374; 4,18; 4,5; 4,247; 4,412; 3,756; 3,946; 3,729; 3,948; 3,631; 2,992; 4,324; 3,919; 3,059; 4,524; 3,565; 4,236; 4,71; 4,29; 4,998; 3,336; 4,482; 3,721; 3,59); y⃗ = (3,19; 3,564; 4,079; 2,369; 5,261; 4,652; 1,849; 6,084; 6,654; 5,65; 3,748; 2,501; 5,476; 3,436; 5,711; 4,292; 5,367; 4,499; 4,989; 4,015; 6,5; 4,178; 4,563; 6,636; 2,113; 2,221; 5,357; 2,358; 6,721; 3,421).')
|
|
638
|
+
ans = '''
|
|
639
|
+
import scipy.stats as sts
|
|
640
|
+
import numpy as np
|
|
641
|
+
X = ''''''
|
|
642
|
+
Y = ''''''
|
|
643
|
+
sigma_x = 1.1
|
|
644
|
+
sigma_y = 1.3
|
|
645
|
+
alpha = 0.03
|
|
646
|
+
# mu_x - mu_y = delt
|
|
647
|
+
delt = 0.7
|
|
648
|
+
X = np.array([eval(i) for i in X.replace(',','.').split(sep = ';')])
|
|
649
|
+
Y = np.array([eval(i) for i in Y.replace(',','.').split(sep = ';')])
|
|
650
|
+
x_sr = X.mean()
|
|
651
|
+
y_sr = Y.mean()
|
|
652
|
+
m = len(X)
|
|
653
|
+
n = len(Y)
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
z_crit = sts.norm.ppf(1 - alpha)
|
|
657
|
+
|
|
658
|
+
z_obs = (x_sr - y_sr)/(sigma_x**2/m + sigma_y**2/n)**0.5
|
|
659
|
+
|
|
660
|
+
p_value = 1 - sts.norm.cdf(z_obs)
|
|
661
|
+
|
|
662
|
+
z_alt = delt / np.sqrt((sigma_x**2 / m) + (sigma_y**2 / n))
|
|
663
|
+
w = 1 - sts.norm.cdf(z_crit - z_alt)
|
|
664
|
+
|
|
665
|
+
print('Критическое значение A ', z_crit)
|
|
666
|
+
print('Мощность критерия ', w)
|
|
667
|
+
print('Значение статистики критерия ', z_obs)
|
|
668
|
+
print('P-значение критерия ', p_value)
|
|
669
|
+
'''
|
|
670
|
+
pyperclip.copy(ans)
|
|
671
|
+
pyperclip.paste()
|
|
672
|
+
|
|
673
|
+
def mmp():
|
|
674
|
+
print('Глеб и Ольга исследуют эффективность лекарственного препарата АВС. Глеб, используя модель Ольги, создал компьютерную программу, вычисляющую по заданным генетическим факторам вероятность (в процентах) успешного применения АВС. Программа Глеба накапливает полученные вероятности и в итоге выдает набор частот: n₀, n₁, ..., n₁₀₀. Например, n₇₅ – это число случаев, в которых программа Глеба получила вероятность 75%. Обработав 900 образцов генетического материала, Ольга нашла значения факторов и ввела их в программу. В результате был получен следующий набор частот: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 4, 4, 4, 2, 7, 6, 12, 9, 4, 6, 16, 14, 34, 25, 32, 25, 45, 36, 49, 56, 47, 55, 58, 63, 49, 59, 42, 33, 30, 25, 20, 11, 4, 1, 2, 0, 0, 0, 0. Для завершения этапа исследования необходимо было подобрать распределение, соответствующее полученным частотам. Ольга решила использовать распределение на отрезке [0,1] с плотностью f(x) = f(x; a, b) = abxᵃ⁻¹(1 − xᵃ)ᵇ⁻¹ и целочисленными параметрами a, b в диапазоне от 1 до 20. В результате максимизации функции правдоподобия (при указанных ограничениях) Глебом были получены значения параметров: â = A и b̂ = B. Задача: пусть X – случайная величина, распределенная на отрезке [0,1] с плотностью f(x) = f(x; â, b̂), F(x) – ее функция распределения. Требуется найти математическое ожидание E(X) и X₀.₂ = F⁻¹(0.2) – квантиль уровня 0.2. Какой смысл для всей популяции имеют E(X) и X₀.₂? В ответе укажите: 1) значение A; 2) значение B; 3) математическое ожидание E(X); 4) квантиль X₀.₂.')
|
|
675
|
+
ans = '''
|
|
676
|
+
import math
|
|
677
|
+
from scipy.integrate import quad
|
|
678
|
+
n = [
|
|
679
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 1, 1, 3, 4, 4, 5, 4, 6, 6, 11, 9, 19, 23, 25, 33, 36, 36, 46, 46, 49, 58, 90, 76, 66, 69, 75, 68, 44, 39, 21, 16, 5, 2, 1, 0, 0, 0
|
|
680
|
+
]
|
|
681
|
+
total_n = sum(n)
|
|
682
|
+
print(f"Общее количество наблюдений: {total_n}")
|
|
683
|
+
x_values = [i / 100.0 for i in range(101)]
|
|
684
|
+
def log_density(x, a, b):
|
|
685
|
+
if x <= 0.0 or x >= 1.0:
|
|
686
|
+
return float('-inf')
|
|
687
|
+
ln_a = math.log(a)
|
|
688
|
+
ln_b = math.log(b)
|
|
689
|
+
ln_x = math.log(x)
|
|
690
|
+
x_pow_a = x ** a
|
|
691
|
+
one_minus_x_pow_a = 1 - x_pow_a
|
|
692
|
+
if one_minus_x_pow_a <= 0.0:
|
|
693
|
+
return float('-inf')
|
|
694
|
+
ln_one_minus_x_pow_a = math.log(one_minus_x_pow_a)
|
|
695
|
+
ln_f = ln_a + ln_b + (a - 1) * ln_x + (b - 1) * ln_one_minus_x_pow_a
|
|
696
|
+
return ln_f
|
|
697
|
+
max_log_likelihood = float('-inf')
|
|
698
|
+
best_a = None
|
|
699
|
+
best_b = None
|
|
700
|
+
|
|
701
|
+
for a in range(1, 21):
|
|
702
|
+
for b in range(1, 21):
|
|
703
|
+
log_likelihood = 0.0
|
|
704
|
+
valid_model = True
|
|
705
|
+
for i in range(101):
|
|
706
|
+
n_i = n[i]
|
|
707
|
+
if n_i > 0:
|
|
708
|
+
x_i = x_values[i]
|
|
709
|
+
ln_f = log_density(x_i, a, b)
|
|
710
|
+
if not math.isfinite(ln_f):
|
|
711
|
+
valid_model = False
|
|
712
|
+
break
|
|
713
|
+
log_likelihood += n_i * ln_f
|
|
714
|
+
if valid_model and log_likelihood > max_log_likelihood:
|
|
715
|
+
max_log_likelihood = log_likelihood
|
|
716
|
+
best_a = a
|
|
717
|
+
best_b = b
|
|
718
|
+
|
|
719
|
+
print(f"Максимальное значение логарифма правдоподобия: {max_log_likelihood}")
|
|
720
|
+
print(f"Оптимальные значения параметров: A = {best_a}, B = {best_b}")
|
|
721
|
+
def density_function(x, a, b):
|
|
722
|
+
return a * b * x ** (a - 1) * (1 - x ** a) ** (b - 1)
|
|
723
|
+
def expected_value(a, b):
|
|
724
|
+
result, error = quad(lambda x: x * density_function(x, a, b), 0, 1)
|
|
725
|
+
return result
|
|
726
|
+
def quantile(p, a, b):
|
|
727
|
+
return (1 - (1 - p) ** (1 / b)) ** (1 / a)
|
|
728
|
+
E_X = expected_value(best_a, best_b)
|
|
729
|
+
p = 0.2
|
|
730
|
+
X_p = quantile(p, best_a, best_b)
|
|
731
|
+
|
|
732
|
+
print(f"Математическое ожидание E(X): {E_X:.4f}")
|
|
733
|
+
print(f"Квантиль уровня {p}: X_{p} = {X_p:.4f}")'''
|
|
734
|
+
pyperclip.copy(ans)
|
|
735
|
+
pyperclip.paste()
|
|
736
|
+
|
|
737
|
+
def ms_1():
|
|
738
|
+
ans = '''
|
|
739
|
+
xi = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
|
|
740
|
+
ni = np.array([146, 97, 73, 34, 23, 10, 6, 3, 4, 2, 2])
|
|
741
|
+
n = sum(ni)
|
|
742
|
+
x_sr = np.dot(xi,ni)/n
|
|
743
|
+
# P(X>=2)
|
|
744
|
+
P = 1 - x_sr**0/1*np.e**(-x_sr) - x_sr**1/1*np.e**(-x_sr)
|
|
745
|
+
P1 = 1 - sts.poisson.pmf(0,x_sr)-sts.poisson.pmf(1,x_sr)
|
|
746
|
+
P2 = 1 - sts.poisson.cdf(1,x_sr)
|
|
747
|
+
P_tabl = 1- (146+97)/400
|
|
748
|
+
x_sr , P , P1,P2, P_tabl'''
|
|
749
|
+
pyperclip.copy(ans)
|
|
750
|
+
pyperclip.paste()
|
|
751
|
+
|
|
752
|
+
def ms_3():
|
|
753
|
+
ans = '''
|
|
754
|
+
xi = np.array([2.5, 7.5, 12.5, 17.5, 22.5, 27.5])
|
|
755
|
+
ni = np.array([133, 45, 15, 4, 2, 1,])
|
|
756
|
+
n = sum(ni)
|
|
757
|
+
x_sr = np.dot(xi,ni)/n
|
|
758
|
+
|
|
759
|
+
E = 1 / x_sr
|
|
760
|
+
|
|
761
|
+
lambda_ = (n-1)/n*E
|
|
762
|
+
|
|
763
|
+
t = sts.expon.ppf(0.9,1/lambda_)
|
|
764
|
+
E, lambda_ ,t
|
|
765
|
+
'''
|
|
766
|
+
pyperclip.copy(ans)
|
|
767
|
+
pyperclip.paste()
|
|
768
|
+
|
|
769
|
+
def ms_4():
|
|
770
|
+
ans = '''
|
|
771
|
+
xi = np.array([0.3, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.9, 2.2, 2.3])
|
|
772
|
+
ni = np.array([6, 9, 26, 25, 30, 26, 21, 24, 20, 8, 5])
|
|
773
|
+
n = sum(ni)
|
|
774
|
+
|
|
775
|
+
a_hat = ((xi*ni)/n).sum()
|
|
776
|
+
|
|
777
|
+
var_hat = ((xi-a_hat)**2*ni).sum()/n
|
|
778
|
+
a_hat,var_hat,sts.norm(a_hat,var_hat**0.5).cdf(1.5)'''
|
|
779
|
+
pyperclip.copy(ans)
|
|
780
|
+
pyperclip.paste()
|
numpyp-0.0.1/setup.cfg
ADDED
numpyp-0.0.1/setup.py
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from setuptools import setup, find_packages
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def readme():
|
|
5
|
+
with open('README.md', encoding='utf-8') as f:
|
|
6
|
+
return f.read()
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
setup(
|
|
10
|
+
name='numpyp',
|
|
11
|
+
version='0.0.1',
|
|
12
|
+
description='This is the simplest module for quick work with files.',
|
|
13
|
+
license='MIT',
|
|
14
|
+
long_description=readme(),
|
|
15
|
+
long_description_content_type='text/markdown',
|
|
16
|
+
packages=find_packages(),
|
|
17
|
+
package_data={
|
|
18
|
+
'numpyp.theory': ['*.png','*.pdf'],
|
|
19
|
+
},
|
|
20
|
+
install_requires=[
|
|
21
|
+
'IPython','pyperclip',
|
|
22
|
+
],
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|