Выполнение теста случайности прогонов в Python
Введение
Понятие случайности играет решающую роль в различных областях, таких как аналитика, криптография и моделирование. Решение о том, является ли последовательность информации действительно нерегулярной или демонстрирует несколько базовых конструкций, имеет основополагающее значение во многих приложениях. Одним из измеримых тестов, обычно используемых по этой причине, является тест случайности Ранса. В этой статье мы углубимся в тест случайности Runs и покажем, как его выполнить с помощью Python, гибкого языка программирования, широко используемого для фактического анализа. Используя возможности Python и модуль scipy.stats, можно эффективно применять тест Runs для оценки случайности данного набора данных.
Понимание теста прогонов
Тест Runs может представлять собой непараметрический измеримый тест, который рассматривает группировку значений в наборе данных, чтобы определить, являются ли они нерегулярными или отображают несколько эффективных планов. Он основан на концепции «прогонов», которые определяются как непрерывные события значений, которые выходят за или ниже определенного края. Анализируя количество запусков в группе, мы проверим произвольность информации.
Основное подозрение в отношении теста прогонов заключается в том, что в действительно случайной группировке количество прогонов имеет тенденцию следовать за конкретным распространением. Если количество просмотренных запусков существенно отклоняется от ожидаемого распространения, это указывает на близость замысла или предвзятости в информации.
Уравнение статистики Z-теста
Измерение Z-теста может быть мерой, используемой при теоретическом тестировании, чтобы определить, сколько стандартных отклонений информационная точка или тестовое среднее отсутствует в среднем значении генеральной совокупности. Он регулярно используется, когда известно стандартное отклонение генеральной совокупности. Уравнение для измерения Z-теста:
Z=(X − µ)/(σ/√n)
Где :
Z — измерение Z-теста,
X - среднее значение теста,
μ — среднее значение генеральной совокупности,
σ - стандартное отклонение генеральной совокупности, а
n — размер теста.
Эта формула позволяет нам заменить проверочное среднее на Z-показатель, что имеет значение при определении вероятности получения такого проверочного среднего, если неверная теория верна. Сравнивая результаты Z-теста с критическими значениями стандартной нормальной дисперсии, мы можем сделать выбор, принять или отклонить неверную гипотезу.
Реализация теста прогонов в Python
Алгоритм
Шаг 1: Введите информационную последовательность.
Шаг 2:Инициализируйте факторы: num_runs=1 и n=длина информационной последовательности.
Шаг 3:Число пробегает информационную последовательность путем сравнения последовательных элементов.
Шаг 4. Рассчитайте ожидаемое количество запусков, используя ожидаемое количество запусков.
Шаг 5: Рассчитайте стандартное отклонение, используя std_deviation.
Пример
def run_test(data):
n = len(data)
num_runs = 1
for i in range(1, n):
if data[i] != data[i - 1]:
num_runs += 1
expected_runs = (2 * n - 1) / 3
std_deviation = ((16 * n - 29) / 90) ** 0.5
z_score = (num_runs - expected_runs) / std_deviation
return num_runs, expected_runs, std_deviation, z_score
if __name__ == "__main__":
data = [12, 10, 8, 9, 7, 5, 4, 6, 8, 10]
num_runs, expected_runs, std_deviation, z_score = run_test(data)
print("Data:", data)
print("Number of Runs:", num_runs)
print("Expected Runs:", expected_runs)
print("Standard Deviation:", std_deviation)
print("Z-Score:", z_score)
print("Conclusion:")
if abs(z_score) <= 1.96:
print("The Run Test result is not statistically significant.")
else:
print("The Run Test result is statistically significant.")
Выход
Data: [12, 10, 8, 9, 7, 5, 4, 6, 8, 10]
Number of Runs: 10
Expected Runs: 6.333333333333333
Standard Deviation: 1.2064640713902572
Z-Score: 3.039184301975457
Conclusion:
The Run Test result is statistically significant.
Ограничения и соображения
Хотя тест случайности Ранса может быть ценным фактическим инструментом, очень важно помнить о его ограничениях и соображениях. Вот несколько моментов, на которых не должно быть никаких сомнений при выполнении теста Runs в Python:
Примерная оценка: Тест «Прогоны» требует достаточно большой тестовой оценки, чтобы обеспечить достоверные результаты. Если набор данных слишком мал, тест может оказаться недостаточно чувствительным для точного выявления отклонений от случайности. Для получения надежных результатов рекомендуется иметь тестовую меру не менее 20.
Предположение автономии. Тест Runs допускает, что восприятие в наборе данных не зависит друг от друга. Если информационные фокусы не являются автономными или демонстрируют некоторую форму автокорреляции, тест Runs может оказаться односторонним или сомнительным. Таким образом, важно гарантировать свободу информации, фокусирующуюся на недавнем применении теста.
Определение порога. Тест «Прогоны» включает в себя определение порогового значения для распознавания прогонов значений, превышающих и ниже этого предела. Выбор края может в целом повлиять на результат теста. Крайне важно выбрать подходящий край, который соответствует характеру анализируемой информации. Ограничение не должно быть ни слишком крайним, ни слишком мягким, поскольку оно может привести к обманчивым выводам.
Интерпретация результатов. Хотя тест Runs дает некоторую информацию о случайности набора данных, очень важно осторожно расшифровывать результаты. Тест не демонстрирует достоверно случайность или неслучайность, но, возможно, исследует степень отклонения от случайности. Примечательное значение p рекомендует исходить из случайности, но оно не дает информации о природе или конкретном дизайне этой информации.
Сравнение с ожидаемой передачей: Тест «Прогоны» сравнивает наблюдаемое количество прогонов с ожидаемой дисперсией, основанной на случайности. В любом случае стоит отметить, что ожидаемая дисперсия может меняться в зависимости от характеристик информации и конкретного варианта используемого теста Runs. Следовательно, при расшифровке происходящего крайне важно учитывать предполагаемую транспортировку.
Заключение
Тест случайности Ранса может быть важным инструментом для исследования случайности последовательности данных. Анализируя количество прогонов в наборе данных, мы можем решить, демонстрирует ли информация какой-либо базовый дизайн или предвзятость. Python с его богатой средой библиотек предоставляет полезную основу для выполнения измеримых тестов, таких как тест Runs. В этой статье мы исследовали концепцию теста Runs и набросали шаги по его проведению на Python с использованием модуля scipy.stats. Имейте в виду, что фактические тесты не являются окончательной проверкой случайности или неслучайности, но служат важным инструментом для анализа информации.