I wonder whether some of these methods should be private class methods of BaseSpectral instead.  This way they'd have access to `self.method` and some other arguments.

Also this is a bit non-standard, you could leave kwargs for last and actually prefix it with **. I know it's not a public method so it doesn't really matter, it just crossed my mind.