Теория вероятностей с питоном: среднее, стандартное отклонение

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

Теория вероятностей с питоном: среднее, стандартное отклонение

Поскольку это в основном вопрос статистики и вероятности, для Stack Overflow это не по теме. Лучше бы подошло к maths.stackexchange.com или stats.stackexchange.com Возможно, стоит пояснить в вопросе на тех сайтах, что random.sample сэмплы из равномерного распределения.

Dunes 25.10.2018 12:00

Дюны Могут немного подробнее объяснить, что вы имеете в виду под «выборками random.sample из равномерного распределения». Я не совсем понимаю, что вы имеете в виду.

DevRight 25.10.2018 12:22

Это просто означает, что каждое значение в распределении имеет одинаковую вероятность быть выбранным. Например, когда вы бросаете кубик, у вас с такой же вероятностью будет 1, как и 6. Но когда вы бросаете два кубика вместе и складываете, у вас гораздо больше шансов получить 7, чем 2 или 12. Бросок двух кубиков является примером нормальное распределение (также известное как распределение Гаусса). Я плохо разбираюсь в этих сайтах и ​​не хочу предполагать, что они знакомы со случайным модулем Python (хотя, вероятно, и знакомы).

Dunes 25.10.2018 12:33

@Dunes Два кубика - это на самом деле набор точек на перевернутом треугольнике. С 3 становится кривой. По мере увеличения n он будет все больше и больше принимать форму колокола нормального распределения.

btilly 25.10.2018 19:50
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
312
1

Ответы 1

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

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

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

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

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

Хорошо, в этом есть смысл. Есть ли какое-либо значение среднего среднего или среднего стандартного отклонения, и можно ли их использовать для анализа данных?

DevRight 25.10.2018 17:54

Если выбрано случайно, нет. Если рассчитывать на основе разных типов животных (например, рептилий, млекопитающих и т. д.), То возможно. В этом случае независимой переменной будет тип животного.

Mathew Carroll 25.10.2018 18:37

Другие вопросы по теме