Так что я относительный новичок в питоне и абсолютный новичок в вероятности.Я изучаю теорию вероятностей, создавая простую программу на 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()