Allow users to pass non-Zelig fitted model objects to `setx`--proposed modified Zelig workflow
@izahn and I were having a chat yesterday about how to make Zelig more accessible to a wider range of users. One particular issue we discussed was the zelig estimation step.
Advantages and difficulties
This step has a lot of advantages--works well with Amelia and MatchIt, provides a common syntax for a lot of models, allows the implementation of methods such as gim. However, it has a few disadvantages:
-
creates potential for code breaks if
zeligstops being able to feed information to the wrapped estimation function -
creates potential for code breaks if
zeligsyntax changes -
creates Zelig estimation objects that can be difficult to use with non-Zelig post-estimation functions
-
if users already have their code written with
lm,glm, etc, then to add Zelig qi sims/plots they need to rewrite their code -
hard to document
Is there a way have both the advantages of zelig and alleviate these issues?
Proposed modified Zelig workflow
I think there might be, and it may not actually require a lot of new code. Here's my early early thought:

Workflow A: The workflow on the left is the current Zelig 5 workflow.
Workflow B: The workflow on the right starts with users estimating their model with a currently wrapped estimation function. They then pass the fitted model object to setx. setx recognises that the object is not a Zelig object, but is from a supported model. So it passes the object to a new function called to_zelig, which converts it to a Zelig fitted model object. This is then passed to setx and the workflow converges with Workflow A.
Of course this proposal does not address all of the issues mentioned above.
Thoughts?
Side note: this may also make it easier for us to move more of the external estimation packages to Suggests (see https://github.com/IQSS/Zelig/issues/170).
I'm not sure I understand the use-case very well. Perhaps if you want to port existing code to Zelig that would be helpful. But the cost of changing a few lines doesn't seem that bad if you really care about what setx gives you.
The other direction seems more important to me: for example, getting a glm object out of zelig. Say you want to use another package which is not directly compatible with Zelig (e.g., texreg or plotMElm), then it would be nice to have an easy way to get a glm object out of your Zelig(model='logit').
@izahn actually also brought this up. Something like a from_zelig function:

I think that makes a lot of sense and shouldn't be too difficult to implement (famous last words).
FYI, from_zelig_model is available from version 5.0-15.