dataframe - 错误: UndefVarError: y not defined

标签 dataframe julia mixed-models

我正在尝试在 julia 中运行混合效果模型(R 对于我的数据来说太慢),但我不断收到此错误。

我已经安装了 DataArrays、DataFrames、MixedModels 和 RDatasets 包,并且正在按照此处的教程 --> http://dmbates.github.io/MixedModels.jl/latest/man/fitting/#Fitting-linear-mixed-effects-models-1

这些是我的步骤:

using DataArrays, DataFrames , MixedModels, RDatasets 

我收到这些警告

WARNING: Method definition ==(Base.Nullable{S}, Base.Nullable{T}) in module Base at nullable.jl:238 overwritten in module NullableArrays at /home/home/.julia/v0.6/NullableArrays/src/operators.jl:128. WARNING: Method definition model_response(DataFrames.ModelFrame) in module DataFrames at /home/home/.julia/v0.6/DataFrames/src/statsmodels/formula.jl:352 overwritten in module MixedModels at /home/home/.julia/v0.6/MixedModels/src/pls.jl:65. WARNING: Method definition ==(Base.Nullable{S}, Base.Nullable{T}) in module Base at nullable.jl:238 overwritten in module NullableArrays at /home/home/.julia/v0.6/NullableArrays/src/operators.jl:128. WARNING: Method definition ==(Base.Nullable{S}, Base.Nullable{T}) in module Base at nullable.jl:238 overwritten in module NullableArrays at /home/home/.julia/v0.6/NullableArrays/src/operators.jl:128. WARNING: Method definition model_response(DataFrames.ModelFrame) in module DataFrames at /home/home/.julia/v0.6/DataFrames/src/statsmodels/formula.jl:352 overwritten in module MixedModels at /home/home/.julia/v0.6/MixedModels/src/pls.jl:65. WARNING: Method definition model_response(DataFrames.ModelFrame) in module DataFrames at /home/home/.julia/v0.6/DataFrames/src/statsmodels/formula.jl:352 overwritten in module MixedModels at /home/home/.julia/v0.6/MixedModels/src/pls.jl:65.

我从 lme4 包中获取 R 数据集(在教程中使用)

inst = dataset("lme4", "InstEval")

julia> head(inst)
6×7 DataFrames.DataFrame
│ Row │ S   │ D      │ Studage │ Lectage │ Service │ Dept │ Y │
├─────┼─────┼────────┼─────────┼─────────┼─────────┼──────┼───┤
│ 1   │ "1" │ "1002" │ "2"     │ "2"     │ "0"     │ "2"  │ 5 │
│ 2   │ "1" │ "1050" │ "2"     │ "1"     │ "1"     │ "6"  │ 2 │
│ 3   │ "1" │ "1582" │ "2"     │ "2"     │ "0"     │ "2"  │ 5 │
│ 4   │ "1" │ "2050" │ "2"     │ "2"     │ "1"     │ "3"  │ 3 │
│ 5   │ "2" │ "115"  │ "2"     │ "1"     │ "0"     │ "5"  │ 2 │
│ 6   │ "2" │ "756"  │ "2"     │ "1"     │ "0"     │ "5"  │ 4 │

我按照教程中所示运行模型

m2 = fit!(lmm(y ~ 1 + dept*service + (1|s) + (1|d), inst))

并得到

ERROR: UndefVarError: y not defined
  Stacktrace:
  [1] macro expansion at ./REPL.jl:97 [inlined]
  [2] (::Base.REPL.##1#2{Base.REPL.REPLBackend})() at ./event.jl:73

当我尝试使用 DataFrames 包中的“readtable”加载自己的数据时,也会发生同样的事情

我正在运行 julia 0.6.0 并且所有软件包都是全新安装的。我的系统是 arch linux 4.11.7-1,包含所有最新的软件包。 Julia 安装没有问题,但某些软件包会发出警告(见上文)。

最佳答案

尝试使用@formula宏:

julia> fit!(lmm(@formula(Y ~ (1 | Dept)), inst), true)
f_1: 250160.38873 [1.0]
f_2: 250175.99074 [1.75]
f_3: 250123.06531 [0.25]
f_4: 250602.3424 [0.0]
f_5: 250137.66303 [0.4375]
f_6: 250129.76244 [0.325]
f_7: 250125.94066 [0.280268]
f_8: 250121.15016 [0.23125]
f_9: 250119.12389 [0.2125]
f_10: 250114.7257 [0.175]
f_11: 250105.61264 [0.1]
f_12: 250602.3424 [0.0]
f_13: 250107.52714 [0.118027]
f_14: 250106.36924 [0.107778]
f_15: 250105.04638 [0.0925]
f_16: 250104.72722 [0.085]
f_17: 250104.93086 [0.0749222]
f_18: 250104.70046 [0.0831588]
f_19: 250104.70849 [0.0839088]
f_20: 250104.69659 [0.0824088]
f_21: 250104.69632 [0.0822501]
f_22: 250104.69625 [0.0821409]
f_23: 250104.69625 [0.0820659]
f_24: 250104.69624 [0.0821118]
f_25: 250104.69624 [0.0821193]
f_26: 250104.69624 [0.082111]
f_27: 250104.69624 [0.0821118]
f_28: 250104.69624 [0.0821117]
f_29: 250104.69624 [0.0821118]
f_30: 250104.69624 [0.0821118]
Linear mixed model fit by maximum likelihood
 Formula: Y ~ 1 | Dept
     logLik        -2 logLik          AIC             BIC       
 -1.25052348×10⁵  2.50104696×10⁵  2.50110696×10⁵  2.50138308×10⁵

Variance components:
              Column     Variance   Std.Dev.  
 Dept     (Intercept)  0.011897242 0.10907448
 Residual              1.764556375 1.32836605
 Number of obs: 73421; levels of grouping factors: 14

  Fixed-effects parameters:
             Estimate Std.Error z value P(>|z|)
(Intercept)   3.21373  0.029632 108.455  <1e-99

这些警告是常见的“Julia(和软件包生态系统)仍在不断变化”消息。但我想知道文档是否始终与代码保持同步。

关于dataframe - 错误: UndefVarError: y not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44937941/

相关文章:

python - 如何通过从组中减去元素来创建变量?例如,每组每行的值 - 组值的第一行

Julia:如何更改贝塞尔函数中参数的类型?

r - GLMM - R 的 Huber-White 稳健标准误差

python - 将 dict 的 pandas dataframe 列扩展为 dataframe 列

r - 一种指示每行多个指标变量的有效方法?

for-loop - Julia - for 循环中的上一个和下一个值

julia - Julia 1.0 中的子字符串与字符比较违反直觉

r - 了解 r lme4 中混合模型的警告消息

r - 使用 MCMCglmm 预先设置 G,具有分类响应和系统发育

r - 如何将空列添加到 r 中的数据框列表