Расширение "Статистическая связь двух переменных"
Расширение предназначено для формирования базовых данных, необходимых для простейшего исследования статистической связи двух переменных. Оно позволяет:
рассчитать коэффициент корреляции двух переменных;
построить уравнение линейной регрессии;
табулировать значения уравнения линейной регрессии для фактических значений аргумента;
получить данные по отклонениям линейной регрессии от фактических значений;
получить графическое представление точек фактических данных и уравнения линейной регрессии;
строить тестовые массивы данных, равномерно разбросанных вокруг аналитически заданного тренда;
строить уравнения степенной и экспоненциальной регрессии.
Расширение требует наличия файлов x_s1.api, x_s1.php, x_s1.txt, x_s2.api, x_s2.php, x_s2.txt, (не входят в базовую комплектацию).
Функция s2()
Функция s2(x,y[,p]) возвращает массив, содержащий элементы:
kk - коэффициент корреляции переменных;
a - свободный член уравнения линейной регрессии y на x;
b - коэффициент при независимой переменной уравнения линейной регрессии y на x;
r2 - значение коэффициента R-квадрат;
ulr - текстовое представление уравнения регрессии.
gxy - имя файла, содержащего изображение, представляющее фактические данные и значения, рассчитанные в соответствии с уравнением регрессии.
Если параметр p=0 (значение по умолчанию), то элемент gxy в массив не включается. Если p>1, то функция не только возвращает массив указанных выше значений, но и выводит график из данного файла на страницу. Вывод графика возможен только в том случае, если в системе установлено расширение
Графики (не входит в базовую комплектацию).
Параметры x и y могут быть строками, содержащими разделённые пробелами фактические значения в формате [ключ:]значение или уже готовыми одномерными массивами.
Разметка
~x=massiv("1 2 3 4 5 6 7")
~y=massiv("2.4 3.7 6.2 7.7 10.5 12.2 13.7")
~u=s2(x,y)
@vms(u)
Вывод
Array
(
[kk] => 0,99673419461949
[a] => 0,17142857142857
[b] => 1,9714285714286
[r2] => 0,99347905472377
[ulr] => Y=0,17142857142857+1,9714285714286*X
)
То же самое, но с выводом графика:
Разметка
~u=s2(x,y,2)
@vms(u)
Вывод
Array
(
[kk] => 0,99673419461949
[a] => 0,17142857142857
[b] => 1,9714285714286
[r2] => 0,99347905472377
[ulr] => Y=0,17142857142857+1,9714285714286*X
[gxy] => vf/6ab3a83a71ebe.jpeg
)
Полученные данные можно вывести и более изящно, используя возможности системы. Например:
Разметка
~u=s2(x,y,1)
@nt(1)
@nst(1)
@td(u('ulr'),2)
@kst()
@st(1,'Свободный член',u('a'))
@st(1,'Наклон прямой',u('b'))
@st(1,'Коэффициент корреляции',u('kk'))
@st(1,'R-квадрат',u('r2'))
@kt()
@vis(u('gxy'))
Вывод
| Y=0,17142857142857+1,9714285714286*X |
| Свободный член |
0,171 |
| Наклон прямой |
1,97 |
| Коэффициент корреляции |
0,997 |
| R-квадрат |
0,993 |
Функция s2td - формирование тестовых данных
Детальное описание в процессе разработки
s2td(formula,xmin,xmax,po,kz)
Функция s2ur - одновременное построение линейной, степенной и экспоненциальной регрессии
Детальное описание в процессе разработки
s2ur(vx,vy,p)
Линейный тест
Разметка
~t=s2td('2+0.3*x',0,10,30,50)
~l=s2ur(t('x'),t('y'))
Вывод
|
sko |
formula |
| lr |
16,4 |
2,1086002689273+0,27778322817479*x |
| er |
17,3 |
2,2109568721968*exp(0,084227538467746*x) |
| sr |
21,8 |
2,5877849064553*pow(x,0,19246077646805) |
sko: Сумма квадратов отклонений расчётных данных от фактических
| FZ |
Фактические значения |
| LR |
Линейная регрессия |
| ER |
Экспоненциальная регрессия |
| SR |
Степенная регрессия |
Экспоненциальный тест
Разметка
~t=s2td('2*exp(x*0.1)',0,10,30,50)
~e=s2ur(t('x'),t('y'))
Вывод
|
sko |
formula |
| lr |
25,0 |
1,6851200326258+0,35919077650453*x |
| er |
23,7 |
1,966051018096*exp(0,10118882603105*x) |
| sr |
48,5 |
2,5356243892201*pow(x,0,19432986787097) |
sko: Сумма квадратов отклонений расчётных данных от фактических
| FZ |
Фактические значения |
| LR |
Линейная регрессия |
| ER |
Экспоненциальная регрессия |
| SR |
Степенная регрессия |
Степенной тест
Разметка
~t=s2td('2*pow(x,0.2)',0,10,30,50)
~s=s2ur(t('x'),t('y'))
Вывод
|
sko |
formula |
| lr |
14,3 |
1,7972688456105+0,16830975419688*x |
| er |
15,8 |
1,7459432129323*exp(0,073338027552262*x) |
| sr |
12,3 |
2,0117331276728*pow(x,0,19268234117538) |
sko: Сумма квадратов отклонений расчётных данных от фактических
| FZ |
Фактические значения |
| LR |
Линейная регрессия |
| ER |
Экспоненциальная регрессия |
| SR |
Степенная регрессия |