Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Noncentral Chi-Squared Distribution

Boost , Math Toolkit 2.5.0 , Distributions

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
#include <boost/math/distributions/non_central_chi_squared.hpp>
namespace boost{ namespace math{
template <class RealType = double,
          class Policy   = policies::policy<> >
class non_central_chi_squared_distribution;
typedef non_central_chi_squared_distribution<> non_central_chi_squared;
template <class RealType, class Policy>
class non_central_chi_squared_distribution
{
public:
   typedef RealType  value_type;
   typedef Policy    policy_type;
   // Constructor:
   non_central_chi_squared_distribution(RealType v, RealType lambda);
   // Accessor to degrees of freedom parameter v:
   RealType degrees_of_freedom()const;
   // Accessor to non centrality parameter lambda:
   RealType non_centrality()const;
   // Parameter finders:
   static RealType find_degrees_of_freedom(RealType lambda, RealType x, RealType p);
   template <class A, class B, class C>
   static RealType find_degrees_of_freedom(const complemented3_type<A,B,C>& c);
   static RealType find_non_centrality(RealType v, RealType x, RealType p);
   template <class A, class B, class C>
   static RealType find_non_centrality(const complemented3_type<A,B,C>& c);
};
}} // namespaces

Нецентральное ци-квадратное распределение является обобщениемШи-квадратного распределения. Если Xiявляются ν независимыми, нормально распределенными случайными величинами со средствами μiи дисперсиями σi2, затем случайная величина

Распределяется по нецентральному ци-квадратному распределению.

Нецентральное ци-квадратное распределение имеет два параметра: ν который определяет число степеней свободы (т.е. число Xi) и λ который связан со средним значением случайных величин Xi:

(Обратите внимание, что некоторые ссылки определяют λ как одну половину вышеупомянутой суммы).

Это приводит к PDF из:

гдеf(x;k)является центральным хи-квадратным распределением PDF, аIv(x)является модифицированной функцией Бесселя первого рода.

Следующий график иллюстрирует, как меняется распределение для разных значений λ:

Member Functions
non_central_chi_squared_distribution(RealType v, RealType lambda);

Конструирует Ши-квадратное распределение сvстепенями свободы и параметром нецентральностилямбда.

Требуется v>0 и lambda>=0, иначе вызываетdomain_error.

RealType degrees_of_freedom()const;

Возвращает параметрv, из которого был построен этот объект.

RealType non_centrality()const;

Возвращает параметрлямбда, из которого был построен этот объект.

static RealType find_degrees_of_freedom(RealType lambda, RealType x, RealType p);

Эта функция возвращает число степеней свободыпротивтак, что:<cdf(non_central_chi_squared<RealType,Policy>(v,lambda),x)==p>

template <class A, class B, class C>
static RealType find_degrees_of_freedom(const complemented3_type<A,B,C>& c);

При вызове с аргументом<boost::math::complement(lambda,x, q)>эта функция возвращает число степеней свободыпротивтак, что:

<cdf(complement(non_central_chi_squared<RealType,Policy>(v,lambda),x))==q>.

static RealType find_non_centrality(RealType v, RealType x, RealType p);

Эта функция возвращает нецентральный параметрлямбдатаким образом, что:

<cdf(non_central_chi_squared<RealType,Policy>(v,lambda),x)==p>

template <class A, class B, class C>
static RealType find_non_centrality(const complemented3_type<A,B,C>& c);

При вызове с аргументом<boost::math::complement(v, x, q)>эта функция возвращает нецентральный параметрлямбдатаким образом, что:

<cdf(complement(non_central_chi_squared<RealType,Policy>(v,lambda),x))==q>.

Non-member Accessors

Поддерживаются всеобычные функции доступа, не являющиеся членами, которые являются общими для всех распределений:Кумулятивная функция распределения,Функция плотности вероятности,Количественная,Функция опасности,Кумулятивная функция опасности,среднее,средний,режим,дисперсия,стандартное отклонение,искажение,куртоз,куртоз_избыток,диапазониподдержка.

Доменом случайной переменной является [0, +∞].

Examples

Существуетработающий примердля нецентрального ци-квадратного распределения.

Accuracy

В следующей таблице показаны пиковые ошибки (в единицахэпсилон), обнаруженные на различных платформах с различными типами плавающих точек. Неудачи в сравнении сR Математической библиотекой, по-видимому, в основном заключаются в угловых случаях, когда вероятность была бы очень мала. Если не указано иное, любой тип с плавающей точкой, который является более узким, чем показанный, будет иметьфактически нулевую ошибку.

Table 5.6. Error rates for non central chi squared CDF

Microsoft Visual C++ версия 12.0
Win32
двойная

GNU C++ версия 5.1.0
Linux
Double

GNU C++ версия 5.1.0
Linux
длинный двойной

Солнечный компилятор версии 0x5130
Солнечный солярис

Non Central Chi Squared, средние параметры

Макс = 48,9ε (Средний = 10ε)

Макс = 0.99ε (Средний = 0,0529ε)

Rmath 3.0.2:Макс = 727ε (Средний = 121ε)]

Макс = 46.5ε (Средний = 10.3ε)

Макс = 115ε (Средний = 13.9ε)

Non Central Chi Squared, большие параметры

Макс = 9,79e+003ε (Средний = 723ε)

Макс = 1,07ε (Средний = 0,102ε)
Rmath 3.0.2:Макс = 3,27e+08ε (Средний = 2,23e+07ε)]

Макс = 3.07e+03ε (Средний = 336ε)

Макс = 6.17e+03ε (Средний = 677ε)


Table 5.7. Error rates for non central chi squared CDF complement

Microsoft Visual C++ версия 12.0
Win32
двойная

GNU C++ версия 5.1.0
Linux
Double

GNU C++ версия 5.1.0
Linux
длинный двойной

Солнечный компилятор версии 0x5130
Солнечный солярис

Non Central Chi Squared, средние параметры

Макс = 98.6ε (Средний = 15.8ε)

Макс = 0.96ε (Средний = 0,0635ε)

Rmath 3.0.2:Макс = +INFε (Средний = +INFε)И другие неудачи.

Макс = 107ε (Средний = 17.1ε)

Макс = 171ε (Средний = 22.8ε)

Non Central Chi Squared, большие параметры

Макс = 5,43e+003ε (Средний = 705ε)

Max = 2.11ε (Mean = 0.278ε)

Rmath 3.0.2:Max = +INFε (Mean = +INFε)И другие неудачи.

Макс = 5.02e+03ε (Средний = 630ε)

Макс = 5.1e+03ε (Средний = 577ε)


Показатели ошибок для функций квантиле в целом схожи. Особо следует упомянуть функцию<mode>: для этой функции нет закрытой формы, поэтому она оценивается численно путем нахождения максим PDF: в принципе это не может производить точность, большую, чем квадратный корень эпсилона машины.

Tests

Для проверки этой реализации используются два набора тестовых данных: во-первых, мы можем сравнить их с опубликованными данными, например, с Таблицей 6 «Самопроверяющихся вычислений вероятностей для отдельных центральных и нецентральных одномерных вероятностных функций», Morgan C. Wang and William J. Kennedy, Journal of the American Statistical Association, Vol. 89, No. 427. (Sep., 1994), pp. 878-887. Во-вторых, у нас есть таблицы тестовых данных, вычисленные с помощью этой реализации и с использованием интервальной арифметики - эти данные должны быть точными по крайней мере до 50 десятичных цифр - и используются для наших тестов на точность.

Implementation

ЦДФ и его дополнение оцениваются следующим образом:

Во-первых, мы определяем, какое из двух значений (CDF или его дополнение), вероятно, будет меньшим: для этого мы можем использовать отношение, обусловленное теммой (см. «Асимптотические и численные аспекты нецентрального распределения хи-квадратов», N. M. Temme, Computers Math). Применимо. Том 25, No 5, 55-63, 1993), что:

F(ν,λ;ν+λ; ≈ 0,5

Вычислите CDF, когда случайная переменная меньше ν +λ и ее дополнение, когда случайная переменная больше ν +λ. При необходимости вычисленный результат вычитают из 1 для получения желаемого результата (CDF или его дополнения).

Для малых значений параметра нецентральности CDF вычисляется методом Ding (см. "Algorithm AS 275: Computing the Non-Central #2 Distribution Function", Cherng G. Ding, Applied Statistics, Vol. 41, No. 2. (1992), pp. 478-482). Используется следующее представление серии:

который требует только одного вызоваgamma_p_derivativeс последующими терминами, вычисляемыми рекурсией, как показано выше.

Для больших значений параметра нецентральности метод Дина может принимать необоснованное количество терминов до достижения конвергенции. Кроме того, самый большой термин не является первым термином, поэтому в крайних случаях первый термин может быть нулевым, что приводит к нулевому результату, даже если истинное значение может быть ненулевым.

Поэтому, когда параметр нецентральности больше 200, используется метод, обусловленный Кришнамурти (см. «Вычисление дискретных смесей непрерывных распределений: нецентральный полукруглый, нецентральный t и распределение квадрата многократного корреляционного коэффициента выборки», Денис Бентон и К. Кришнамурти, Computational Statistics & Data Analysis, 43, (2003), 249-267).

Этот метод использует хорошо известную сумму:

где Pa(x) — неполная гамма-функция.

Метод начинается с 955-го термина, где функция взвешивания Пуассона достигает своего максимального значения, хотя это не обязательно самый большой общий термин. Последующие термины рассчитываются через нормальные отношения повторения для неполной гамма-функции, и итерация продолжается как вперед, так и назад, пока не будет достигнута достаточная точность. Следует отметить, что рецидив в направлении вперед Pa(x) является численно неустойчивым. Однако, поскольку мы всегда начинаемпослесамого большого термина в серии, числовая нестабильность вводится медленнее, чем серия сходится.

Вычисление комплемента CDF использует расширение метода Кришнамурти, учитывая, что:

Мы можем снова начать с λ термин и продолжить в обоих направлениях оттуда, пока не будет достигнута требуемая точность. На этот раз это обратная рекурсия на неполную гамма-функцию Qa(x), которая нестабильна. Однако, пока мы начинаем хорошодосамого большого срока, это не является проблемой на практике.

PDF вычисляется непосредственно с использованием отношения:

Гдеf(x; v)является PDF центральногоChi Squared DistributionиIv(x)является модифицированной функцией Бесселя, см.cyl_bessel_i. Для малых значений параметра нецентральности используется отношение в терминахcyl_bessel_i. Однако этот метод не подходит для больших значений параметра нецентральности, поэтому в этом случае бесконечная сумма оценивается методом Бентона и Кришнамурти и обычными отношениями повторения для последовательных терминов.

Функции квантиля вычисляются числовой инверсией CDF. Улучшенный стартовый запрос от Томаса ЛууБыстрые и точные параллельные вычисления функций квантиля для генерации случайных чисел, докторская диссертация, 2016.

Для режима нецентрального ци-квадратного распределения не существуетзакрытой формы: она вычисляется численно путем нахождения максимума PDF. Аналогично, медиана вычисляется численно через квантиль.

Остальные функции, не являющиеся членами, используют следующие формулы:

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

Andrea van Aubel & Wolfgang Gawronski, Applied Mathematics and Computation, 141 (2003) 3-12.


PrevUpHomeNext

Статья Noncentral Chi-Squared Distribution раздела Math Toolkit 2.5.0 Distributions может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Distributions ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 16:12:28/0.007004976272583/0