如何在C ++代码中实现R模型

| 我在R中有一个模型:
> s1 <- toys[1:10000,]
> model <- glm(V11~V2+V3+V5+V7+V8+V9+V10,gaussian,s1)
> model

Call:  glm(formula = V11 ~ V2 + V3 + V5 + V7 + V8 + V9 + V10, family = gaussian, 
    data = s1)

Coefficients:
(Intercept)           V2           V3           V5           V7           V8           V9          V10  
  -0.900106     0.006385    -0.005080     1.006324     0.229282     0.012391    -0.049307    -0.186450  

Degrees of Freedom: 9999 Total (i.e. Null);  9992 Residual
Null Deviance:      11050000 
Residual Deviance: 121200   AIC: 53340 
现在,如何将该R模型编程为C函数? (带有链接的RTFM就足够了) 可能我只需要将R模型中的所有系数乘以它们各自的输入,然后将所有项相加即可得出最终结果?
float model(float v2, float v3, ... float v10)
{
  return -0.900106 * v2 + 0.006385 * v3 + .. + (-0.186450) * v10;
}
我需要独立代码,而不依赖于任何外部来源     
已邀请:
        您需要一个线性回归模型(这里R
glm()
代表广义线性模型,但是当您使用恒等链接时,最终会得到线性回归)。 C语言中有多种实现方式,例如apophenia库,该库具有一组不错的统计函数,并带有针对MySQL和Python的绑定。 GSL和ALGLIB库也有专用算法。 但是,对于轻量级和几乎独立的C代码,我建议您看一下snpMatrix BioC软件包源代码中的ѭ3。 在更新了问题之后,您似乎宁愿根据一组回归参数来预测结果。然后,假设假设模型的一般形式为y = b0 + b1 * x1 + b2 * x2 + ... + bp * xp,其中b0是截距,b1,...,bp是回归系数(从数据中估算出来),计算起来非常简单,因为它是一个加权总和:取p个预测变量的每个观测值,然后乘以b \(不要忘了截距项!)。 您可以使用R
predict()
函数仔细检查结果;这是一个示例,包含两个名为ors5ѭ和
V2
的预测变量,100个观察值以及一个规则的新值网格,用于预测结果(您也可以使用自己的数据):
> df <- transform(X <- as.data.frame(replicate(2, rnorm(100))), 
                                     y = V1+V2+rnorm(100))
> res.lm <- lm(y ~ ., df)
> new.data <- data.frame(V1=seq(-3, 3, by=.5), V2=seq(-3, 3, by=.5))
> coef(res.lm)
(Intercept)          V1          V2 
0.006712008 0.980712578 1.127586352 
> new.data
     V1   V2
1  -3.0 -3.0
2  -2.5 -2.5
...
> 0.0067 + 0.9807*-3 + 1.1276*-3  # with approximation
[1] -6.3182
> predict(res.lm, new.data)[1]
        1 
-6.318185 
    

要回复问题请先登录注册