def is_local_minimum(n): variances = [] matrix = create_optimal_matrix(n) v = compute_variance(np.array(matrix)) # variances.append(compute_variance(np.array(matrix))) for i in range(n): for j in range(n): mat = np.array([row for row in matrix]) mat[i, j] = 1 - mat[i, j] variances.append(compute_variance(mat)) print(v < min(variances)) return variances
def compute_variances(m, n): variances = [] binary_matrices = compute_all_binary_matrices(m, n) for matrix in binary_matrices: model_variace = compute_variance(matrix) variances.append(round(model_variace, 5)) return binary_matrices, variances
def compute_variances(number_of_rows, number_of_columns): binary_matrices = compute_matrices(number_of_rows, number_of_columns) variances = [] for matrix in binary_matrices: model_variance = compute_variance(np.array(matrix)) variances.append(round(model_variance, 3)) return binary_matrices, variances
def compute_singular_designs(m, n): singular_designs = [] binary_matrices = compute_all_binary_matrices(m, n) for matrix in binary_matrices: variance = compute_variance(matrix) if variance == float('inf'): singular_designs.append(matrix) return singular_designs
def compute_up_to_dimension(n): variances = [] for i in range(2, n): mat = create_optimal_matrix(i) mat = np.array(mat) variance = compute_variance(mat) variances.append(variance) print('Dimension ' + str(i) + ': ' + str(round(variance, 3))) plt.figure(figsize=(7, 2)) plt.plot(variances, 'rx')
def test_hypothesis(n): for i in range(2, n): dimension = 2 * i print('Testing dimension ', dimension) matrix = create_optimal_matrix(dimension) M = compute_information_matrix(np.array(matrix)) hT = [0 for i in range(M.shape[0])] hT[len(hT) - 2] = -0.5 hT[len(hT) - 1] = 0.5 hT = np.array(hT) val = np.matmul(np.matmul(hT, M), np.transpose(hT)) print(1 / val) print(np.matmul(hT, M)) print(compute_variance(np.array(matrix)))
hT[len(hT) - 1] = 0.5 hT = np.array(hT) val = np.matmul(np.matmul(hT, M), np.transpose(hT)) print(1 / val) print(np.matmul(hT, M)) print(compute_variance(np.array(matrix))) # test_hypothesis(5) s = '' for i in range(2, 17): matrix = create_optimal_matrix(i) # print('Dimension ', 2*i) d = compute_variance(np.array(matrix)) print((i, round(d, 4))) s += str((i, round(d, 5))) # F = compute_transformation_matrix(np.array(matrix)) # M = compute_information_matrix(np.array(matrix)) # print(F) # print(M) print(s) # for i in range(20, 30): # v = is_local_minimum(i) # compute_up_to_dimension(10) # plt.show()