[Статистика в IT] Простые и быстрые приближения к статистическим функциям
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Задача. Есть калькулятор, но нет под рукой статистических таблиц. Например, нужны таблицы критических точек распределения Стьюдента для вычисления доверительного интервала. Взять компьютер с Excel? Не спортивно.
Большая точность не нужна, можно воспользоваться приближенными формулами. Идея приведённых ниже формул состоит в том, что преобразованием аргумента все распределения можно так или иначе свести к нормальному. Аппроксимации должны обеспечивать как вычисление кумулятивной функции распределения, так и расчет обратной к ней функции.
Начнём с нормального распределения.
$$display$$\Phi(z)=P=\frac{1}{2}\left[1+\mathrm{erf}\left(\frac{z}{\sqrt{2}}\right)\right]$$display$$
$$display$$z=\Phi^{-1}(P)=\sqrt{2}\cdot\mathrm{erf}^{-1}(2P-1)$$display$$
Для него требуется вычислить функцию $inline$\mathrm{erf}(x)$inline$и обратную к ней. Я воспользовался приближением [1]:
$$display$$\mathrm{erf}(x)=\mathrm{sign}(x)\cdot\sqrt{1-\exp\left(-x^{2}\cdot\frac{\frac{4}{\pi}+ax^{2}}{1+ax^{2}}\right)}$$display$$
$$display$$ \mathrm{erf}^{-1}(x)=\mathrm{sign}(x)\cdot\sqrt{-t_2 + \sqrt{t_2^{2}-\frac{1}{a}\cdot \ln t_1}} $$display$$
где $inline$t_1$inline$ и $inline$t_2$inline$ — вспомогательные переменные:
$$display$$t_1=1-x^{2},\:t_2=\frac{2}{\pi a}+\frac{\ln t_1}{2}$$display$$
а константа $inline$a=0.147$inline$. Ниже дан код на языке Octave.
function y = erfa(x)
a = 0.147;
x2 = x**2; t = x2*(4/pi + a*x2)/(1 + a*x2);
y = sign(x)*sqrt(1 - exp(-t));
endfunction
function y = erfinva(x)
a = 0.147;
t1 = 1 - x**2; t2 = 2/pi/a + log(t1)/2;
y = sign(x)*sqrt(-t2 + sqrt(t2**2 - log(t1)/a));
endfunction
function y = normcdfa(x)
y = 1/2*(1 + erfa(x/sqrt(2)));
endfunction
function y = norminva(x)
y = sqrt(2)*erfinva(2*x - 1);
endfunction
Теперь, когда есть функции нормального распределения, приведём аргумент и вычислим t-распределение Стьюдента [2]:
$$display$$F_t(x,n)=\Phi\left(\sqrt{\frac{1}{t_1}\cdot\ln(1+\frac{x^{2}}{n})}\right)$$display$$
$$display$$t=F_t^{-1}(P,n)=\sqrt{n\cdot\exp\left(\Phi^{-1}(P)^{2}\cdot t_1\right)-n}$$display$$
где вспомогательная переменная $inline$t_1$inline$ есть
$$display$$t_1=\frac{n-1.5}{(n-1)^{2}}$$display$$
function y = tcdfa(x,n)
t1 = (n - 1.5)/(n - 1)**2;
y = normcdfa(sqrt(1/t1*log(1 + x**2/n)));
endfunction
function y = tinva(x,n)
t1 = (n - 1.5)/(n - 1)**2;
y = sqrt(n*exp(t1*norminva(x)**2) - n);
endfunction
Идея приближенного вычисления распределения $inline$\chi^{2}$inline$ наглядно представлена формулами [3]:
$$display$$\sigma^{2}=\frac{2}{9n},\:\mu=1-\sigma^{2}$$display$$
$$display$$F_{\chi^{2}}(x,n)=\Phi\left(\frac{\left(\frac{x}{n}\right)^{1/3}-\mu}{\sigma}\right)$$display$$
$$display$$\chi^2=F_{\chi^2}^{-1}(P,n)=n\cdot\left(\Phi^{-1}(P)\cdot\sigma + \mu\right)^3$$display$$
function y = chi2cdfa(x,n)
s2 = 2/9/n; mu = 1 - s2;
y = normcdfa(((x/n)**(1/3) - mu)/sqrt(s2));
endfunction
function y = chi2inva(x,n)
s2 = 2/9/n; mu = 1 - s2;
y = n*(norminva(x)*sqrt(s2) + mu)**3;
endfunction
Распределение Фишера (для $inline$n/k\geq3$inline$ и $inline$n\geq3$inline$) находится в два шага. Сначала аргумент преобразуется к вычислению распределения Фишера через распределение $inline$\chi^2$inline$ [4], а его мы уже знаем, как вычислить.
$$display$$\sigma^2=\frac{2}{9n},\:\mu=1-\sigma^2$$display$$
$$display$$\lambda=\frac{2n+k\cdot x/3+(k-2)}{2n+4k\cdot x/3}$$display$$
$$display$$F_f(x;k,n)=\Phi\left(\frac{\left(\lambda\cdot x\right)^{1/3}-\mu}{\sigma}\right)$$display$$
Найдём обратную функцию, решив квадратное уравнение.
$$display$$q=\left(\Phi^{-1}(P)\cdot\sigma+\mu\right)^3$$display$$
$$display$$b=2n+k-2-4/3\cdot kq$$display$$
$$display$$D=b^2+8/3\cdot knq$$display$$
$$display$$x=F_f^{-1}(P;k,n)=\frac{-b+\sqrt{D}}{2k/3}$$display$$
function y = fcdfa(x,k,n)
mu = 1-2/9/k; s = sqrt(2/9/k);
lambda = (2*n + k*x/3 + k-2)/(2*n + 4*k*x/3);
normcdfa(((lambda*x)**(1/3)-mu)/s)
endfunction
function y = finva(x,k,n)
mu = 1-2/9/k; s = sqrt(2/9/k);
q = (norminva(x)*s + mu)**3;
b = 2*n + k-2 -4/3*k*q;
d = b**2 + 8/3*k*n*q;
y = (sqrt(d) - b)/(2*k/3);
endfunction
Список литературы
- Sergei Winitzki. A handy approximation for the error function and its inverse. February 6, 2008.
- Gleason J.R. A note on a proposed Student t approximation // Computational statistics & data analysis. – 2000. – Vol. 34. – №. 1. – Pp. 63-66.
- Wilson E.B., Hilferty M.M. The distribution of chi-square // Proceedings of the National Academy of Sciences. – 1931. – Vol. 17. – №. 12. – Pp. 684-688.
- Li B. and Martin E.B. An approximation to the F-distribution using the chi-square distribution. Computational statistics & data analysis. – 2002. Vol. 40. – №. 1. pp. 21-26.
===========
Источник:
habr.com
===========
Похожие новости:
- [Информационная безопасность, Исследования и прогнозы в IT, Статистика в IT] 3 самых интересных инцидента в области информационной безопасности за июль 2020
- [Исследования и прогнозы в IT, Учебный процесс в IT, Статистика в IT] «Сетевая Академия ЛАНИТ» проводит опрос об обучении
- [Статистика в IT, Тестирование веб-сервисов, Тестирование мобильных приложений] Выбор мобильных устройств: пошаговая инструкция для начинающих. Часть первая
- [Статистика в IT, Исследования и прогнозы в IT, Интервью] Тесты на статистическую значимость — это чудовищно ущербный инструмент
- [Игры и игровые приставки, Статистика в IT, Финансы в IT] Средний возраст геймера в России — 36 лет. Каждый третий хочет сделать игры своей профессией
- [Статистика в IT, Удалённая работа, Управление персоналом] Только 4% сотрудников говорят, что хотели бы вернуться в офис: исследование
- [Информационная безопасность, Исследования и прогнозы в IT, Статистика в IT] Подборка интересных инцидентов в области ИБ за июнь 2020
- [Data Mining, ВКонтакте API, Статистика в IT] Парадокс дней рождений на данных ВКонтакте
- [Видеоконференцсвязь, Статистика в IT] Во время самоизоляции у россиян вырос интерес к порно и еде
- [GitHub, Информационная безопасность, Статистика в IT] Анализ 170 млн утекших паролей: интересные находки
Теги для поиска: #_statistika_v_it (Статистика в IT), #_approksimatsii (Аппроксимации), #_normalnoe_raspredelenie (нормальное распределение), #_raspredelenie_stjudenta (распределение стьюдента), #_raspredelenie_hikvadrat (распределение хи-квадрат), #_raspredelenie_fishera (распределение фишера), #_statistika_v_it (
Статистика в IT
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 01:11
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Задача. Есть калькулятор, но нет под рукой статистических таблиц. Например, нужны таблицы критических точек распределения Стьюдента для вычисления доверительного интервала. Взять компьютер с Excel? Не спортивно. Большая точность не нужна, можно воспользоваться приближенными формулами. Идея приведённых ниже формул состоит в том, что преобразованием аргумента все распределения можно так или иначе свести к нормальному. Аппроксимации должны обеспечивать как вычисление кумулятивной функции распределения, так и расчет обратной к ней функции. Начнём с нормального распределения. $$display$$\Phi(z)=P=\frac{1}{2}\left[1+\mathrm{erf}\left(\frac{z}{\sqrt{2}}\right)\right]$$display$$ $$display$$z=\Phi^{-1}(P)=\sqrt{2}\cdot\mathrm{erf}^{-1}(2P-1)$$display$$ Для него требуется вычислить функцию $inline$\mathrm{erf}(x)$inline$и обратную к ней. Я воспользовался приближением [1]: $$display$$\mathrm{erf}(x)=\mathrm{sign}(x)\cdot\sqrt{1-\exp\left(-x^{2}\cdot\frac{\frac{4}{\pi}+ax^{2}}{1+ax^{2}}\right)}$$display$$ $$display$$ \mathrm{erf}^{-1}(x)=\mathrm{sign}(x)\cdot\sqrt{-t_2 + \sqrt{t_2^{2}-\frac{1}{a}\cdot \ln t_1}} $$display$$ где $inline$t_1$inline$ и $inline$t_2$inline$ — вспомогательные переменные: $$display$$t_1=1-x^{2},\:t_2=\frac{2}{\pi a}+\frac{\ln t_1}{2}$$display$$ а константа $inline$a=0.147$inline$. Ниже дан код на языке Octave. function y = erfa(x)
a = 0.147; x2 = x**2; t = x2*(4/pi + a*x2)/(1 + a*x2); y = sign(x)*sqrt(1 - exp(-t)); endfunction function y = erfinva(x) a = 0.147; t1 = 1 - x**2; t2 = 2/pi/a + log(t1)/2; y = sign(x)*sqrt(-t2 + sqrt(t2**2 - log(t1)/a)); endfunction function y = normcdfa(x) y = 1/2*(1 + erfa(x/sqrt(2))); endfunction function y = norminva(x) y = sqrt(2)*erfinva(2*x - 1); endfunction Теперь, когда есть функции нормального распределения, приведём аргумент и вычислим t-распределение Стьюдента [2]: $$display$$F_t(x,n)=\Phi\left(\sqrt{\frac{1}{t_1}\cdot\ln(1+\frac{x^{2}}{n})}\right)$$display$$ $$display$$t=F_t^{-1}(P,n)=\sqrt{n\cdot\exp\left(\Phi^{-1}(P)^{2}\cdot t_1\right)-n}$$display$$ где вспомогательная переменная $inline$t_1$inline$ есть $$display$$t_1=\frac{n-1.5}{(n-1)^{2}}$$display$$ function y = tcdfa(x,n)
t1 = (n - 1.5)/(n - 1)**2; y = normcdfa(sqrt(1/t1*log(1 + x**2/n))); endfunction function y = tinva(x,n) t1 = (n - 1.5)/(n - 1)**2; y = sqrt(n*exp(t1*norminva(x)**2) - n); endfunction Идея приближенного вычисления распределения $inline$\chi^{2}$inline$ наглядно представлена формулами [3]: $$display$$\sigma^{2}=\frac{2}{9n},\:\mu=1-\sigma^{2}$$display$$ $$display$$F_{\chi^{2}}(x,n)=\Phi\left(\frac{\left(\frac{x}{n}\right)^{1/3}-\mu}{\sigma}\right)$$display$$ $$display$$\chi^2=F_{\chi^2}^{-1}(P,n)=n\cdot\left(\Phi^{-1}(P)\cdot\sigma + \mu\right)^3$$display$$ function y = chi2cdfa(x,n)
s2 = 2/9/n; mu = 1 - s2; y = normcdfa(((x/n)**(1/3) - mu)/sqrt(s2)); endfunction function y = chi2inva(x,n) s2 = 2/9/n; mu = 1 - s2; y = n*(norminva(x)*sqrt(s2) + mu)**3; endfunction Распределение Фишера (для $inline$n/k\geq3$inline$ и $inline$n\geq3$inline$) находится в два шага. Сначала аргумент преобразуется к вычислению распределения Фишера через распределение $inline$\chi^2$inline$ [4], а его мы уже знаем, как вычислить. $$display$$\sigma^2=\frac{2}{9n},\:\mu=1-\sigma^2$$display$$ $$display$$\lambda=\frac{2n+k\cdot x/3+(k-2)}{2n+4k\cdot x/3}$$display$$ $$display$$F_f(x;k,n)=\Phi\left(\frac{\left(\lambda\cdot x\right)^{1/3}-\mu}{\sigma}\right)$$display$$ Найдём обратную функцию, решив квадратное уравнение. $$display$$q=\left(\Phi^{-1}(P)\cdot\sigma+\mu\right)^3$$display$$ $$display$$b=2n+k-2-4/3\cdot kq$$display$$ $$display$$D=b^2+8/3\cdot knq$$display$$ $$display$$x=F_f^{-1}(P;k,n)=\frac{-b+\sqrt{D}}{2k/3}$$display$$ function y = fcdfa(x,k,n)
mu = 1-2/9/k; s = sqrt(2/9/k); lambda = (2*n + k*x/3 + k-2)/(2*n + 4*k*x/3); normcdfa(((lambda*x)**(1/3)-mu)/s) endfunction function y = finva(x,k,n) mu = 1-2/9/k; s = sqrt(2/9/k); q = (norminva(x)*s + mu)**3; b = 2*n + k-2 -4/3*k*q; d = b**2 + 8/3*k*n*q; y = (sqrt(d) - b)/(2*k/3); endfunction Список литературы
=========== Источник: habr.com =========== Похожие новости:
Статистика в IT ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 01:11
Часовой пояс: UTC + 5