AndroWatts independent reanalysis protocol, 6 October 2026
Written after inspecting the publication, column names, and source conversion, but before fitting any model.
Use all 1000 public Pixel 8 workload profiles. This is a public-data reanalysis, not newly collected data and not transfer of ZTE coefficients.
Target: source analysis.py uses BATTERY_DISCHARGE_RATE_UAS * 4.4; divide by 1e6 for W. This is a nominal-voltage battery-power proxy, not independently calibrated terminal power. No actual voltage is available in the aggregate file. Also report errors as equivalent current MAE (W/4.4 A).
Inputs: 11 non-power workload metrics (RGB, brightness, 3 CPU frequencies, 2 GPU frequencies, GPU memory, Wi-Fi bytes). Exclude all power rails, battery readings, temperature, identifiers and extra inferred components. Wi-Fi is total bytes per fixed-duration profile, not an independently measured rate.
Compare training-mean, CPU-only ordinary least squares (OLS), all-input OLS, and all-input nonnegative least squares with a nonnegative intercept. Model settings fixed, no model selection on tests. Negative OLS predictions retained for honest reporting.
Five held-out contiguous ID groups of 200 profiles, fitting on the remaining 800. Impute each feature's missing or infinite values using training mean only; scale by training standard deviation for numerical conditioning. No centering for NNLS so its coefficient interpretation remains nonnegative in the original feature coordinates. No random row split. IDs have no verified timestamp interpretation, so this is profile-block cross-validation, not prospective or chronological validation. Check identical feature rows before claiming distinct profiles.
Additional sensitivity: first 700 IDs train, final 300 IDs test; explicitly an ID-order split, not time.
Save all predictions and per-fold MAE, RMSE, signed bias and R2; pooled out-of-fold metrics are descriptive. Folds overlap in training and are not independent phone experiments. No p values or device-population confidence intervals.
No inference that physical component coefficients are identifiable or transferable. ODPM rails excluded as predictors, and per-component truth not evaluated here. Cite original MobileSoft paper and CC-BY-4.0 data deposit.

Source-driven preprocessing correction: after the first execution, inspection of source analysis.py lines 898-901 established that Wi-Fi zero is a missing-value sentinel (and CPU-mid 'err' is missing). The final analysis follows that documented coding and imputes from training means. This correction is not selected on predictive performance; all models, folds, and all rows remain unchanged. Original source instead applies full-dataset medians; we avoid that preprocessing leakage.
