Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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)
Esempio n. 4
0
    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)
Esempio n. 5
0
# 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)
Esempio n. 6
0
    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")