Я работаю над алгоритмом, который основан на том факте, что наблюдения s обычно распределяются, и я хотел бы проверить надежность алгоритма в этом предположении эмпирически.
Чтобы сделать это, я искал последовательность преобразований , которые постепенно разрушают нормальности . Например, если нормальны, они имеют асимметрию и kurtosis , и было бы неплохо найти последовательность трансформации, которая постепенно увеличивает оба.Y Y = 0 = 3
Моя идея состояла в том, чтобы смоделировать некоторые обычно приблизительно распределенные данные и протестировать алгоритм на этом. Затем проверьте алгоритм на каждом преобразованном наборе данных , чтобы увидеть, насколько сильно меняется выходной результат.T 1 ( Y ) , … , T n ( y )
Обратите внимание, что я не контролирую распределение имитируемых s, поэтому я не могу имитировать их, используя распределение, которое обобщает нормали (такие как перекошенное обобщенное распределение ошибок).
источник
Ответы:
Это можно сделать с помощью преобразования sinh-arcsinh из
Преобразование определяется как
где и . Когда это преобразование применяется к обычному CDF , оно создает унимодальное распределение, параметры которого контролируют асимметрия и эксцесс соответственно (Jones and Pewsey, 2009) в смысле van Zwet (1969) . Кроме того, если и , мы получим исходное нормальное распределение. Смотрите следующий код R δ ∈ R + S ( x ; ϵ , δ ) = Φ [ H ( x ; ϵ , δ ) ] ( ϵ , δ ) ϵ = 0 δ = 1& epsi ; ∈ R δ∈ R+ S( х ; ϵ , δ) = Φ [ H( х ; ϵ , δ) ] ( ϵ , δ) ε = 0 δ= 1
Поэтому, выбрав подходящую последовательность параметров , вы можете сгенерировать последовательность распределений / преобразований с различными уровнями асимметрии и эксцессов и сделать их похожими или отличными от нормального распределения, как вы хотите.( ϵN, δN)
Следующий график показывает результат, полученный с помощью кода R. Для (i) и , и (ii) и .δ = 1 ϵ = 0 δ = ( 0,5 , 0,75 , 1 , 1,25 , 1,5 )ϵ = ( - 2 , - 1 , 0 , 1 , 2 ) δ= 1 ε = 0 δ= ( 0,5 , 0,75 , 1 , 1,25 , 1,5 )
Имитация этого распределения проста, учитывая, что вам просто нужно преобразовать нормальную выборку, используя обратную .( ⋆ )
источник
gamlss.dist::rSHASHo
может сгенерировать это распределение.Это можно сделать с помощью случайных величин / распределений Ламберта W x F. Случайная величина Ламберта W x F (RV) является нелинейно преобразованным (RV) X с распределением F.
Gaussianize()
Они реализованы в
Преобразования Ламберта W x F бывают трех видов:
type = 's'
type = 'h'
type = 'hh'
См. Ссылки на перекос и тяжелый хвост (ы) (Отказ от ответственности: я автор.)
В R вы можете смоделировать, оценить, построить и т. Д. Несколько распределений Ламберта W x F с пакетом LambertW .
источник
Одна такая последовательность - возведение в степень в различной степени. Например
источник
Тот же ответ, что и у @ user10525, но в python
[
источник