Skip to content

ordinal_reg model type with polr engine #4

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
corybrunson opened this issue Nov 2, 2024 · 3 comments
Open

ordinal_reg model type with polr engine #4

corybrunson opened this issue Nov 2, 2024 · 3 comments

Comments

@corybrunson
Copy link
Owner

As a new model type and first and probable default engine, my understanding is that these both need to be defined, using separate make_*() functions. I've drafted both in this fork branch and raise the issue ahead of submitting a pull request.

Should the issue remain open until the entire checklist #3 is completed? If so, then shall we copy the checklist here? (These would be my suggestion.)

(In future, i will raise an issue before doing substantive work, but in this case the work was worth the familiarity-building.)

@corybrunson corybrunson changed the title draft ordinal_reg model type with polr engine ordinal_reg model type with polr engine Nov 2, 2024
@corybrunson
Copy link
Owner Author

corybrunson commented Nov 3, 2024

Coordination with the rest of Tidymodels is underway in ordinal_reg fork branches of {parsnip} and of {dials}. One tunable parameter is added—the ordinal link function—following the pattern set by the existing survival link function for {censored}.

@topepo
Copy link
Collaborator

topepo commented Nov 8, 2024

I think that the first thing to figure out is the parameters for ordinal_reg(). For slope/intercept models, there are a few to think about:

  • The "family" (I don't want to use that name) that defines how different logistic models are combined into a multiclass model: "cumulative_logits," "adjacent_categories," "continuation_ratio," or "stopping_patio.". I think that "formulation" or "odds_model" might be good names for this parameter.

  • The proportionality assumption: "proportional" versus... "disproportional", "non_porportional"?

  • The link function (e.g. logit, probit, etc)

Once we settle on these main arguments and their names, then we can populate ordinal_reg() in parsnip and make some engines.

@corybrunson
Copy link
Owner Author

  1. Some literature i've read refers to these as "classes" (also not a good choice). I would slightly prefer "formulation" because (a) it avoids "model" and (b) it evokes "formula", but "odds_model" might be easier for users to recognize for what it is. Wurm &al characterize this as the first part of a composite link function (p. 3), so would it make sense to provide e.g. probability_link or odds_link for this choice and ordinal_link for the elementwise link function? I don't know if that characterization extends to all ordinal regression models.
  2. Is there a package that gives control of the proportionality assumption to the user? I may have missed it.
  3. This is named ordinal_link in my fork branch of {dials}, by analogy to survival_link.
  4. Wurm &al describe a coupling between parallel and non-parallel forms of each of their ordinal models (p. 2–3). My inkling is that this should be suppressed / not be exposed in {parsnip} because the non-parallel forms are not specific to ordinal regression.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants