我们在SQL Server中只有很少的内置函数来进行复杂的统计分析,但我需要在TSQL中计算多个线性回归。
根据这篇文章(Multiple Linear Regression function in 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来完成。
答案 0 :(得分:1)
您可以手动计算R Squared并创建一个变量' R2'等于 (Nxysum - xsumysum)^ 2 /(Nx2sum - xsumxsum)(Ny2sum - ysumysum)?
其中xsum和ysum是你的值的总和,N是观察的数量。
R Squared的公式很简单,您不一定需要任何功能或统计软件。查看此链接以便手动计算:http://sciencefair.math.iit.edu/analysis/linereg/hand/
您可以将相同的逻辑应用于T-SQL。