Рассчитать «R Square» и «P-значение» для множественной линейной регрессии в TSQL

У нас просто есть несколько встроенных функций в SQL Server для выполнения сложного статистического анализа, но мне нужно вычислить множественную линейную регрессию в TSQL.

Основываясь на этом сообщении (функция множественной линейной регрессии в SQL Server), Я мог бы получить Coefficients за Intercept (Y), X1 и X2.

Мне нужно p-value для X1 и X2, а также R Square

Тестовые данные:

DECLARE @TestData TABLE (i INT IDENTITY(1, 1), X1 FLOAT, X2 FLOAT, y FLOAT)

INSERT @TestData
    SELECT 0, 17, 210872.3034 UNION ALL
    SELECT 0, 23, 191988.2299 UNION ALL
    SELECT 0, 18, 204564.9455 UNION ALL
    SELECT 0, 4, 189528.9212 UNION ALL
    SELECT 0, 0, 200203.6364 UNION ALL
    SELECT 11, 0, 218814.1701 UNION ALL
    SELECT 5, 0, 220109.2129 UNION ALL
    SELECT 2, 0, 214377.8534 UNION ALL
    SELECT 1, 0, 204926.9208 UNION ALL
    SELECT 0, 0, 202499.4065 UNION ALL
    SELECT 0, 3, 196917.8182 UNION ALL
    SELECT 0, 9, 202286.0012

Желаемый результат:

R Square    0.4991599183412360
p-value X1  0.0264247876580807
p-value X2  0.7817597643898020

Я уже смог получить следующие данные из приведенных выше тестовых данных.

b               Coefficients
----------------------------------
Intercept (Y)   202119.231151577
X1 C(H)         1992.8421941724
X2 C(C)         -83.8561622730127 

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

Мне известно о Пакеты функций XLeratorDB для SQL Server


person sqluser    schedule 04.05.2015    source источник
comment
Почему бы вам просто не использовать метод, описанный в посте, на котором вы основываетесь, и не написать себе оболочку CLR для желаемой функциональности Math.NET? Это довольно просто, как это сделать.   -  person Staeff    schedule 04.05.2015
comment
Спасибо за ваш ответ. Мне нужно вычислить их в TSQL. Моя ситуация не позволяет мне использовать библиотеку Math.NET или любое другое стороннее приложение.   -  person sqluser    schedule 04.05.2015


Ответы (1)


Вы можете рассчитать R в квадрате вручную и создать переменную «R2», равную (Nxysum - xsumysum)^2/ (Nx2sum - xsumxsum) (Ny2sum - ysumysum)?

Где xsum и ysum — сумма ваших значений, а N — количество наблюдений.

Формула для R Squared достаточно проста, поэтому вам не обязательно нужна какая-либо функция или статистическое программное обеспечение. Проверьте эту ссылку для расчета вручную: http://sciencefair.math.iit.edu/analysis/linereg/hand/

Вы можете применить ту же логику к T-SQL.

person Jacob    schedule 16.07.2015