Acacia koa individual-tree growth and yield data and prediction functions (Hawaii, 1949-2025)
收藏资源简介:
Data, equations, code and projections for the first integrated individual tree growth and yield model for Acacia koa A.Gray (koa), Hawaii's most ecologically and economically significant endemic hardwood. The system has five component equations (static height, height to crown base, diameter increment, height increment and survival), a three stage stand mortality component and a tree list simulator, fitted to permanent plot records from nine data sources that span 1949 to 2025. The deposit holds the tree table (AK_TREE.csv, 17,074 records), the plot summaries (AK_PLT.csv), the plot origin and Biomass Yield Index table (AK_PLT_GEO.csv, which has no location fields despite its name), the crown measurement subset (AK_HCB.csv), the survival fitting table (AK_SURV.csv, 4,869 rows), the statewide BYI raster (BYI_all.tif, EPSG:4326), the Python engine of record (koa_params.py, koa_equations.py, koa_projector.py, threestage.py and the modules they import), the single R carrier of the engine (HiGy_engine_v053_mortality.R, VersionTag HiGyV0.5.3; it replaces koa_prediction_functions.R, HiGy.R and HiGy_engine_v051_mortality.R, which are retired from the payload in version 1.9.0 because each carried a different and non-current constant set, and which remain documented in HiGy_CANONICAL.md and DEPOSIT_CHANGELOG.md), the refit scripts of 16 September 2026 with their v102 result tables (refit_20260916_v102), the v102 projection grid behind manuscript Table 5 and Supplemental Table S13 (engine_v102_out), the v102 number registry (numbers_of_record_v102.json), the verification checks of 17 September 2026 (v100_checks), a column dictionary (data_dictionary.csv), the manuscript supplement (koa_supplemental.docx) and the reproducibility companion documents (koa_deposit_companion_v80.docx and koa_deposit_companion_v82.docx). The lead file is a graphical abstract. No plot coordinates are deposited. Version 1.4.0 removed the LAT and LON columns and the environmental quasi identifier block, and no later version restores them. Zenodo lists files without their folders, so README.md describes every file by folder and FILE_MAP_1.9.0.tsv maps each deposited name to its source. Cite the concept DOI 10.5281/zenodo.21081014, which resolves to the latest version. Release status. Versions 1.5.0 to 1.7.1 (2 to 9 September 2026) and 1.8.0 (17 September 2026, restaged 18 September 2026) were staged and not published. The last published version is 1.4.0 (19 August 2026), so a holder of 1.4.0 receives every change described below at once. Version 1.9.1 (25 September 2026). Corrects the supplement shipped in 1.9.0. The koa_supplemental.docx slot of 1.9.0 (published 25 September 2026 as 10.5281/zenodo.22957726) carried the copy from before the 24 September 2026 reruns pass. 1.9.1 carries the 25 September 2026 supplement: Table S9 and Table S11 completed on the converged v102 fits, the Table S12 Eq. 5 row on the exact maximum likelihood refit, Figures S3 and S7 regenerated at the v102 natural mortality level factor, and the recovered sample restated at 877 events. Inside v100_checks.zip the four Figure S3 and S7 files under trackC2/ (FigS3_survival_recovery_censored.png and .pdf, FigS7_survival_deployability_censored.png and .pdf) are replaced by the 24 September 2026 regenerations, and their producer c2c_figS3_S7_v102_rerun.R with its log c2c_numbers_v102_rerun_20260924.log is added beside them. The seven trackC2 tables behind those figures (FigS3_S7_coefficients.csv, FigS3_S7_composition.csv, FigS3_jackknife_folds.csv, FigS7a_survival_by_interval.csv, FigS7b_density_bins.csv, FigS7b_deployed_M1_natural_paths.csv and FigS7c_observed_expected.csv) are replaced by the 24 September 2026 tables and the three v102 censored survival frames of that run (surv_baseline_rebuilt_v102_censored.csv, surv_recovered_i_v102_censored.csv and surv_recovered_ii_v102_censored.csv) are added; the archive grows from 153 to 158 members and every other member is byte identical to 1.9.0. The graphical abstract header now reads 1.9.1; its data are unchanged. No data frame outside that archive, no engine file and no deposited number changes. Version 1.9.0 (staged 23 September 2026, published 25 September 2026 as 10.5281/zenodo.22957726). The data changed materially after 1.8.0 was staged, so this version carries a new number. (1) Data owner's rulings of 18 September 2026. At a doubled tree visit, meaning two records under one Data, Install, Plot, Tree and Measure, the later record (the larger Age) is kept. Where the two record sets of a plot visit disagree on live status, the later record set is kept. Byte identical rows are collapsed to one. The 2012 diameters of PSP 202 to 204, which were taken below breast height, are kept and flagged as a limitation. (2) Frames. Every fitting frame was rebuilt under those rulings and has one row per natural key. The tree table has 17,074 records, the diameter increment frame 4,790, the height increment frame 3,857, AK_SURV.csv 4,869 rows with 79 deaths, the recovered survival frame 4,298 rows with 877 deaths, and the stand mortality pair table 415 plot intervals. (3) Refits and calibration. The static height, diameter increment, height increment and survival equations, the origin multipliers and the mortality level factors were refit on these frames. Thinning removals stay censored, which leaves 290 of 326 plot intervals, and the Stage 1 and Stage 2 fits are carried forward unchanged. The survival equation that allocates the stand rate among trees is refit on the 877 recovered deaths. The natural mortality level factor is 2.65 (95% plot cluster bootstrap interval 2.11 to 4.40), against 2.59 in 1.8.0, and it ranges from 2.44 to 3.04 when each installation is held out in turn. The planted rate is left unscaled. (4) Projections. Projection intervals come from joint draws of the parameters and of the data sources behind the origin calibration (engine_v102_out/K_joint_*.csv). Standing volume at age 40 runs from 74 to 158 m³ ha⁻¹ in natural and 378 to 560 m³ ha⁻¹ in planted even aged stands from the low to the high site class (engine_v102_out/table8_evenaged_M1.csv). The 23 plot validation table (engine_v102_out/validation_23.csv) is the v102 run; the 1.8.0 staging carried the table of 16 September 2026 at that path. (5) Names. The folder engine_joint_out is renamed engine_v102_out, the folder refit_20260916 is renamed refit_20260916_v102, and FILE_MAP_1.8.0.tsv is renamed FILE_MAP_1.9.0.tsv. The v102 number registry ships as numbers_of_record_v102.json (93 keys, 2 of them not regenerated). (6) Withheld. The increment fitting tables dDBH.csv and dHT.csv and the saved nlme fits that embed them are not deposited, because they carry elevation and terrain covariates. (7) History. The v100_checks tracks of 17 September 2026 ran on the engine of record and are kept as the record of those checks. Top level tables that README.md lists as kept for history are not current numbers. See README.md and DEPOSIT_CHANGELOG.md for the full record. Version history Version 1.8.0 (staged 17 September 2026, restaged on the v102 frames 18 September 2026, not published). It coded stand origin from establishment records, censored thinning removals in the mortality fits, refit the increment equations with a planted level term and calibrated them by origin, introduced the three stage mortality with a natural level factor and the joint Monte Carlo intervals, added the verification checks of 17 September 2026, and placed the reproducibility companion inside the deposit. Its numbers are replaced by those of version 1.9.0. Version 1.0.0 (29 June 2026): initial public deposit, 26 files. Tree-level and plot-level tables, the plot environmental covariate stack, the wall-to-wall Biomass Yield Index raster, the R prediction functions for all five components with the stand-level simulator, the column-level data dictionary, and the manuscript supplemental. Version 1.1.0 (30 June 2026): adds the graphical abstract (00_koa_graphical_abstract.png) and sets it as the lead preview file, giving 27 files. No data file, no script and no equation changed. Versions 1.2.0 and 1.3.x were prepared but never published. The last released version before this one is 1.1.0 of 30 June 2026; the concept record carries only 1.0.0 and 1.1.0. The corrections and additions described in the two paragraphs that follow were assembled in July 2026 and never reached a user, so anyone holding 1.1.0 still holds the defects they fix. They are carried forward in full into version 1.4.0, the next published version, and are described here as the record of what changed and when. Version 1.2.0 (prepared 29 July 2026, not published) is a correctness release. It carries both the corrections below and the intervening working revisions. Four defects in 1.1.0 are corrected. (1) An orientation error in the survival helper of koa_equations.py returned the complement of the modelled survival probability. No script that generates a reported projection calls the affected function, so every reported projection and every reported table is byte-identical before and after this correction. Exactly one figure is not, and the unqualified claim that every figure was byte-identical, which earlier drafts of this description carried, was wrong: panel (c) of Figure 4 plotted the fitted survival function directly instead of routing it through the projection path, was rendered from the defective helper, and had to be regenerated from the Table 6 coefficients with a Monte Carlo uncertainty band and pasted back into the published raster, so panels (a) and (b) of that figure remain unchanged pixels while panel (c) is new. Two interpretations of the Table 6 coefficients that followed from the inverted orientation are withdrawn with it, the crown ratio hazard reading and the reading of the two Biomass Yield Index terms as a mortality maximum at intermediate productivity. Any user who plots the survival helper output directly, rather than feeding it through the calibrated projection path, is exposed in exactly the way panel (c) was. (2) An argument-order error in the height-blending step of koa_projector.py passed quadratic mean diameter in place of site quality, making the static height anchor site-invariant; this did change the reported even-aged projections, so Table 8, Supplemental Table S11 and Figures 5, 6, S7 and S8 were reissued. (3) 520 exact duplicate records were removed from the survival table, 170 from the tree table, and 7,351 interleaved null-padding rows plus 171 duplicates from the plot table. (4) Records with conflicting status within a single tree-measure are flagged rather than altered. Beyond those corrections, version 1.2.0 refreshes the manuscript supplemental to the current build, which adds Table S3c, the survival development-snapshot versus completed-panel comparison, and corrects the deposit documentation so the survival fitting table is described as documenting rather than reproducing the model development snapshot. It adds an integrated long-term validation of the deployed survival equation within the linked projection system (koa_longterm_validation.py with its outputs and FigS9_longterm_survival_validation.png, which together reproduce Supplemental Figure S9), showing that the system reproduces observed stand-level cohort survival at r = 0.71 across remeasured plots and observed density-dependent mortality in the self-thinning zone, and, as that version stated at the time, appearing to confirm SDImax = 500 as the best integrated fit. That confirmation is withdrawn; see the version 1.4.0 paragraph below, where the scalar maximum stand density index is retired with no replacement. The column-level data dictionary is extended to AK_HCB.csv and AK_SURV.csv. It adds regenerate_table6.R, which reproduces the published survival table from the deposited data, and AK_SURV.r, the original script constructing the survival fitting table, whose annualized increment condition is documented as the reason most mortality transitions do not reach the fitted model. This version holds 48 files against the 27 of version 1.1.0. See DEPOSIT_CHANGELOG.md and INTEGRITY_REPORT.md for the full correction record. One further change touches the manuscript figures but not the corrections above. Figures 1 and 2 were reissued on 30 July 2026 as equal-area maps with the land cover classes grouped for legibility, the Biomass Yield Index drawn on a sequential rather than a diverging ramp, panel labels, a scale bar and a north arrow, rendered at 160 mm and approximately 326 dpi in place of versions oversampled to roughly 1670 dpi. That change is cartographic, it alters no reported number, and it is independent of the survival orientation defect. The plot positions drawn in those figures are not part of this deposit, which has carried no coordinates of any kind since version 1.4.0. Version 1.4.0 (19 August 2026) is the restage, and is the first version released since 1.1.0. It supersedes the unpublished 1.2.0 and 1.3.x staging described above and carries every correction they held. The model architecture is final: stand-level mortality is computed by the calibrated density-dependent annual rate (Eq. 5b, onset at stand density index 200 metric, full lift at 850, absolute scale) and disaggregated to individual trees by the fitted tree-level survivor equation used as an ordering weight only, with a post-cap renormalization so the tree rates reproduce the stand rate they came from. No scalar maximum stand density index is deployed anywhere in the production path. The values 500, 933 and 1350 metric are all withdrawn, and SDImax is reporting only; ingrowth carries the absolute-SDI slope of -0.0061866. Long-term validation under the deployed engine: cohort survival bias +0.083, RMSE 0.25, r = 0.651; quadratic mean diameter bias -0.597 cm, RMSE 6.58 cm, r = 0.559; basal area per hectare bias -2.548 m² ha⁻¹, RMSE 16.60 m² ha⁻¹. Four data tables are column-reduced in this version (AK_SURV.csv 128 to 60, AK_HCB.csv 88 to 22, AK_PLT_GEO.csv 77 to 7, AK_PLT.csv 17 to 14), removing an unused environmental quasi-identifier block and the fuzzed LAT and LON columns. Row counts are unchanged, retained fields are byte-identical, and no deposited script reads any removed column; the deposited long-term validation reproduces its published outputs byte-identically from the reduced tables. The companion archive of 5 August 2026 is withdrawn and replaced by companion_survival_respecification_20260819.zip, which presents the withdrawn 1350 and 933 episodes together with the evidence that withdrew them. See README.md, DEPOSIT_CHANGELOG.md and INTEGRITY_REPORT.md for the full record. Version 1.5.0 (staged 2 September 2026, never published) folds three corrections into one version. First, it adds the manuscript's reproducibility companion, koa_deposit_companion_v80.docx (creators Weiskittel, A.R., Sprecher, I., Gottesman, A., Rice, B.), previously undeposited; because 1.5.0 was never published, the companion is first released in 1.9.0. Second, it discloses a coefficient-vector discrepancy in the static height equation (Eq. 2): the manuscript's Table 3 now reports a refit vector (a0=25.37, a1=1.042, b=0.0220, c=0.814, g1=0.0556, g2=-0.282, rDBH=DBH/DBH.max) because the vector this deposit ships and runs operationally (a0=19.832, a1=0.106, b=0.044, c=0.863, g1=-0.198, g2=0.479, rDBH=DBH/QMD, unchanged in koa_equations.py and, at the time they were deposited, in koa_prediction_functions.R, HiGy.R and WeiskittelKoaGy_2026_03_27.r; from version 1.9.0 the deposited R carrier is HiGy_engine_v053_mortality.R) does not reproduce the manuscript's own reported fit statistics under Eq. 2 as printed (R²=-45,683, RMSE=1,136 m). No coefficient in any deposited script was changed; see README.md for the full provenance note. Third, it archives the uncapped-cap Bakuzis sensitivity check referenced from the manuscript supplement: koa_bakuzis_input_UNCAPPED_20260902.csv, console output for both the capped and uncapped runs, and both matrix figures, all under bakuzis_uncapped_20260902/, beside the unchanged capped table of record koa_bakuzis_input.csv. See DEPOSIT_CHANGELOG.md, 2 September 2026 entry, for the full record. Version 1.6.0 (staged 4 and 5 September 2026, manuscript v82, never published; 1.6.1 likewise) replaces the calibrated density ramp with the Garcia (2009) three-stage mortality component. Five candidate arms were built and screened against three hard gates: no even-aged basal area or stand density index exceeding the observed envelope within the 52-year record, the uncapped Bakuzis Reineke self-thinning slope inside -1.2 to -2.2 at a majority of six site-by-origin combinations, and no mortality-driven volume site-ordering inversion. The deployed arm, garcia_qmd_anchored, drives the Garcia step on the allometric height equivalent of quadratic mean diameter (H_QMD) rather than H40, with alpha = gamma = 2.96 and beta anchored at 0.16019053617304435 to the 99th percentile of the observed N by H_QMD² envelope over the deposited plot record; it is the only one of the five arms that passes all three gates. The originally specified H40 arm of 4 September remains callable but is labelled EVALUATED rather than deployed, and the density ramp is retired from the production path, its constants and R and Python implementations kept in the deposit and reachable only by an explicit engine argument. A same-day correction fixed a Monte Carlo error that had treated the anchored beta as a perturbable fitted parameter rather than a fixed calibration constant; every dependent Table 8, Figure 8 and uneven-aged output was regenerated after the fix. Regular-interval annual mortality bias of the deployed step against the 360-interval plot record is -0.0031 per year, tree-year weighted, with a net overprediction of total regular-interval deaths concentrated in the densest plots. On the separate 23-plot long-term validation panel the deployed engine underpredicts observed annual mortality roughly three to four fold by initial-density tertile (projected 0.0175 to 0.0242 per year against 0.0506 to 0.1021 observed), a result kept alongside the more favorable regular-interval figure above rather than in its place. A separate documentation tension is disclosed rather than resolved here: this deposit's own README.md states that a version number 1.6.0 was drafted for this engine work and then abandoned on September 5, 2026 in favor of folding it into version 1.5.0, on the stated rule that one release carries one number, yet this deposit's later documentation continues to treat 1.6.0 and the versions built on it as real, sequential releases, and which account is authoritative was not settled by this deposit's own records at the time this paragraph was written. Version 1.7.0 (staged 8 September 2026, never published) adds a monotone height guard at the harness layer. The fitted static height equation turns over beyond roughly a stand quadratic mean diameter of 87 cm and a basal area of 83 m² ha⁻¹, returning a smaller mean height for a larger stand, which is a property of the fitted surface itself. predict_HT is unchanged and the equation still turns over when evaluated directly; the harness guardrail (koa_params.HARNESS_HT_MONOTONE, applied by koa_projector.ht_monotone_guard) instead carries the running maximum height forward within a trajectory so the reported series is non-decreasing in age. No Table 8 point estimate moved; only four upper height limits and one upper volume limit did, all upward, and every guarded cell is marked by a declared-bound token (ht_monotone in bounds_reported, and new ht_guard columns in the point-estimate and uneven-aged tables) carrying the same disclosure treatment as a value sitting on the diameter harness cap. A refit of the self-thinning limit parameter was built and rejected in the same pass, with the reasoning kept on record so it is not attempted again unchanged. Version 1.7.1 (staged 9 September 2026, never published) closes a gate coverage gap, hardens the reconciliation self-exclusion list, and repoints the manuscript-provenance table to manuscript version 86. Gate C5's monotone-in-age and site-ordering checks now also run, separately within every stored sensitivity variant, against Table8_CI_variants_20260906.csv, which was deposited, declared and shape-pinned but had never itself been checked; five non-monotone height series in the 1.6.1 G_garcia_bounded variant had reached the deposit with every gate green as a result (216 series and 64 age-by-scenario groups tested against the built 1.7.1 tree, zero violations). reverse_reconcile.py's self-exclusion pattern list gains MANIFEST_*.md5 and MANIFEST_*.count, so a future manifest transfer does not trip the reconciliation gate on its own transfer manifest, as the first 1.7.0 landing attempt did. manuscript_tables_3to6.csv, the external, independently sourced side of gate 1, is repointed from koa_manuscript_v83.docx to koa_manuscript_v86.docx; all 38 extracted coefficient and standard-error values are unchanged, so this is a provenance update rather than a content change. No fitted coefficient and no deployed engine constant moves in this version.



