patsy icon indicating copy to clipboard operation
patsy copied to clipboard

"+ -1" equivalence with "-1" in patsy formula?

Open lebedov opened this issue 5 years ago • 2 comments

As per patsy's documentation, the following results in a design matrix with no intercept:

>>> patsy.dmatrix('a + b - 1',
       pandas.DataFrame({'a':[1,2], 'b':[3,4]}))
DesignMatrix with shape (2, 2)
  a  b
  1  3
  2  4
  Terms:
    'a' (column 0), 'b' (column 1)

The documentation seems to imply that appending + -1 to the formula a + b should have the same effect as appending '-1'; however, it doesn't seem that the intercept is removed for the former:

>>> patsy.dmatrix('a + b + -1',
       pandas.DataFrame({'a':[1,2],'b':[3,4]}))
DesignMatrix with shape (2, 3)
  Intercept  a  b
          1  1  3
          1  2  4
  Terms:
    'Intercept' (column 0)
    'a' (column 1)
    'b' (column 2)

Is the above expected?

I'm using patsy 0.5.1 with python 3.7.6 and pandas 1.0.5.

lebedov avatar Jul 20 '20 02:07 lebedov

Thanks for reporting this @lebedov. This does look like a bug, and despite the feature freeze, probably one worth patching. I'll look into it when I get a chance.

Note that this works in patsy's upcoming successor Formulaic as expected:

from formulaic import Formula

Formula('a + b + -1')  # Outputs: a + b

matthewwardrop avatar Sep 25 '21 21:09 matthewwardrop

Thanks for letting me know about Formulaic!

lebedov avatar Sep 26 '21 03:09 lebedov