Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1 / sectry

.py
Скачиваний:
2
Добавлен:
07.04.2025
Размер:
3 Кб
Скачать
import xlrd

def output_matrix(matrix):
    rows = len(matrix)
    for row in range(rows):
        print(matrix[row])

matrix = []
rb = xlrd.open_workbook('1.xls', formatting_info=True)
sheet = rb.sheet_by_index(0)
for rownum in range(sheet.nrows):
    row = sheet.row_values(rownum)
    matrix.append(row)

cols = len(matrix[0])
rows = len(matrix)
means = []
for col in range(cols):
    sum = 0
    for row in range(rows):
        sum += matrix[row][col]
    mean = sum / rows
    means.append(mean)

cols = len(matrix[0])
rows = len(matrix)
vars = []
for col in range(cols):
    sum = 0
    for row in range(rows):
        sum += (matrix[row][col] - means[col]) ** 2
    var = sum / rows
    vars.append(var)

print("\nСредние:", means, "\nДисперcии:", vars)

cols = len(matrix[0])
rows = len(matrix)
s_matrix = [[0]*cols for row in range(rows)]
for col in range(cols):
    for row in range(rows):
        s_matrix[row][col] = (matrix[row][col] - means[col]) / (vars[col] ** 0.5)

print("\nCтандартизованная матрица:")
output_matrix(s_matrix)

cols = len(matrix[0])
rows = len(matrix)
cov_matrix = [[0]*cols for row in range(cols)]
for col1 in range(cols):
    for col2 in range(col1, cols):
        sum = 0
        for row in range(rows):
            sum += (matrix[row][col1] - means[col1]) * (matrix[row][col2] - means[col2])
        cov_matrix[col1][col2] = sum / rows
        cov_matrix[col2][col1] = sum / rows

print("\nКовариационная матрица:") # главная диагональ - дисперсии
output_matrix(cov_matrix)

cols = len(s_matrix[0])
rows = len(s_matrix)
cor_matrix = [[0]*cols for row in range(cols)]
for col1 in range(cols):
    for col2 in range(col1, cols):
        sum = 0
        for row in range(rows):
            sum += s_matrix[row][col1] * s_matrix[row][col2]
        cor_matrix[col1][col2] = sum / rows
        cor_matrix[col2][col1] = sum / rows

print("\nКорреляционная матрица:")
output_matrix(cor_matrix)

# Рассчитываем t-статистику:
n = len(matrix)
tabular_t_value = 2.0117405  # Табличное значение t-статистики для уровня значимости 0.05 и df = n - 2
cols = len(cor_matrix)

t_statistic_matrix = []
for i in range(cols):
    t_statistic_row = []
    for j in range(cols):
        r = cor_matrix[i][j]

        # Проверка деления на 0
        if abs(1 - r ** 2) > 1e-10:
            t_ij = (r * (n - 2) ** 0.5) / ((1 - r ** 2) ** 0.5)
        else:
            t_ij = 0
        t_statistic_row.append(t_ij)
    t_statistic_matrix.append(t_statistic_row)

print("\nПроверяем статистическую значимость:")
"""проверка значимости"""
size = len(t_statistic_matrix)

for cols in range(size):
    for rows in range(size):
        if cols == rows:
            print("-", end=" ")
        elif abs(t_statistic_matrix[rows][cols]) > tabular_t_value:
            print("H1", end=" ")
        else:
            print("H0", end=" ")
    print()
Соседние файлы в папке 1