What is associated with daily bike demand?
A reproducible analysis of real Capital Bikeshare daily counts, 2011–2012

DATA AND PREPARATION
731 daily records, 16 original columns. Zero blank cells, duplicate rows or duplicate dates. All rows retained.
Exclude casual and registered because they add exactly to cnt. Exclude instant and atemp. Derive calendar controls from date.
Retain the recorded zero in the primary analysis, flag it, and refit without that single day as a sensitivity check. No silent replacement or imputation.
Keep temperature normalized because current UCI metadata and archive README conflict on conversion.

METHOD
cnt ~ trend_years + C(month) + C(weekday) + holiday + temp10 + temp10_sq + hum10 + wind10 + C(weather)
Maximum likelihood, statsmodels discrete NegativeBinomial, BFGS; alpha estimated, not fixed
HAC sandwich covariance with 7 daily lags and finite-sample correction; approximate 95% pointwise intervals
Model refitted on all 731 days after the separate chronological evaluation; coefficients are exploratory associations, not holdout estimates or causal effects

TRAINING COMPARISON
Poisson: n=547; AIC=66197.63; Pearson dispersion=109.200; holdout MAE=688.60; RMSE=927.85 rentals/day.
Negative Binomial (NB2): n=547; AIC=8815.65; Pearson dispersion=0.894; holdout MAE=863.45; RMSE=1122.79 rentals/day.
Poisson has lower held-out MAE and RMSE here. NB2 is selected for its count-variance specification and association reporting, not as a universal predictive winner.

CONDITIONAL ASSOCIATIONS (ALL 731 DAYS)
Temperature — Normalized temperature 0.50 → 0.60; other covariates held fixed: +7.84% (95% HAC interval +4.77% to +11.00%).
Humidity — +10 percentage points in recorded relative humidity: -5.05% (95% HAC interval -7.34% to -2.71%).
Wind speed — +0.10 in normalized wind speed (6.7 original units; unit unspecified in archive): -9.27% (95% HAC interval -11.71% to -6.76%).
Mist / cloudy weather — Weather category 2 versus clear/few clouds (category 1): -8.97% (95% HAC interval -13.23% to -4.50%).
Light rain / snow — Weather category 3 versus clear/few clouds (category 1): -50.37% (95% HAC interval -60.09% to -38.28%).
Holiday — Holiday versus non-holiday, with weekday held fixed: -16.85% (95% HAC interval -28.49% to -3.31%).

VALIDATION AND LIMITATIONS
Chronological training n=547, 2011-01-01–2012-06-30; holdout n=184, 2012-07-01–2012-12-31.
Full-model Pearson residual lag-1 autocorrelation=0.387; residual dependence remains.
Removing the flagged humidity day changes the +10pp humidity association from -5.05% to -5.94%.
An illustrative independent analysis on public data, not a demonstration of computations executed by the OptiMod product.
Associations are conditional and observational. They do not establish that changing weather or calendar factors causes the estimated demand change.
Daily recorded rentals can be constrained by available bikes, capacity, closures and system growth. No station-level inventory, prices, population or service interruptions are modelled.
Only one city/system and two historical years. Performance does not establish transfer to another fleet or current operations.
Held-out predictions use observed same-day weather and cannot be advertised as advance forecasts.
Residual serial dependence can remain. HAC intervals address uncertainty under weak dependence but do not fix a misspecified mean model.
Weather category 3 has 21 observations and category 4 is absent; severe-weather effects are uncertain and cannot be extrapolated safely.
Intervals are pointwise exploratory intervals without multiplicity adjustment; the same data support model description and association reporting.
Suspicious zero humidity is retained, with sensitivity analysis. Contradictory temperature metadata prevent a defensible Celsius conversion here.

SOURCE
Fanaee-T, H. (2013). Bike Sharing [Dataset]. UCI Machine Learning Repository. https://doi.org/10.24432/C5W894.
CC BY 4.0
https://archive.ics.uci.edu/dataset/275/bike+sharing+dataset

REPRODUCTION
python -m pip install -r requirements.txt
python analyse.py
Computations use statsmodels, not an OptiMod product runtime. Original input SHA-256: a6bcf826782d3c0fbfdcbeead17cd0884185a0dafe8ff10cd48a874ee7ba18be
