Розподіл, що має діапазон від 0 до 1 і з піком між ними?


13

Чи є розподіл чи я можу працювати з іншого дистрибутива, щоб створити такий розподіл на зображенні нижче (вибачення за погані малюнки)?

розповсюдження де я даю число (0,2, 0,5 та 0,9 у прикладах), де має бути пік, і стандартне відхилення (сигма), яке робить функцію ширшою або менш широкою.

PS: Коли задане число 0,5, розподіл є нормальним розподілом.



19
зауважте, що випадок 0,5 не буде нормальним розподілом, оскільки діапазон нормального розподілу становить ±

8
Якщо ваші знімки буквально , то немає розподілу , які виглядають як що , так як область у всіх випадках строго менше 1. Якщо ви збираєтеся обмежити підтримку , [0,1]то ви не можете обмежити діапазон PDF для [0,1]а (за винятком тривіального рівномірного випадку).
Джон Коулман

Відповіді:


29

Один з можливих варіантів - бета-розподіл , але повторно параметризований за середнім та точністю ϕ , тобто "для фіксованих μ , чим більша величина ϕ , тим менша дисперсія y " (див. Ferrari та Cribari- Neto, 2004). Функція щільності ймовірності будується шляхом заміни стандартних параметрів розподілу бета на α = ϕ μ та β = ϕ ( 1 - μ )μϕμϕyα=ϕμβ=ϕ(1μ)

f(y)=1B(ϕμ,ϕ(1μ))yϕμ1(1y)ϕ(1μ)1

де і V a r ( Y ) = μ ( 1 - μ )E(Y)=μ .Var(Y)=μ(1μ)1+ϕ

Крім того, ви можете обчислити відповідні параметри і β, які призвели б до розподілу бета-версії із заздалегідь визначеними середніми та дисперсійними. Однак зауважте, що існують обмеження щодо можливих значень дисперсії, які дійсні для бета-розподілу. Для мене особисто параметризація з використанням точності більш інтуїтивна (подумайте про хαβ пропорції убіноміально розподіленому X , з розміром вибірки ϕ та ймовірністю успіху μ ).x/ϕ Xϕμ

Розподіл Kumaraswamy - це ще один обмежений безперервний розподіл, але його було б важче перепараметризувати, як вище.

Як зауважили інші, це не нормально, оскільки нормальний розподіл має підтримку , тож у кращому випадку можна використовувати усічений нормал як наближення.(,)

Ferrari, S., & Cribari-Neto, F. (2004). Бета-регресія для моделювання темпів та пропорцій. Журнал прикладної статистики, 31 (7), 799-815.


Мені подобається ваша відповідь, я побудував із неї кілька графіків. Єдина проблема, яку я маю - це те, що я не можу контролювати ширину (сигма при нормальному розподілі кривої). Я хотів би мати формулу, яка обчислює значення phi, коли задається певне значення сигми. Проблема, яку я маю, полягає в тому, що крива повертається догори дном або приймає дивну форму, саме такої поведінки я хочу уникати.
Stan Callewaert

Коротше кажучи: я хотів би дати му та сигму функції, а потім отримати розподіл, який є широким, коли сигма велика і тонка (але не перевертається догори дном і не показує дивної поведінки), коли сигма мала .
Stan Callewaert

1
ϕ=μ(1μ)/σ21αβμ=1/2ϕ>2σ<0.707

2
Ще одна річ, що слід зазначити, що ви, звичайно, можете використовувати суміші бета-розподілів, якщо один бета-розподіл недостатньо гнучкий.
Björn

@knrumsey Я використовував ту саму формулу для phi, єдина проблема, яку я, мабуть, полягає в тому, що коли сигма велика кількість, фі стає негативним числом, а значить, альфа також стає від'ємним числом. Альфа не може бути негативною згідно Вікіпедії. Чи є для цього рішення?
Stan Callewaert

5

α(α+β)


1
Виглядає дуже цікаво, але як я можу перетворити своє число (пікове значення) та свою сигму на значення альфа та бета?
Stan Callewaert

1
Просто подивіться на вікіпедію ... це двопараметричний розподіл. Між ними можна налаштувати ваше максимальне значення (з додатковою свободою).

5

y=exp(x)1+exp(x)yx

exp(x)1+exp(x)

y=F(x)F()yF()xxyxy

yxF()


0

Якщо когось цікавить рішення, я використовував у Python для генерування випадкового значення, близького до заданого числа, як параметр. Моє рішення існує з чотирьох етапів. На кожному етапі шанс, що згенероване число наблизиться до заданого числа, більше.

Я знаю, що рішення не таке прекрасне, як використання одного дистрибутива, але саме таким чином я зміг вирішити свою проблему:

number_factory.py:

import random
import numpy as np

class NumberFactory:
    def __init__(self):
        self.functions = [self.__linear, self.__exponential_point_four, self.__exponential_point_three, self.__exponential_point_twenty_five]  
        self.stage = 0

    def next_stage(self):
        self.stage += 1

    def get_mutated_number(self, number):
         # True if the generated number will be higher than the given number
         # False if the generated number will be lower than the given number
        add = bool(np.random.choice([0,1], p=[number, 1-number]))

        # Generate a number between 0 and 1 that will be used
        # to multiply the new number by which the number parameter will be substracted or added
        # The bigger the stage number (0-3) the more change that the mutated number is close to the number parameter
        multiply_number_seed = random.uniform(0, 1)
        multiply_number = self.functions[self.stage](multiply_number_seed)

        if (add):
            return number+((1-number)*multiply_number)
        else:
            return number-(number*multiply_number)

    def __linear(self, x):
        return -x+1

    def __exponential_point_four(self, x):
        return 0.4*x**2 - 1.4*x + 1

    def __exponential_point_three(self, x):
        return 0.8*x**2 - 1.8*x + 1

    def __exponential_point_twenty_five(self, x):
        return x**2 - 2*x + 1

    def get_stage(self):
        return self.stage

main.py:

import matplotlib.pyplot as plt
import numpy as np

factory = NumberFactory()
numbers = []

factory.next_stage()
factory.next_stage()
factory.next_stage()

for _ in range(100000):
    numbers.append(factory.get_mutated_number(0.3))

bins = 100

plt.hist(numbers, bins, normed=True)
plt.plot(1, np.ones_like(bins))
plt.show()

результат при виконанні цього коду показано на малюнку нижче: Графік


0

Ви можете поглянути на "криві Джонсона". Див. NL Johnson: Системи частотних кривих, що генеруються методами перекладу. 1949 р. Біометрика Том 36 с. 149-176. R має підтримку для їх пристосування до довільних кривих. Зокрема, його корисні криві SB можуть бути корисними.

Минуло 40 років, як я їх використовував, але вони мені були дуже корисні в той час, і я думаю, вони працюватимуть для вас.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.