I am a statistician and applied mathematician with broad interests in
statistical methodology and computing in the physical sciences. My primary
interest is modeling complicated dependence structure in real-life
temporal/spatial/spatio-temporal processes, and I'm particularly interested in
theoretical questions that are motivated by computationally scalable methods and
I have specific experience in the fields of maximum likelihood estimation for
Gaussian processes, nonparametric spectral density estimation in one and several
dimensions, nonstationary spatio-temporal modeling of micrometeorological
processes, and some applications of signal processing and multiple testing
strategies to the analysis of power systems.
I am currently a PhD student in the
Department of Statistics at Rutgers University
Since August 2016, I have worked at
Argonne National Laboratory
under the supervision of
Statistical computing and algorithms
Spatio-temporal processes, especially spectral domain representations of
multidimensional and nonstationary processes
Nonstationarity, nonlinearity, and non-Gaussianity in time-dependent
Applications in the physical sciences
More abstract stochastic processes, like combinatorial processes
Matrix computations, especially hierarchical matrices and other methods
for scalable dense linear algebra
Applied functional and harmonic analysis
Irregular/nonuniform Fourier-type methods
Inverse problems and data assimilation
I'd like to briefly point out an issue that I have experienced a few times. I
think it's important for scientific practitioners to clean up and package code
to the point where other people who are interested in the work have a fighting
chance of actually running the code themselves. I do my best to meet that
expectation. On the other hand, however, I am not a software engineer, and so my
code is not always perfect in terms of steering users away from footguns or
testing all edge cases. So if you try any of this code, which I sincerely hope
you do, and experience something working way differently (often much worse) than
a paper or figure or example file suggests, please reach out to me before
writing off the code or method completely. There is a non-negligible chance that
I just haven't enforced some aspect of proper usage that may be obvious to a
practitioner in that field---such as sensibly enumerating the observations when
assembling a hierarchical matrix approximation---but that may not occur to
somebody who is just trying out the code or who isn't particularly familiar with
the field. While I obviously do my best to try and enforce proper usage through
the code design itself, it is challenging and I make mistakes. So please do
reach out if you experience surprising things when trying any of these software
packages. There might be an easy remedy, and you might save future users similar
I write all software using the GPLv2 license.
a software companion to "Scalable Gaussian process computations using
hierarchical matrices" in the Julia programming language. It is reasonably
efficient and easy to use for workstation-level problems, up to perhaps a
few million points if you have time or a few hundred thousand if you'd like
to just run something over your lunch break. It is not sufficiently tuned
to be a good choice for clusters, unfortunately. If you have any interest
and/or experience in bringing Julia software up to that level, though,
please do reach out, as I (and I hope other people) still actively develop
and use this package.
a simple software package that provides the obviously efficient matrix
methods for block diagonal matrices that are for some reason not provided
in Julia's LinearAlgebra module by default. 70 loc total and very simple.
a simple software package that provides a convenient interface for simulating
ARMA processes in a convenient format with infinite iterators. The
implementation is very flexible and can be used for any type of process
(univariate, tensor-valued, ...) you can write ARMA equations for. For
univariate processes, some other simple things are implemented, like the
spectral density, autocovariance, and so on.
a simple software package that provides a simple but efficient
implementation of an adaptively weighted multitaper spectral density
estimator. There is a lot of workspace and result caching, so even without
careful pre-allocations repeated calls will be fast.
a simple software package that provides a reasonably tuned function for
evaluating the exact log-likelihood for Gaussian processes and stochastic
estimators for its first and second derivatives. Perhaps more importantly,
it provides a slightly tuned but very flexible trust region optimization
method, which for whatever reason doesn't seem to be all that easy to find
in canned software despite the fact that it clearly works better than line
search methods for maximum likelihood problems.
a sort of software companion to "Flexible nonstationary..." above, this
small package provides a reasonably tuned method for conveniently working
with half-spectral covariance functions for regular data completely in the
time domain. The example files demonstrate how straightforward it is to
build quite complicated models with very little code and then use
automatic differentiation for the derivatives and perform pretty competent
optimization with the trust region method in GPMaxlik.jl.
A short and incomplete list.
was the best boss I'll ever have. I took two of his classes as an
undergraduate that I wasn't entirely ready for and he was patient and
encouraging, and he took a huge chance on me when he hired me at ANL. He
has been a huge influence on my academic interests and on how I approach
problems in general. If he hadn't given me such a huge opportunity and
been so supportive throughout, I probably would not have become a
scientist at all. I really can't say enough about what he's done for me
and how grateful I am.
has been incredibly generous with his time and thoughts. I have done a lot
of exploring in the Rutgers PhD program and Professor Chen has
consistently been patient and supportive beyond what anybody could
taught me basically everything I know about spectral domain
representations of stochastic processes, and was incredibly supportive and
generous with her time when I started at ANL.
's introductory real analysis class was my first serious exposure to the
subject, and the two quarters that I had with him really cemented my love
Was _incredibly_ helpful as I tried to work with the Doppler LIDAR data for
the "Flexible nonstationary..." paper. Taking that data and the relevant
physical properties of the process seriously would have been effectively
impossible without her help. It's hard to overstate how helpful and
informative my conversations with her were.
's introductory course (STAT 244) made me change my undergraduate plans
and try to take statistics seriously. Despite me being pretty annoying,
he's also been consistently patient, helpful, and supportive for over five
years now. He has been incredibly influential on my interests and
taught my favorite course that I took as an undergraduate---complex
analysis---and has been incredibly generous with her time as I've asked
her to write way too many recommendation letters for me.
The entire spatial statistics community has been incredibly warm and welcoming.
I do not use any social media or internet networking websites. If you see any
account with my name on it, please assume that it is not really me. Please
contact me by email at one of these addresses:
I also use XMPP, so if you'd prefer to communicate by instant messaging please
first reach out by email and I will share that contact information with you.
cgeoga $at anl $dot gov
christopher.geoga $at $dot rutgers $dot edu