在T-SQL(SQL server)中重写多边形函数(R)

在T-SQL(SQL server)中重写多边形函数(R),r,tsql,linear-regression,polynomials,R,Tsql,Linear Regression,Polynomials,我在R中建立了一个多项式回归,其中一个变量是一个变量的多项式(3次)。我在R中使用函数poly 现在我想在Sql Server中使用我的模型,我可以将多项式回归的系数复制到Sql Server。在我的模型的以前版本中(没有多项式),所以线性回归,我可以用T-SQL计算结果,但是现在我有了多项式输入变量,我需要它来计算结果 我有Sql Server 2014,所以没有R-services,我只想使用T-Sql来计算解决方案。我的想法是在R中编写类似于poly的函数,但在SQL Server中,我还

我在R中建立了一个多项式回归,其中一个变量是一个变量的多项式(3次)。我在R中使用函数poly

现在我想在Sql Server中使用我的模型,我可以将多项式回归的系数复制到Sql Server。在我的模型的以前版本中(没有多项式),所以线性回归,我可以用T-SQL计算结果,但是现在我有了多项式输入变量,我需要它来计算结果

我有Sql Server 2014,所以没有R-services,我只想使用T-Sql来计算解决方案。我的想法是在R中编写类似于poly的函数,但在SQL Server中,我还没有找到它

具有3次多项式的简单R-var:

polytest<-data.frame(seq(1:20))
colnames(polytest)[1]<-"X"
polytest<-cbind(polytest, poly(polytest$X, degree = 3))
polytest<-polytest[,-c(2,3)]
colnames(polytest)[2]<-"XPOLY3"

是否有可能在SQL Server中直接计算此多项式?

我不知道您的精确数学,但可以在SQL Server中定义一个用户定义的函数,该函数可以满足您的想法(在合理范围内)。也许如果你发布R函数的代码,或者给出一个文档引用,有人可以给出一个准确的答案。从R-doc,它应该基于Kennedy&温柔(1980,第343-4页)中给出的三项递归。上有两种不同的方法来计算多项式,但在RDo中,您是否看到有机会升级到包含R/ML服务的版本?否则我会调查CLR集成。这将允许您实现算法,例如在C#中,最好借助合适的库来完成一些繁重的工作。我将调查是否可以升级,如果可以,也许这是最简单的方法。用T-SQL编写代码并不是那么简单。。。
CREATE TABLE [dbo].[polytest](
    [X] [int] NULL,
    [XPOLY3] [float] NULL
) ON [PRIMARY]

GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (1, -0.43760938779302377)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (2, -0.16122451129216667)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (3, 0.03838678840289679)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (4, 0.17025669679873057)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (5, 0.24341739940189858)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (6, 0.26690108171896487)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (7, 0.24973992925649333)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (8, 0.20096612752104803)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (9, 0.12961186201919273)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (10, 0.044709318257491568)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (11, -0.044709318257491582)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (12, -0.12961186201919278)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (13, -0.20096612752104803)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (14, -0.24973992925649335)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (15, -0.26690108171896487)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (16, -0.24341739940189866)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (17, -0.17025669679873054)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (18, -0.03838678840289686)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (19, 0.16122451129216667)
GO
INSERT [dbo].[polytest] ([X], [XPOLY3]) VALUES (20, 0.43760938779302377)
GO