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

1 / sectry

.py
Скачиваний:
0
Добавлен:
07.04.2025
Размер:
3.2 Кб
Скачать
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