def get_correl_coef(sample_density, sample_elastic): import lab1 n = lab1.selection_size sample_2D = list(zip(sample_density, sample_elastic)) borders_1, buckets_1 = lab1.get_interval_sample(sample_density) borders_2, buckets_2 = lab1.get_interval_sample(sample_elastic) freqs_1 = [len(array) for array in buckets_1] freqs_2 = [len(array) for array in buckets_2] mid_borders_1 = [(border[0] + border[1]) / 2 for border in borders_1] mid_borders_2 = [(border[0] + border[1]) / 2 for border in borders_2] step_size_1 = borders_1[0][1] - borders_1[0][0] step_size_2 = borders_2[0][1] - borders_2[0][0] C_1 = 472 # из прошлых работ C_2 = 122 # СКО для условных вариант v = [(elem - C_1) / step_size_1 for elem in mid_borders_1] u = [(elem - C_2) / step_size_2 for elem in mid_borders_2] mean_v = sum([x[0] * x[1] for x in zip(v, freqs_1)]) / n mean_u = sum([x[0] * x[1] for x in zip(u, freqs_2)]) / n S_v = sqrt(sum([x[0]**2 * x[1] for x in zip(v, freqs_1)]) / n - mean_v**2) S_u = sqrt(sum([x[0]**2 * x[1] for x in zip(u, freqs_2)]) / n - mean_u**2) table = build_corr_table(sample_2D, borders_1, borders_2) sum_from_table = countSum(table, v, u) r = (sum_from_table + n * mean_v * mean_u) / (n * S_v * S_u) return r
def build_table(sample_density): borders, buckets = lab1.get_interval_sample(sample_density) mid_borders = [round((border[0] + border[1]) / 2) for border in borders] build_table.C = mid_borders[max([(len(bucket), i) for i, bucket in enumerate(buckets)])[1]] build_table.h = int( (mid_borders[-1] - mid_borders[0]) / (len(mid_borders) - 1)) table = [[0 for i in range(8)] for i in range(len(mid_borders) + 1)] for i, bucket in enumerate(buckets): xi = mid_borders[i] n = len(buckets[i]) ui = (xi - build_table.C) / build_table.h table[i][0] = xi table[-1][0] += xi table[i][1] = n table[-1][1] += n table[i][2] = ui table[-1][2] += ui table[i][3] = ui * n table[-1][3] += ui * n table[i][4] = ui**2 * n table[-1][4] += ui**2 * n table[i][5] = ui**3 * n table[-1][5] += ui**3 * n table[i][6] = ui**4 * n table[-1][6] += ui**4 * n table[i][7] = (ui + 1)**4 * n table[-1][7] += (ui + 1)**4 * n return table
a_left = X - t_igrek * S / sqrt(N) a_right = X + t_igrek * S / sqrt(N) print("Доверительный интервал для математического ожидания: ", end="") print("({0:.4f}; {1:.4f})\n".format(a_left, a_right)) gamma = 0.95 q = 0.147 sd_left = S*(1-q) sd_right = S*(1+q) print("Доверительный интервал для среднеквадратического отклонения: ", end="") print("({0:.4f}; {1:.4f})\n".format(sd_left, sd_right)) borders, buckets = lab1.get_interval_sample(sample_density) # print(borders, buckets) vals = [len(bucket) for bucket in buckets] # print(borders) # print(buckets) print("Частоты в интервалах:") print(vals) print() # Объединяем последние интервалы borders[-2] = (borders[-2][0], borders[-1][1]) del borders[-1] buckets[-2] += buckets[-1] del buckets[-1] vals = [len(bucket) for bucket in buckets] # print(borders)
S_u = sqrt(sum([x[0]**2 * x[1] for x in zip(u, freqs_2)]) / n - mean_u**2) table = build_corr_table(sample_2D, borders_1, borders_2) sum_from_table = countSum(table, v, u) r = (sum_from_table + n * mean_v * mean_u) / (n * S_v * S_u) return r if __name__ == "__main__": n = lab1.selection_size general_population = lab1.read_data(filename=lab1.data_file_name) sample_density = lab1.get_sample_first(general_population, n) sample_elastic = lab1.get_sample_second(general_population, n) borders_1, buckets_1 = lab1.get_interval_sample(sample_density) borders_2, buckets_2 = lab1.get_interval_sample(sample_elastic) freqs_1 = [len(array) for array in buckets_1] freqs_2 = [len(array) for array in buckets_2] # Расчёты прогоняем, меняя источник данных в лабе 2 # Часть 2 sample_2D = list(zip(sample_density, sample_elastic)) print("Двумерная выборка:") print_beauty(sample_2D, size=6) print(end="\n") table = build_corr_table(sample_2D, borders_1, borders_2) print("Данные для таблицы:") for row in table: print(row)
# y_maxval = mean_y + coef_y_x*(max_val - mean_x) # ax.plot([min_val, max_val], [y_minval, y_maxval], "-r", label="$y_x$ = 0.31x - 12.33") # yx # min_val, max_val = min(sample_elastic), max(sample_elastic) # print(min_val, max_val) # x_minval = mean_x + coef_x_y*(min_val - mean_y) # x_maxval = mean_x + coef_x_y*(max_val - mean_y) # ax.plot([x_minval, x_maxval], [min_val, max_val], "-b", label="$x_y$ = 1.91y + 212.58") # xy # ax.legend() # # ax.set_xlabel('Варианты') # # ax.set_ylabel('Абсолютная частота') # ax.set_title('Прямые среднеквадратической регрессии') # # fig.tight_layout() # plt.show() borders_x, buckets_x = lab1.get_interval_sample(sample_density) borders_y, buckets_y = lab1.get_interval_sample(sample_elastic) freqs_x = [len(array) for array in buckets_x] freqs_y = [len(array) for array in buckets_y] mid_borders_x = [(border[0] + border[1]) / 2 for border in borders_x] mid_borders_y = [(border[0] + border[1]) / 2 for border in borders_y] for elem in mid_borders_x: print("{0:.2f}".format(elem), end=" ") print() # print(freqs_x) for elem in mid_borders_y: print("{0:.2f}".format(elem), end=" ") print() # print(freqs_y)
As = m3 / pow(sigma, 3) E = (m4 / pow(sigma, 4)) - 3 return X_cherta, S if __name__ == "__main__": general_population = lab1.read_data(filename=lab1.data_file_name) # sample = lab1.get_sample(general_population, lab1.selection_size) sample_density = lab1.get_sample_first(general_population, lab1.selection_size) sample_elastic = lab1.get_sample_second(general_population, lab1.selection_size) curr_sample = sample_elastic borders, buckets = lab1.get_interval_sample(curr_sample) lab1.print_beautiful_interval_freq(buckets, borders) mid_borders = [round((border[0] + border[1]) / 2) for border in borders] C = mid_borders[max([(len(bucket), i) for i, bucket in enumerate(buckets)])[1]] # h = mid_borders[1] - mid_borders[0] h = int((mid_borders[-1] - mid_borders[0]) / (len(mid_borders) - 1)) # вроде работает, на за счёт округление может быть шляпа table = build_table(curr_sample) for row in table: for number in row: print("{0:.2f}".format(number), end=" ") print(end="\n")