Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Better optimisation method for Dixon-Coles model #1

Closed
Torvaney opened this issue May 27, 2018 · 5 comments
Closed

Better optimisation method for Dixon-Coles model #1

Torvaney opened this issue May 27, 2018 · 5 comments
Assignees
Labels
dixoncoles enhancement New feature or request help wanted Extra attention is needed

Comments

@Torvaney
Copy link
Owner

Use an optimisation routine that enforces the constraints that make the Dixon-Coles model identifiable.

Ideally this would allow arbitrary constraints to be added to additional predictor variables specified in dixoncoles_ext.

@Torvaney Torvaney added the enhancement New feature or request label May 27, 2018
@Torvaney Torvaney self-assigned this May 27, 2018
@Torvaney
Copy link
Owner Author

I think optim is actually kind of okay (aside from warnings resulting from invalid rho estimates).

Currently I'm thinking a method kind of like this might work well:

  • Specify constraints as a list of formulae. Something like c(x) ~ equal_to(0).
    • Could specify the penalty/barrier method here. Like gte_zero('log_barrier') or something.
  • Convert formulae to a set of penalty functions.
  • Create a new objective function as sum of original and the penalty functions.

I guess there could be some difficulties/annoyances with the penalty weights. These would probably need to be customisable either through some control type function argument (or varargs with!!!) or in the constraint/formula specification (like 0.1 * c(x) ~ equal_to(0)).

Sequential solutions with increasing penalty weights should also be considered. In this case each constraint could return a function that takes a weight and returns a penalty function (or just takes weight as an argument - maybe this is more idiomatic in R?).

@Torvaney
Copy link
Owner Author

Another thought: adding constraints to team parameters could be annoying.

One potential solution would be to look for parameters named by off___* or def___*. This would at least work for the default method, even if it is a little inelegant.

@Torvaney
Copy link
Owner Author

The easiest way to make model fitting faster is probably to compute the gradient of the the objective function, rather than relying on gradient-free methods...

@Torvaney Torvaney added the help wanted Extra attention is needed label Aug 14, 2018
@Torvaney
Copy link
Owner Author

Potentially a dumb idea, but given it's just matrices, could try any use the rstudio/keras api??

@Torvaney
Copy link
Owner Author

Closing for now since the kind of optimisation improvements I want would be their own project...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dixoncoles enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant