Posts

Fitting a DLNM is simple without the {dlnm} package

This is part of series about distributed lag non-linear models. Please read the first post for an introduction and a disclaimer. Since I’ve been working so much with GAMs for this project, I decided to read sections of Simon Wood’s book, Generalized additive models: an introduction with R more thoroughly.

DLNMs: hypothesis tests and p-values

This is part of series about distributed lag non-linear models. Please read the first post for an introduction and a disclaimer. A major goal of my postdoc project is to determine whether drought has an effect on plant vital rates (growth, survival, reproduction, recruitment).

Speeding up DLNMs with bam()

This is part of series about distributed lag non-linear models. Please read the first post for an introduction and a disclaimer. DLNMs themselves may not be that computationally expensive, but when combined with random effects and other smoothers, and a large-ish dataset, I’ve noticed gam() being painfully slow.

DLNM marginal basis functions

This is part of series about distributed lag non-linear models. Please read the first post for an introduction and a disclaimer. Choosing marginal function to construct a crossbasis According to Gasparrini et al.

Distributed lag non-linear models

Welcome / Disclaimer This is the beginning of a series of blog posts where I publicly stumble my way through figuring out some confusing, complicated, and, frankly, cutting-edge modeling and statistics.

DLNMs: building and visualizing crossbasis functions

This is part of series about distributed lag non-linear models. Please read the first post for an introduction and a disclaimer. The dlnm package The dlnm package offers two ways of fitting crossbasis functions: an “internal” and an “external” method.

Working with matrix-columns in tibbles

What’s a matrix-column? The tibble package in R allows for the construction of “tibbles”—a sort of “enhanced” data frame. Most of these enhancements are fairly mundane, such as better printing in the console and not modifying column names.

Treat your treatments as continuous

Taking a potentially continuous treatment, binning it into categories, and doing ANOVA results in reduced statistical power and complicated interpretation. Yet, as a graduate student, I was advised to bin continuous treatment variables into categories multiple times by different people.

Three ways to plot logistic regressions

If your data is just 1’s and 0’s, it can be difficult to visualize alongside a best-fit line from a logistic regression. Even with transparency, the overplotted data points just turn into a smear on the top and bottom of your plot, adding little information.

Looking under the hood with debug()

If you’ve ever tried to look “under the hood” of an R function, you know that sometimes it can be tricky to figure out what’s going on, especially if you use R more as a statistical tool than as a programming language.