Skip to content

Commit 41b0254

Browse files
authored
fix degree for ConstantTerm/InterceptTerm (#287)
* add tests for currently expected behavior * the fix * also test intercept terms too * bump patch
1 parent bdba80b commit 41b0254

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "StatsModels"
22
uuid = "3eaba693-59b7-5ba5-a881-562e759f1c8d"
3-
version = "0.7.0"
3+
version = "0.7.1"
44

55
[deps]
66
DataAPI = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"

src/terms.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,8 @@ Base.:*(a::TermOrTerms, b::TermOrTerms) = a + b + a&b
414414
cleanup(terms::TupleTerm) = Tuple(sort!(unique!(collect(terms)), by=degree))
415415
cleanup(x) = x
416416

417+
degree(::ConstantTerm) = 0
418+
degree(::InterceptTerm) = 0
417419
degree(::AbstractTerm) = 1
418420
degree(t::InteractionTerm) = mapreduce(degree, +, t.terms)
419421
# dirty hack, move to MixedModels.jl

test/terms.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,4 +274,15 @@ StatsModels.apply_schema(mt::MultiTerm, sch::StatsModels.Schema, Mod::Type) =
274274
@test_throws ArgumentError concrete_term(term(:not_there), t )
275275
end
276276

277+
@testset "sort by degree in ~" begin
278+
one, a, b = term.([1, :a, :b])
279+
for zero_deg in [one, InterceptTerm{true}(), InterceptTerm{false}()]
280+
@test a + zero_deg == (a, zero_deg)
281+
@test (a ~ a + zero_deg) == (a ~ zero_deg + a)
282+
283+
@test a & b + zero_deg + a == (a & b, zero_deg, a)
284+
@test (a ~ a & b + zero_deg + a) == (a ~ zero_deg + a + a & b)
285+
end
286+
end
287+
277288
end

0 commit comments

Comments
 (0)