Julia 朱莉娅:在@formula中,我如何指定除target之外的所有列?

Julia 朱莉娅:在@formula中,我如何指定除target之外的所有列?,julia,Julia,在R 将使用除目标之外的所有数据列拟合模型 如何使用@formula宏在Julia中实现同样的效果 glm(target ~., data=data) 不起作用为了简单起见,我假设数据是DataFrames.jl中的数据帧。下面是一个如何执行此操作的示例: glm(@formula(target ~ .), data) 但是,通常我会尽量避免这样做(即使用同义词),因为明确指定模型中要包含的变量通常更安全。请注意,在我展示的模式中,这非常容易,因为您需要做的唯一一件事是将名称(df,而不是(

在R

将使用除目标之外的所有数据列拟合模型

如何使用
@formula
宏在Julia中实现同样的效果

glm(target ~., data=data)

不起作用

为了简单起见,我假设
数据
是DataFrames.jl中的数据帧。下面是一个如何执行此操作的示例:

glm(@formula(target ~ .), data)
但是,通常我会尽量避免这样做(即使用同义词
),因为明确指定模型中要包含的变量通常更安全。请注意,在我展示的模式中,这非常容易,因为您需要做的唯一一件事是将
名称(df,而不是(:x1))
替换为要包含的变量列表,例如

julia> df = DataFrame(rand(6, 5))
6×5 DataFrame
│ Row │ x1         │ x2        │ x3       │ x4       │ x5        │
│     │ Float64    │ Float64   │ Float64  │ Float64  │ Float64   │
├─────┼────────────┼───────────┼──────────┼──────────┼───────────┤
│ 1   │ 0.774058   │ 0.248908  │ 0.926771 │ 0.544818 │ 0.159493  │
│ 2   │ 0.549339   │ 0.60138   │ 0.711105 │ 0.916472 │ 0.703073  │
│ 3   │ 0.455965   │ 0.0912193 │ 0.178479 │ 0.472463 │ 0.0229811 │
│ 4   │ 0.0242736  │ 0.0131428 │ 0.833545 │ 0.232273 │ 0.170568  │
│ 5   │ 0.00796519 │ 0.0655102 │ 0.326123 │ 0.61535  │ 0.148247  │
│ 6   │ 0.653029   │ 0.695704  │ 0.817001 │ 0.11801  │ 0.459253  │

julia> lm(term(:x1) ~ sum(term.([1; names(df, Not(:x1))])), df)
StatsModels.TableRegressionModel{LinearModel{GLM.LmResp{Array{Float64,1}},GLM.DensePredChol{Float64,LinearAlgebra.Cholesky{Float64,Array{Float64,2}}}},Array{Float64,2}}

x1 ~ 1 + x2 + x3 + x4 + x5

Coefficients:
─────────────────────────────────────────────────────────────────────────────
              Estimate  Std. Error    t value  Pr(>|t|)  Lower 95%  Upper 95%
─────────────────────────────────────────────────────────────────────────────
(Intercept)  -0.24995     0.358235  -0.697725    0.6122   -4.80176    4.30186
x2            2.12158     0.784308   2.70504     0.2254   -7.84399   12.0872
x3            0.483761    0.411032   1.17694     0.4484   -4.73889    5.70641
x4            0.747987    0.48225    1.55104     0.3646   -5.37958    6.87555
x5           -2.21183     1.03313   -2.14091     0.2782  -15.339     10.9153
─────────────────────────────────────────────────────────────────────────────
正如你所看到的,它非常灵活

names(df, All(r"first_type_of_predictors", r"second_type_of_predictors")))