Changelog
Source:NEWS.md
OneSampleMR v0.1.9
CRAN release: 2026-10-21
New function
lsmm()fits the double logistic structural mean model (LSMM) of Vansteelandt and Goetghebeur (2003), which estimates a causal odds ratio, by two-step GMM with multiple instruments as described by Clarke et al. (2015). It hasprint()andsummary()methods, the summary includes the Hansen J-test of the overidentifying restrictions, and covariates are handled as inmsmm(). It is the same estimator as theivlsmmcommand in the Stata package ivonesamplemr, and its estimates agree withivlsmm.tsps()andtsri()withlink = "logmult"now converge to the solution of the estimating equations. Previously the GMM optimizer often stopped at its iteration limit, giving slightly inaccurate estimates and a non-convergence warning. The starting values are now obtained by solving the second stage estimating equations exactly by Newton-Raphson, rather than from a gamma regression with zero outcomes replaced by 0.001. The estimates now agree with the Stata commandsivtspsandivtsriin the ivonesamplemr package.tsps()andtsri()no longer give a spurious non-convergence warning when the optimizer has reached the minimum of the GMM objective function (which is 0 because these models are exactly identified).msmm()withestmethod = "gmm"or"gmmalt"now uses a tighter convergence tolerance for the Nelder-Mead optimizer (reltol = .Machine$double.eps,maxit = 1E4), so that the estimates converge to the minimum of the GMM objective function. Previously the default tolerance could stop the optimizer early, so estimates depended on the starting values and could differ in the second or third decimal place from the solution of the estimating equations. Estimates from exactly identified models now agree withivtools::ivglm()G-estimation and with Stata’sivpoisson gmm, multiplicative.The parameters in the output of
tsps()andtsri()are now labelled by stage and variable name. First stage parameters are prefixedstage1:, the second stage exposure and covariate parameters take their variable names (previously, e.g.,xhatxhatandxhatcovariatesfortsps()), and the first stage residual intsri()is labelledstage1:residuals(previouslyresres). The same labels are used when the user specifiest0, andtsps()andtsri()now give a clear error message ift0has the wrong length. The documentation oft0has been corrected.The print and summary methods for
tsps()andtsri()fits now only exponentiate the exposure parameter in the causal risk ratio or causal odds ratio table. Previously all the second stage parameters were exponentiated and presented as causal ratios, including the intercept, any covariates, and, fortsri(), the coefficient of the first stage residuals.msmm()now distinguishes covariates (variables included in both the exposure and instrument parts of the formula) from exposures. The causal risk ratio table (crrci) now only contains the exposures; previously it also reported the exponentiated covariate coefficients as causal risk ratios. The covariate adjusted model itself is unchanged, and is the same model as fitted by Stata’sivpoisson gmm, multiplicativewith exogenous covariates. The returned object has a newcovariateselement, the print methods list the covariates adjusted for and note thatE[Y(0)]is then estimated at covariate values of 0, and covariate adjustment is documented with an example in?msmm. Covariates with the"tsls"and"tslsalt"methods now give a clear error message.
OneSampleMR 0.1.8
CRAN release: 2026-07-08
Bump roxygen2 to 8.0.0.
Fixed a bug in
fsw()for models fitted byivreg::ivreg()which reported conditional F statistics for the wrong variables when exogenous covariates were listed before the exposures in the model formulaFixed a bug in
tsps()andtsri()which produced incorrect estimates when exogenous covariates were listed before the exposure or the instruments in the model formulatsps()andtsri()now give a clear error message when more than one exposure is specified, when a variable is namedy(which is reserved for internal use), and their print methods no longer error when a user specified unnamedt0is used with a log-link or logit-link modelfsw()now detects ordered factor exposures, and its factor exposure error message is restored for theivreg::ivreg()method and fixed for thefixest::feols()methodmsmm()now gives its intended error message for non-integer outcomes and a corrected message for negative outcomestsps()andtsri()are now roughly 2 times faster because the first stage regression is computed once instead of on every evaluation of the GMM moment functions, and the moment conditions in all three GMM based estimators are now vectorisedInternal refactoring: the four
fsw()methods now share a common engine, the eighttsps()/tsri()moment functions are reduced to one per estimator, and dead code has been removed
OneSampleMR 0.1.7
CRAN release: 2026-03-09
-
fsw()can now calculate Sanderson-Windmeijer conditional F statistics for models fitted byAER::ivreg(),estimatr::iv_robust(), andfixest::feols()(thanks @nvitt)
OneSampleMR 0.1.5
CRAN release: 2024-06-26
- Replaced dots checking with rlang instead of the ellipsis package (thanks @olivroy).
OneSampleMR 0.1.4
CRAN release: 2024-06-13
Add
CITATIONfileTweak formatting of code in helpfile examples and vignettes
Add subsection to README about GNU Fortran requirement for old versions of the gmm package on macOS
Bumped the minimum required version of R to be 4.1.0. This is because of the same requirement in pbkrtest, which is a dependency of car which is a dependency of ivreg
Bumped version of roxygen2 used to create the package documentation
Made use of ellipsis
...in several function definitions safer using the ellipsis packageBumped required version of R to 4.3.0 because the Matrix package, which is a dependency of ivreg now requires R 4.4.0. CRAN retain a binary version of Matrix 1.6-5 for the previous release of R, and so the minimum version of R can be 4.3.0 rather than 4.4.0.
OneSampleMR 0.1.3
CRAN release: 2023-05-03
Update roxygen2 version used to generate documentation
Reduce the number of functions imported from other packages