1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/majianthu-pycopent

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Версия PyPI

copent

Оценка энтропии копулы и передачной энтропии

Введение

Неспараметрические методы для оценки энтропии копулы, передачной энтропии и статистики для теста многомерной нормальности и двухвыборочного теста реализованы. Также реализован метод обнаружения точки изменения на основе этого двухвыборочного теста.

Метод для оценки энтропии копулы состоит из двух простых шагов: оценка эмпирической копулы с помощью рангового статистического показателя и оценка энтропии копулы с использованием метода КСГ. Энтропия копулы — это математический концепт для измерения и проверки мультивариантной статистической независимости, который был доказан эквивалентным взаимной информации. В отличие от коэффициента корреляции Пирсона, энтропия копулы определена для случаев нелинейной зависимости, высших порядков и мультивариантных данных, что делает её универсально применимой. Оценка энтропии копулы может применяться в различных случаях, включая, но не ограничиваясь выбором переменных и открытием причинно-следственной связи (путём оценки передачной энтропии). Дополнительную информацию см. в работе Ма и Сун (2011) <doi:10.1016/S1007-0214(11)70008-6>.


Также стоит отметить, что энтропия копулы позволяет эффективно анализировать сложные системы, где линейные модели оказываются недостаточно мощными.Неспараметрический метод для оценки передачной энтропии также состоит из двух шагов: оценка трёх энтропий копулы и вычисление передачной энтропии на основе оценённых энтропий копулы. Предоставлена функция для тестирования условной независимости. Дополнительную информацию см. в работе Ма (2019) <arXiv:1910.04375>.

Предоставленная функция для тестирования условной независимости позволяет проверить наличие зависимости между случайными величинами при наличии третьей случайной величины.Статистика на основе энтропии копулы для теста многомерной нормальности и двухвыборочного теста реализована. Также реализован метод обнаружения точки изменения на основе этого двухвыборочного теста. Дополнительную информацию см. в работах Ма (2022) <arXiv:2206.05956>, Ма (2023) <arXiv:2307.07247>, и Ма (2024) <arXiv:2403.07892>.

Функции

  • copent — оценка энтропии копулы;
  • construct_empirical_copula — первый шаг функции copent, который оценивает эмпирическую копулу для данных с помощью ранговых статистик;
  • entknn — второй шаг функции copent, который оценивает энтропию копулы из эмпирической копулы методом kNN;
  • ci — тест условной независимости на основе энтропии копулы;
  • transent — оценка передачной энтропии через энтропию копулы;
  • mvnt — оценка статистики на основе энтропии копулы для теста многомерной нормальности;
  • tst — оценка статистики на основе энтропии копулы для двухвыборочного теста;
  • cpd — выявление одиночной точки изменения;
  • mcpd — выявление множественных точек изменения;

Параметры

  • x: данные N * d, N образцов, d размерностей;
  • k: k-ый ближайший сосед, параметр для оценки энтропии kNN. значение по умолчанию = 3;
  • dtype: тип расстояния, может быть 'euclidean' или 'chebychev' (для максимального расстояния);
  • lag: временной лаг. значение по умолчанию = 1;
  • s0, s1: два образца с одинаковой размерностью;
  • n: количество повторений оценки.* thd: пороговое значение для статистики двухвыборочного теста
  • maxp: максимальное количество точек изменения
  • minseglen: минимальная длина бинарной сегментации#### Установка Пакет можно установить непосредственно из PyPI:
pip install copent

Пакет также можно установить из GitHub:

pip install git+https://github.com/majianthu/pycopent.git

Примеры использования

Оценка энтропии копулы
from numpy.random import multivariate_normal as mnorm
import copent
rho = 0.6
mean1 = [0, 0]
cov1 = [[1, rho], [rho, 1]]
x = mnorm(mean1, cov1, 200)  # двумерное нормальное распределение 
ce1 = copent.copent(x)       # оцененная энтропия копулы
Оценка передачной энтропии
from copent import transent
from pandas import read_csv
import numpy as np
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/00381/PRSA_data_2010.1.1-2014.12.31.csv"
prsa2010 = read_csv(url)
# индекс: 5(PM2.5), 6(Точка росы), 7(Температура), 8(Давление), 10(Кумулятивная скорость ветра)
data = prsa2010.iloc[2200:2700, [5, 8]].values
te = np.zeros(24)
for lag in range(1, 25):
    te[lag - 1] = transent(data[:, 0], data[:, 1], lag)
    str = f"Передачная энтропия от давления до PM2.5 при временной задержке {lag} часов: {te[lag - 1]}"
    print(str)
Многомерный тест нормальности
from numpy.random import multivariate_normal as mnorm
from copent import mvnt
mean1 = [0, 0]
cov1 = [[1, 0.65], [0.65, 1]]
data = mnorm(mean1, cov1, 500)
stat1 = mvnt(data)
Двухвыборочный тест
from copent import tst
from numpy import zeros
from numpy.random import multivariate_normal as mnorm
m0 = [0, 0]
rho1 = 0.5
v0 = [[1, rho1], [rho1, 1]]
s0 = mnorm(m0, v0, 400)  # двумерное нормальное распределение 
stat1 = zeros(9)
for i in range(0, 9):
    m1 = [i, i]
    s1 = mnorm(m1, v0, 500)
    stat1[i] = tst(s0, s1)
    print(stat1[i])
Обнаружение точки изменения
from copent import mcpd
import numpy as np
from numpy.random import multivariate_normal as mnorm
```n1 = 50
x1 = np.random.normal(0, 1, n1)
x2 = np.random.normal(5, 1, n1)
x3 = np.random.normal(10, 1, n1)
x4 = np.random.normal(1, 1, n1)
x = np.concatenate((x1, x2, x3, x4))
pos, maxstat = mcpd(x, thd=0.2)
print(pos)

```python
x1 = mnorm([0, 0], [[1, 0], [0, 1]], n1)
x2 = mnorm([10, 10], [[1, 0], [0, 1]], n1)
x3 = mnorm([5, 5], [[1, 0], [0, 1]], n1)
x4 = mnorm([1, 1], [[1, 0], [0, 1]], n1)
x = np.concatenate((x1, x2, x3, x4))
pos, maxstat = mcpd(x, thd=0.2)
print(pos)
```#### Ссылки
1. Jian Ma и Zengqi Sun. Взаимная информация как энтропия копулы. Tsinghua Science & Technology, 2011, 16(1): 51-54. См. также архивный предпечатный вариант [arXiv:0808.0845](https://arxiv.org/abs/0808.0845), 2008.
2. Jian Ma. Оценка передачной энтропии с помощью энтропии копулы. Архивный предпечатный вариант [arXiv:1910.04375](https://arxiv.org/abs/1910.04375), 2019.
3. Jian Ma. Многомерный тест нормальности с использованием энтропии копулы. Архивный предпечатный вариант [arXiv:2206.05956](https://arxiv.org/abs/2206.05956), 2022.
4. Jian Ma. Двухвыборочный тест с использованием энтропии копулы. Архивный предпечатный вариант [arXiv:2307.07247](https://arxiv.org/abs/2307.07247), 2023.
5. Jian Ma. Обнаружение точки изменения с использованием двухвыборочного теста на основе энтропии копулы. Архивный предпечатный вариант [arXiv:2403.07892](https://arxiv.org/abs/2403.07892), 2024.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Estimating Copula Entropy and Transfer Entropy Развернуть Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/majianthu-pycopent.git
git@api.gitlife.ru:oschina-mirror/majianthu-pycopent.git
oschina-mirror
majianthu-pycopent
majianthu-pycopent
master