Теория вероятностей с питоном: среднее значение, стандартное отклонение - PullRequest
0 голосов
/ 25 октября 2018

Так что я относительный новичок в питоне и абсолютный новичок в вероятности.Я изучаю теорию вероятностей, создавая простую программу на python.

Программа пытается смоделировать данные о животных в зоопарке.У нас есть 100 случайных животных различного веса от 1 кг до 6000 кг.

Имея имеющиеся у нас данные, есть ли какие-нибудь интересные статистические данные, которые мы можем извлечь из данных, которыми я не занимаюсь в настоящее время?Кто-нибудь может порекомендовать модели, которые могут быть применены к данным?Или разные способы нанесения данных разными методами или моделями.Любые ссылки или примеры, которые показывают, как составить различное понимание данных, будут очень приветствоваться.Кроме того, любые ссылки на вероятность или статистику, которые могут быть применены к данным.

Генерация случайных данных

def generateRandom():
   animal_weights = []

   animal_weights.append(random.sample(range(4000, 6001), 7))
   animal_weights.append(random.sample(range(2500, 4000), 13))
   animal_weights.append(random.sample(range(800, 2500), 20))
   animal_weights.append(random.sample(range(100, 800), 20))
   animal_weights.append(random.sample(range(25, 100), 20))
   animal_weights.append(random.sample(range(1, 25), 20))

#creates 1 single list
   flat_list_animals = [item for sublist in animal_weights for item in sublist]
   random.shuffle(flat_list_animals)

   return np.array(flat_list_animals)

Затем мы получаем среднее значение данных, стандартное отклонение и вероятность того, что если животное было случайно выбрано изсписок, это будет слон или очень большое животное.

def do_stats(animal_list):
    animal_mean = np.mean(animal_list)
    print("Mean weight of animal list: ", animal_mean)

    stand_dev = np.std(animal_list, dtype=np.float64)
    print("Standard deviation of animal list: %.2f"%stand_dev)

    stan_error_mean = stand_dev / (math.sqrt(len(animal_list)))
    print("Standard error of the mean: %.2f"% stan_error_mean)

    prob_of_elephants = len(animal_list) / 7
    print("Probability of randomly selecting an elephant or large animal over 4000kg: %.2f"% prob_of_elephants)

Затем мы случайным образом выбираем 20 элементов из списка, 20 раз, вычисляя каждый раз среднее и стандартное отклонение.Затем мы рассчитываем среднее из 20 выборочных средних и стандартного отклонения.

def calculate_random_means(animal_list) :
    random_means = []
    random_std_dev = []
    for i in range(20):
        index = np.random.choice(animal_list.shape[0], 20, replace=False) 
        #creates a random list of 20 
        random_list = animal_list[index]
        stand_dev = np.std(random_list, dtype=np.float64)
        random_std_dev.append(stand_dev)

        random_mean = np.mean(random_list)
        random_means.append(random_mean)
        print("Mean of the random sample of the list", random_mean)
    return random_means, random_std_dev

np_random_means, random_std_dev = np.array(calculate_random_means(animal_list))
average_random_mean = np.average(np_random_means)
print("\nAverage mean of 20 random samples: %.2f"% average_random_mean)

average_random_std = np.average(random_std_dev)
print("\nAverage standard devation of 20 random samples: %.2f"% average_random_std)

Наконец, мы наносим среднее и стандартное отклонение плюс среднее среднее и стандартное отклонение.

materials = ['Mean', 'Average Sample Mean']
x_pos = np.arange(len(materials))

CTEs = [animal_mean, average_random_mean]
error = [stand_dev, average_random_std]
numbers = [0,1000,2000,3000,4000,5000,6000]
fig, ax = plt.subplots()
#align='center'
ax.bar(x_pos, CTEs, yerr=error, ecolor='black', capsize=10)
ax.set_ylabel('X')
ax.set_yticks(numbers)
ax.set_xticks(x_pos)
ax.set_xticklabels(materials)
ax.set_title('Mean and stanard devation')
ax.yaxis.grid(True)

# Save the figure and show
plt.tight_layout()
plt.show()

enter image description here

1 Ответ

0 голосов
/ 25 октября 2018

Дело в том, что ваши данные одномерны.Все, из чего он состоит, - это вес 100 животных.

Обычно в статистике есть целевая переменная (что вы пытаетесь объяснить или предсказать) и пояснительные переменные (переменные, которые помогут вам объяснить или предсказатьцелевая переменная).Например, если вы хотите построить статистическую модель веса каждого животного и также знаете (например) рост и возраст каждого животного, простая статистическая модель может выглядеть следующим образом:

Вес =а + б * рост + с * возраст.Статистический метод (например, наименьших квадратов, который вы можете википедии) выберет числа a, b и c, которые сделают левую часть уравнения как можно ближе к правой части уравнения.Таким образом, модель может выглядеть как Вес = 10 + 5,6 * рост - 2,6 * возраст (цифры, конечно, полностью составлены).Это означает, что если у вас есть какое-либо животное, для которого известны его рост и возраст, вы можете использовать это уравнение для прогнозирования веса животного (и, например, заключить, что есть вероятность 95%, что вес животного составляет от 60 кг до 90 кг (опять же, составленные числа))

Поскольку у вас есть только 1 переменная, все, что вы действительно можете сделать, это построить гистограмму и рассчитать такие вещи, как средний вес, стандартное отклонение веса, самый низкий вес, самый большой вес,процентили веса и т. д. Гистограмма веса журнала может быть более понятной для визуализации.

Кроме того, вероятность слона (например) - это просто количество слонов в выборке, деленное на общее количество животных (что на самом деле просто математика средней школы)

...