Np.std в Python из взвешенных выборок отличается от теоретической?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Np.std в Python из взвешенных выборок отличается от теоретической?

Сообщение Anonymous »


Я беру выборку из трех распределений с заданным весом и перекрестно проверяю, работает ли выборка должным образом. В конце этого кода у меня есть несколько проверок, чтобы убедиться, что ожидаемое среднее (вес * среднее значение каждого распределения) одинаково, и что стандартное отклонение также одинаково. Однако я не могу добиться совпадения стандартного отклонения? Я не знаю почему, поскольку считаю, что выборка работает так, как задумано, но мне нужна помощь, чтобы выяснить, почему std_generated и ожидаемый_std отличаются
импортировать numpy как np из scipy.stats показатель импорта np.random.seed(42) # Устанавливаем определенное начальное значение # Предполагая, что disbn_1, disbn_2 и disbn_3 являются вашими замороженными объектами распространения # и w_1, w_2, w_3 — соответствующие вероятности # Настройте объекты распространения par_1 = 2.0 # Отрегулируйте этот параметр в соответствии с вашим конкретным дистрибутивом disbn_1 = экспонента (шкала = пар_1) disbn_2 = expon(scale=1.0) # Отрегулируйте параметры по мере необходимости disbn_3 = expon(scale=0.5) # Отрегулируйте параметры по мере необходимости # Настройка вероятностей w_1, w_2, w_3 = 0,4, 0,3, 0,3 веса = np.array([w_1, w_2, w_3]) # Количество образцов, которые вы хотите сгенерировать num_samples = 5000000 # Увеличить количество выборок # Выборка из распределений с заданными вероятностями selected_distributions = [disbn_1, disbn_2, disbn_3] random_indices = np.random.choice(len(веса), size=num_samples, p=веса) # Используйте np.choose для выбора образцов на основе случайных индексов selected_samples = np.choose(random_indices, [dist.rvs(size=num_samples) для dist в selected_distributions]) # Рассчитать сводную статистику среднее_сгенерированное = np.mean(выбранные_выборки) std_generated = np.std(selected_samples,ddof=0) # Рассчитать ожидаемое среднее и стандартное значение на основе указанного распределения и вероятностей ожидаемое_среднее = np.sum(веса * np.array([dist.mean() для dist в выбранных_распределениях])) ожидаемый_std = np.sqrt(np.sum(weights * np.array([dist.var() для dist в selected_distributions]))) # Отображение результатов print(f"Среднее значение сгенерированных выборок: {mean_generated:.6f}") print(f"Ожидаемое среднее значение на основе распределения: {expected_mean:.6f}") Распечатать() print(f"Стандартное отклонение сгенерированных выборок: {std_generated:.6f}") print(f"Ожидаемое стандартное отклонение на основе распределения: {expected_std:.6f}")
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Сравнение теоретической сложности и времени выполнения в Python
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Сравнение теоретической сложности и времени выполнения в Python
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • `std::map<std::string, enum{1, 2, 3, 4}>` (или std::map<std::string, tuple<bool, bool>>`) кэширует` против `std: :set<st
    Anonymous » » в форуме C++
    0 Ответы
    326 Просмотры
    Последнее сообщение Anonymous
  • Граф взвешенных узлов [закрыт]
    Anonymous » » в форуме C++
    0 Ответы
    54 Просмотры
    Последнее сообщение Anonymous
  • Попытка понять различия в взвешенных выходах логистической регрессии между StatsModels и RESERE и SRVYR Packages
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»