Julia 朱莉娅:我如何用“@公式”中的符号来构造“术语”?

Julia 朱莉娅:我如何用“@公式”中的符号来构造“术语”?,julia,Julia,假设我正在拟合一个GLM,我想使用一个变量来指定特征项,该变量包含我想要拟合的列名列表。我该怎么做 我试过了 using GLM vars = ["b", "b", "c"] glm(@formula(label~terms.(vars)), data = df) 但它不起作用。我想做什么 glm(@formula(label~a+b+b), data=df) 但是当然ab和c是特定于此数据集的。我需要一个可以接受字符串向量格式的

假设我正在拟合一个GLM,我想使用一个变量来指定特征项,该变量包含我想要拟合的列名列表。我该怎么做

我试过了

using GLM
vars = ["b", "b", "c"]
glm(@formula(label~terms.(vars)), data = df)
但它不起作用。我想做什么


glm(@formula(label~a+b+b), data=df)
但是当然
a
b
c
是特定于此数据集的。我需要一个可以接受字符串向量格式的术语集,并为其创建正确的公式。

请参阅以编程方式构造的

如果你有一个字符串向量,你可以

vars = ["a", "b", "c"] .|> Symbol # Or just start with symbols...
f = Term(:label) ~ sum(vars)
glm(f, df, Binomial()) # or whatever you want
建筑产量

julia> f = Term(:label)~sum(Term.(vars))
FormulaTerm
Response:
  label(unknown)
Predictors:
  a(unknown)
  b(unknown)
  c(unknown)

julia> glm(f, df, Binomial())
StatsModels.TableRegressionModel{...

label ~ 1 + a + b + c

Coefficients:
─────────────────────────────────────────────────────────────────────────
                 Coef.  Std. Error      z  Pr(>|z|)  Lower 95%  Upper 95%
─────────────────────────────────────────────────────────────────────────
(Intercept)   1.73573      2.6848    0.65    0.5180   -3.52637    6.99784
a             0.777821     3.78865   0.21    0.8373   -6.6478     8.20344
b            -0.874216     2.48471  -0.35    0.7250   -5.74415    3.99572
c            -2.20088      2.19081  -1.00    0.3151   -6.49478    2.09303
─────────────────────────────────────────────────────────────────────────


注意:我只是得到随机垃圾数据,所以不要关注表内容。

这是否回答了您的问题?