在R中是否有一个函数可以打印glm的拟合结果函数的最终形式? 我想复制粘贴结果并在c#或java中使用它。
例如,这是我的模型:
set.seed(101)
g1=sin((1:1000)/60/pi)+runif(1000)^0.3
g2=cos((1:1000)/90/pi)+runif(1000)^0.3
gl=g1-g2+(g1*g2)+rnorm(10)/2
mymodel = lm(gl~poly(g1,3)+poly(g2,3)+poly(g1*g2,3))
我需要一个多项式函数方程来在其他应用程序中使用它。
答案 0 :(得分:1)
这不是完全一般的,但可以解决您的具体问题,并且应该具有适应性。
我稍微修改了这个例子(特别是使用raw=TRUE
):
set.seed(101)
g1=sin((1:1000)/60/pi)+runif(1000)^0.3
g2=cos((1:1000)/90/pi)+runif(1000)^0.3
gl=g1-g2+(g1*g2)+rnorm(10)/2
mymodel <- lm(gl~poly(g1,3,raw=TRUE)+
poly(g2,3,raw=TRUE)+poly(g1*g2,3,raw=TRUE))
cc <- coef(mymodel)
pfun <- function(x,v) {
paste(x,paste(v,seq(length(x)),sep="^"),sep="*",
collapse="+")
}
pfun(1:3,"x")
## [1] "1*x^1+2*x^2+3*x^3"
strwrap(paste(c(cc[1],pfun(cc[2:4],"g1"),pfun(cc[5:7],"g2"),
pfun(cc[8:10],"(g1*g2)")),collapse="+ "))
## [1] "-0.0503143118026683+"
## [2] "1.04495433152782*g1^1+-0.212330489393473*g1^2+0.0378835573948955*g1^3+"
## [3] "-1.0979460962483*g2^1+-0.240393392043387*g2^2+0.0724299094173384*g2^3+"
## [4] "1.4803777033041*(g1*g2)^1+-0.0638557942781872*(g1*g2)^2+-0.00209039494007401*(g1*g2)^3"