This commit is contained in:
me
2026-04-08 22:01:01 +03:00
parent 3bbb71fbb4
commit fd921a1c05
23 changed files with 18573 additions and 0 deletions

571
rgr1/archive/report.typ Normal file
View File

@@ -0,0 +1,571 @@
#set document(title: "РГР №1")
#set page(
paper: "a4",
margin: (top: 2.5cm, bottom: 2.5cm, left: 3cm, right: 2cm),
numbering: "1",
)
#set text(font: "New Computer Modern", size: 14pt, lang: "ru")
// #set heading(numbering: "1.")
#set par(justify: true, leading: 0.75em)
#show math.equation: set text(size: 14pt)
#show link: underline
#set page(footer: context {
if counter(page).get().first() > 1 [
#align(center)[
#counter(page).display("1")
]
]
if counter(page).get().first() == 1 [
#align(center)[
Санкт-Петербург \ 2026
]
]
})
#set page(header: context {
if counter(page).get().first() == 1 [
#align(center)[
Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики
]
]
})
#show raw.where(block: false): box.with(
fill: luma(240),
inset: (x: 3pt, y: 0pt),
outset: (y: 3pt),
radius: 2pt,
)
#show raw.where(block: true): block.with(
fill: luma(240),
inset: 10pt,
radius: 4pt,
)
#for _ in range(5) { linebreak() }
#align(center)[Лабораторная работа №4. Postgres]
#for _ in range(15) { linebreak() }
#align(right)[Выполнил:]
#align(right)[Дощенников Никита]
#align(right)[Группа: К3221]
#align(right)[Проверила:]
#align(right)[Александра Валерьевна Купера]
#pagebreak()
#outline(title: "Содержание", indent: 1.5em)
#pagebreak()
= Первичное описание выборки
В данном разделе выполняется первичный анализ столбцов $X_1$, $X_2$, $X_3$
из предоставленного CSV-файла объёмом $n = 200$ наблюдений.
== Вариационный ряд
Вариационный ряд --- упорядоченная по возрастанию последовательность наблюдений $x_1 lt.eq x_2 lt.eq dots lt.eq x_n$.
#align(center)[
#figure(
image("assets/variation-series-X1.png"),
caption: [Вариационный ряд столбца $X_1$]
)
]
#align(center)[
#figure(
image("assets/variation-series-X2.png"),
caption: [Вариационный ряд столбца $X_2$]
)
]
#align(center)[
#figure(
image("assets/variation-series-X3.png"),
caption: [Вариационный ряд столбца $X_3$]
)
]
#align(center)[
#figure(
image("assets/variation-series-X4.png"),
caption: [Вариационный ряд столбца $X_4$]
)
]
== Эмпирическая функция распределения
Эмпирическая функция распределения определяется как
$
F_n (x) = frac(nu_n (x), n),
$
где $nu_n (x)$ --- число наблюдений, строго меньших $x$. График $F_n (x)$ является ступенчатой функцией: в каждой точке $x_i$ происходит скачок на $1/n$.
#align(center)[
#figure(
image("assets/ecdf-X1.png"),
caption: [Эмпирическая функция распределения $F_n (x)$ для ряда $X_1$]
)
]
#align(center)[
#figure(
image("assets/ecdf-X2.png"),
caption: [Эмпирическая функция распределения $F_n (x)$ для ряда $X_2$]
)
]
#align(center)[
#figure(
image("assets/ecdf-X3.png"),
caption: [Эмпирическая функция распределения $F_n (x)$ для ряда $X_3$]
)
]
#align(center)[
#figure(
image("assets/ecdf-X4.png"),
caption: [Эмпирическая функция распределения $F_n (x)$ для ряда $X_4$]
)
]
== Гистограммы
Для выбора числа интервалов использовались три правила:
- *Правило Скотта:* $h = 3.5 hat(sigma) n^(-1/3)$, откуда $k = ceil.l (x_max - x_min) / h ceil.r$.
- *Правило Фридмана–Диакониса:* $h = 2 dot "IQR" dot n^(-1/3), space "IQR" = q_0.75 - q_0.25$.
- *Правило Стерджеса:* $k = 1 + floor.l log_2 n floor.r$.
Результаты для $n = 200$:
#figure(
table(
columns: 4,
align: horizon + center,
table.header([*Правило*], [*$X_1$*], [*$X_2$*], [*$X_3$*]),
[Скотт], [10], [6], [11],
[Фридман–Диакон.], [12], [6], [17],
[Стерджес], [8], [8], [8],
),
caption: [Число интервалов $k$ по разным правилам],
)
В дальнейшем используется правило Скотта как наиболее устойчивое к форме
распределения.
#figure(
rect(width: 100%, height: 7cm, fill: luma(240), stroke: luma(180))[
#align(center + horizon)[_[Вставить гистограммы X1 (три правила рядом)]_]
],
caption: [Гистограммы $X_1$ по трём правилам],
)
#figure(
rect(width: 100%, height: 7cm, fill: luma(240), stroke: luma(180))[
#align(center + horizon)[_[Вставить гистограммы X2 (три правила рядом)]_]
],
caption: [Гистограммы $X_2$ по трём правилам],
)
#figure(
rect(width: 100%, height: 7cm, fill: luma(240), stroke: luma(180))[
#align(center + horizon)[_[Вставить гистограммы X3 (три правила рядом)]_]
],
caption: [Гистограммы $X_3$ по трём правилам],
)
// ─── 1.4 ─────────────────────────────────────────────────────────────────────
== Числовые характеристики
Выборочное среднее:
$
macron(x) = frac(1,n) sum_(i=1)^n x_i.
$
Смещённая и несмещённая дисперсии:
$
S^2 = frac(1,n) sum_(i=1)^n (x_i - macron(x))^2, quad
hat(sigma)^2 = frac(1,n-1) sum_(i=1)^n (x_i - macron(x))^2.
$
#figure(
table(
columns: (2.2fr, 1fr, 1fr, 1fr),
align: (left, center, center, center),
table.header(
[*Характеристика*], [*$X_1$*], [*$X_2$*], [*$X_3$*]
),
[$macron(x)$ выборочное среднее], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$S^2$ смещённая дисперсия], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$hat(sigma)^2$ несмещённая дисперсия], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$S$ смещённое ст. откл.], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$hat(sigma)$ несмещённое ст. откл.],[\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$m_e$ медиана], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$q_{0.25}$ первый квартиль], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$q_{0.75}$ третий квартиль], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$"IQR" = q_{0.75} - q_{0.25}$], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$x_min$], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$x_max$], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
),
caption: [Числовые характеристики выборок],
)
// ─── 1.5 ─────────────────────────────────────────────────────────────────────
== Описание формы распределений
*Столбец $X_1$.*
_(Заполнить после анализа: симметрия/асимметрия, наличие выбросов,
естественные границы значений, характер хвостов.)_
*Столбец $X_2$.*
_(Заполнить после анализа.)_
*Столбец $X_3$.*
_(Заполнить после анализа.)_
// ─────────────────────────────────────────────────────────────────────────────
= Гипотезы о виде закона распределения
// ─────────────────────────────────────────────────────────────────────────────
На основании гистограмм, ЭФР и числовых характеристик для каждого столбца
выдвигается гипотеза о законе распределения из списка:
нормальное $N(a, sigma^2)$, равномерное $U(a, b)$,
экспоненциальное со сдвигом $"Exp"_(lambda, c)$.
*Столбец $X_1$ — предполагаемый закон: \_\_\_\_\_\_\_\_\_.*
_(Обоснование: форма гистограммы, симметрия, соотношение среднего и медианы,
характер ЭФР и т.д. — 26 предложений.)_
*Столбец $X_2$ — предполагаемый закон: \_\_\_\_\_\_\_\_\_.*
_(Обоснование.)_
*Столбец $X_3$ — предполагаемый закон: \_\_\_\_\_\_\_\_\_.*
_(Обоснование.)_
// ─────────────────────────────────────────────────────────────────────────────
= Оценивание параметров
// ─────────────────────────────────────────────────────────────────────────────
// ─── 3.1 ─────────────────────────────────────────────────────────────────────
== Метод моментов
Идея метода: приравнять теоретические моменты $E X$ и $D X$ к выборочным
оценкам и решить систему уравнений.
=== Нормальное распределение $N(a, sigma^2)$
Теория: $E X = a$, $D X = sigma^2$. Оценки:
$
hat(a) = macron(x), quad hat(sigma)^2 = S^2.
$
=== Равномерное распределение $U(a, b)$
Теория: $E X = (a+b)/2$, $D X = (b-a)^2 / 12$. Оценки:
$
hat(a) = macron(x) - sqrt(3 S^2), quad hat(b) = macron(x) + sqrt(3 S^2).
$
=== Экспоненциальное распределение со сдвигом $"Exp"_(lambda,c)$
Плотность: $f(x) = lambda e^{-lambda(x-c)}$, $x gt.eq c$, $lambda > 0$.
Теория: $E X = c + 1/lambda$, $D X = 1/lambda^2$. Оценки:
$
hat(lambda) = 1/S, quad hat(c) = macron(x) - 1/hat(lambda).
$
=== Результаты метода моментов
#figure(
table(
columns: (2fr, 1fr, 1fr, 1fr),
align: (left, center, center, center),
table.header([*Параметр*], [*$X_1$*], [*$X_2$*], [*$X_3$*]),
[Параметр 1 (\_\_\_)], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[Параметр 2 (\_\_\_)], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
),
caption: [Оценки параметров методом моментов],
)
// ─── 3.2 ─────────────────────────────────────────────────────────────────────
== Метод максимального правдоподобия
Функция правдоподобия и логарифм правдоподобия:
$
L(theta) = product_(i=1)^n f(x_i | theta), quad
ell(theta) = sum_(i=1)^n ln f(x_i | theta).
$
Оценка ММП: $hat(theta) = arg max_theta ell(theta)$.
=== Нормальное распределение
$
ell(a, sigma) = -n ln sigma - frac(1, 2 sigma^2) sum_(i=1)^n (x_i - a)^2 + "const".
$
Из условий первого порядка:
$
hat(a)_("МП") = macron(x), quad hat(sigma)^2_("МП") = S^2 = frac(1,n) sum_(i=1)^n (x_i - macron(x))^2.
$
=== Равномерное распределение
Плотность $f(x) = 1/(b-a)$ при $x in [a,b]$. Правдоподобие максимизируется при
наименьшем возможном $(b-a)$, откуда:
$
hat(a)_("МП") = min{x_1, dots, x_n}, quad hat(b)_("МП") = max{x_1, dots, x_n}.
$
=== Экспоненциальное распределение со сдвигом
$
ell(lambda, c) = n ln lambda - lambda sum_(i=1)^n (x_i - c).
$
Так как $ell$ возрастает по $c$ (при $c lt.eq x_min$):
$
hat(c)_("МП") = min{x_1, dots, x_n}, quad hat(lambda)_("МП") = frac(1, macron(x) - hat(c)).
$
=== Результаты ММП
#figure(
table(
columns: (2fr, 1fr, 1fr, 1fr),
align: (left, center, center, center),
table.header([*Параметр*], [*$X_1$*], [*$X_2$*], [*$X_3$*]),
[Параметр 1 (\_\_\_)], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[Параметр 2 (\_\_\_)], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
),
caption: [Оценки параметров методом максимального правдоподобия],
)
// ─── 3.3 ─────────────────────────────────────────────────────────────────────
== Сравнение оценок двух методов
#figure(
table(
columns: (2fr, 1fr, 1fr, 1fr, 1fr, 1fr, 1fr),
align: center,
table.header(
[], table.cell(colspan: 2)[$X_1$], table.cell(colspan: 2)[$X_2$], table.cell(colspan: 2)[$X_3$],
[*Параметр*], [*ММ*], [*МП*], [*ММ*], [*МП*], [*ММ*], [*МП*],
),
[Параметр 1], [\_\_], [\_\_], [\_\_], [\_\_], [\_\_], [\_\_],
[Параметр 2], [\_\_], [\_\_], [\_\_], [\_\_], [\_\_], [\_\_],
),
caption: [Сравнение оценок методом моментов и ММП],
)
_(Комментарий: для нормального распределения оценки совпадают. Для равномерного
и экспоненциального оценки различаются — пояснить почему, 24 предложения.)_
// ─────────────────────────────────────────────────────────────────────────────
= Оценивание вероятности $P(X > x_0)$
// ─────────────────────────────────────────────────────────────────────────────
В качестве порога выбирается $x_0 = macron(x) + hat(sigma)$.
*Эмпирическая оценка:*
$
hat(p)_("эмп") = frac(1,n) sum_(i=1)^n bold(1)[x_i > x_0].
$
*Параметрическая оценка* подстановка найденных оценок в теоретическую формулу:
- Для $N(a, sigma^2)$: $quad P(X > x_0) = 1 - Phi\( (x_0 - hat(a)) / hat(sigma) \)$.
- Для $U(a,b)$: $quad P(X > x_0) = (hat(b) - x_0) / (hat(b) - hat(a))$ при $x_0 in [hat(a), hat(b)]$.
- Для $"Exp"_(lambda,c)$: $quad P(X > x_0) = e^{-hat(lambda)(x_0 - hat(c))}$.
#figure(
table(
columns: (2.5fr, 1fr, 1fr, 1fr),
align: (left, center, center, center),
table.header([*Оценка*], [*$X_1$*], [*$X_2$*], [*$X_3$*]),
[$x_0 = macron(x) + hat(sigma)$], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$hat(p)_"эмп"$], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$hat(p)_"пар"$], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[Расхождение $|hat(p)_"эмп" - hat(p)_"пар"|$], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
),
caption: [Сравнение эмпирической и параметрической оценок вероятности],
)
_(Комментарий к расхождению — 23 предложения.)_
// ─────────────────────────────────────────────────────────────────────────────
= Оценка моментов по сгруппированной выборке
// ─────────────────────────────────────────────────────────────────────────────
Пусть гистограмма содержит $m$ интервалов, в $k$ интервал попало $n_k$
наблюдений, $hat(X)_k$ середина $k$-го интервала. Тогда:
$
hat(X)_g = frac(1,n) sum_(k=1)^m n_k hat(X)_k, quad
hat(sigma)^2_g = frac(1,n-1) sum_(k=1)^m n_k (hat(X)_k - hat(X)_g)^2.
$
#figure(
table(
columns: (2.5fr, 1fr, 1fr, 1fr),
align: (left, center, center, center),
table.header([*Характеристика*], [*$X_1$*], [*$X_2$*], [*$X_3$*]),
[$hat(X)_g$ (по сгруппированной)], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$macron(x)$ (по исходным)], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$hat(sigma)^2_g$ (по сгруппированной)],[\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[$hat(sigma)^2$ (по исходным)], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
),
caption: [Сравнение оценок по сгруппированной и исходной выборкам],
)
_(Комментарий: потеря точности при группировке обусловлена заменой каждого
наблюдения серединой интервала — 23 предложения.)_
// ─────────────────────────────────────────────────────────────────────────────
= Доверительные интервалы
// ─────────────────────────────────────────────────────────────────────────────
Уровень доверия $1 - alpha = 0.95$, то есть $alpha = 0.05$.
== Асимптотический доверительный интервал для $E X$
По центральной предельной теореме для всех трёх столбцов:
$
E X in
lr(( macron(x) - z_{1-alpha/2} frac(hat(sigma), sqrt(n)), space
macron(x) + z_{1-alpha/2} frac(hat(sigma), sqrt(n)) )),
$
где $z_{0.975} approx 1.960$.
#figure(
table(
columns: (2fr, 1fr, 1fr, 1fr),
align: (left, center, center, center),
table.header([*Граница*], [*$X_1$*], [*$X_2$*], [*$X_3$*]),
[Нижняя граница], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[Верхняя граница], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
[Ширина интервала], [\_\_\_\_], [\_\_\_\_], [\_\_\_\_],
),
caption: [Асимптотические ДИ для $E X$ на уровне $0.95$],
)
== Точные доверительные интервалы для нормального столбца
Для столбца $X\_\_$ (отнесённого к $N(mu, sigma^2)$):
*ДИ для $mu$ при неизвестной $sigma^2$* (распределение Стьюдента):
$
mu in lr((
macron(x) - t_{1-alpha/2,, n-1} frac(hat(sigma), sqrt(n)),
space
macron(x) + t_{1-alpha/2,, n-1} frac(hat(sigma), sqrt(n))
)),
$
где $t_{0.975, 199} approx \_\_\_\_$.
*ДИ для $sigma^2$* (распределение $chi^2$):
$
sigma^2 in lr((
frac((n-1) hat(sigma)^2, chi^2_{1-alpha/2,, n-1}),
space
frac((n-1) hat(sigma)^2, chi^2_{alpha/2,, n-1})
)).
$
#figure(
table(
columns: (2.5fr, 1fr),
align: (left, center),
table.header([*Интервал*], [*Значение*]),
[ДИ для $mu$ (асимптотический)], [(\_\_\_\_, \_\_\_\_)],
[ДИ для $mu$ (точный, $t$-распределение)], [(\_\_\_\_, \_\_\_\_)],
[ДИ для $sigma^2$], [(\_\_\_\_, \_\_\_\_)],
),
caption: [Точные ДИ для параметров нормального распределения ($X\_\_$)],
)
// ─── 6.3 ─────────────────────────────────────────────────────────────────────
== Интерпретация доверительных интервалов
Доверительный интервал с уровнем $1 - alpha = 0.95$ означает следующее:
если бы мы многократно повторяли эксперимент и строили интервал по каждой
новой выборке, то примерно 95% таких интервалов покрывали бы истинное значение
параметра. Это *не* означает, что истинный параметр попадает в данный конкретный
интервал с вероятностью 95% параметр либо лежит в интервале, либо нет.
Вероятностный смысл относится к процедуре построения, а не к конкретному результату.
Чем уже интервал, тем точнее оценка. Ширина убывает как $O(1/sqrt(n))$, поэтому
для вдвое более узкого интервала требуется вчетверо большая выборка.
// ─────────────────────────────────────────────────────────────────────────────
= Итоговый вывод
// ─────────────────────────────────────────────────────────────────────────────
_(Заполнить после получения числовых результатов — 512 строк.)_
По результатам анализа установлено следующее соответствие столбцов и законов
распределения:
- $X_1$ \_\_\_\_\_\_\_\_ с параметрами \_\_\_\_\_\_\_\_;
- $X_2$ \_\_\_\_\_\_\_\_ с параметрами \_\_\_\_\_\_\_\_;
- $X_3$ \_\_\_\_\_\_\_\_ с параметрами \_\_\_\_\_\_\_\_.
Оценки методом моментов и методом максимального правдоподобия _(совпали /
незначительно расходятся)_. Доверительные интервалы для среднего имеют ширину
порядка \_\_\_\_, что свидетельствует о _(высокой / умеренной)_ точности оценок
при $n = 200$. Асимптотический и точный интервалы для нормального столбца
практически совпадают, что подтверждает применимость ЦПТ при данном объёме
выборки.
// ─────────────────────────────────────────────────────────────────────────────
= Бонус: анализ столбца $X_4$
// ─────────────────────────────────────────────────────────────────────────────
== Первичное описание
#figure(
rect(width: 100%, height: 5cm, fill: luma(240), stroke: luma(180))[
#align(center + horizon)[_[Вставить гистограмму и ЭФР для X4]_]
],
caption: [Гистограмма и ЭФР столбца $X_4$],
)
_(Описание формы: признаки бимодальности, неоднородности, наличие двух мод.)_
== Кластеризация ($k$-средних, $k=2$)
_(Описание метода и результат разбиения на два кластера.)_
#figure(
table(
columns: (2fr, 1fr, 1fr),
align: (left, center, center),
table.header([*Характеристика*], [*Кластер 1*], [*Кластер 2*]),
[Объём $n_j$], [\_\_\_\_], [\_\_\_\_],
[Среднее $macron(x)_j$], [\_\_\_\_], [\_\_\_\_],
[Ст. откл. $hat(sigma)_j$], [\_\_\_\_], [\_\_\_\_],
[Мин / Макс], [\_\_\_\_ / \_\_\_\_], [\_\_\_\_ / \_\_\_\_],
),
caption: [Характеристики кластеров столбца $X_4$],
)
«Общее среднее» $macron(x)$ плохо описывает смесь двух режимов, поскольку
является взвешенным средним двух различных распределений и может не
соответствовать ни одному из них. Например, если моды расположены на расстоянии
$d$ друг от друга, общее среднее окажется между ними в области низкой плотности.