beacon-biosignals / Effects.jl

Effects Prediction for Regression Models
MIT License
19 stars 4 forks source link

error from empairs #63

Closed PharmCat closed 7 months ago

PharmCat commented 10 months ago

I have error from code

    cat_mm  = fit(LinearMixedModel, @formula(CAT_SCORE~0+Vizit+HTPuse+AGE+SEX+PACK_YEARS+NATION+DIS_LUNG+MARITAL_STATUS+Vizit*HTPuse+(1|CODE_CAT)), ds_work_cat, REML = true, 
contrasts = Dict(:Vizit => StatsModels.DummyCoding(base = "V02"), 
:HTPuse => StatsModels.DummyCoding(base = "CC"), 
:NATION => StatsModels.DummyCoding(base = "Азиатская"), 
:SEX => StatsModels.DummyCoding(base = "мужской"), 
:DIS_LUNG => StatsModels.DummyCoding(base = "нет"), 
:MARITAL_STATUS => StatsModels.DummyCoding(base = "Нет"))
)
empairs(cat_mm)

Error msg:

ERROR: MethodError: Cannot `convert` an object of type 
  String7 to an object of type
  Union{Number, String}
Closest candidates are:
  convert(::Type{S}, ::CategoricalValue) where S<:Union{AbstractChar, AbstractString, Number} at C:\Users\a\.julia\packages\CategoricalArrays\0yLZN\src\value.jl:92
  convert(::Type{T}, ::T) where T at Base.jl:61
Stacktrace:
  [1] setindex!(h::Dict{String, Union{Number, String}}, v0::String7, key::String)
    @ Base .\dict.jl:382
  [2] (::Effects.var"#24#26"{String, String, DataFrame, Vector{String}})(::Vector{DataFrameRow{DataFrame, DataFrames.Index}})
    @ Effects C:\Users\a\.julia\packages\Effects\eXakY\src\emmeans.jl:149
  [3] MappingRF (repeats 2 times)
    @ .\reduce.jl:95 [inlined]
  [4] _foldl_impl(op::Base.MappingRF{Combinatorics.var"#10#13"{Combinatorics.var"#reorder#11"{DataFrames.DataFrameRows{DataFrame}}}, Base.MappingRF{Effects.var"#24#26"{String, String, DataFrame, Vector{String}}, Base.BottomRF{typeof(vcat)}}}, init::Base._InitialValue, itr::Combinatorics.Combinations)
    @ Base .\reduce.jl:58
  [5] foldl_impl
    @ .\reduce.jl:48 [inlined]
  [6] mapfoldl_impl
    @ .\reduce.jl:44 [inlined]
  [7] #mapfoldl#259
    @ .\reduce.jl:170 [inlined]
  [8] mapfoldl
    @ .\reduce.jl:170 [inlined]
  [9] #mapreduce#263
    @ .\reduce.jl:302 [inlined]
 [10] mapreduce
    @ .\reduce.jl:302 [inlined]
 [11] empairs(df::DataFrame; eff_col::String, err_col::Symbol, padjust::Function)
    @ Effects C:\Users\a\.julia\packages\Effects\eXakY\src\emmeans.jl:142
 [12] empairs(model::LinearMixedModel{Float64}; eff_col::Nothing, err_col::Symbol, invlink::Function, levels::Dict{Any, Any}, dof::Nothing, padjust::Function)
    @ Effects C:\Users\a\.julia\packages\Effects\eXakY\src\emmeans.jl:128
 [13] empairs(model::LinearMixedModel{Float64})
    @ Effects C:\Users\a\.julia\packages\Effects\eXakY\src\emmeans.jl:124
 [14] top-level scope
    @ REPL[33]:1

my data types:

image

masai2018 commented 7 months ago

I got the same error.

palday commented 7 months ago

A stopgap fix would be to convert the relevant column to String. I'll also check whether we have an unnecessarily strict type restriction in the code.