|
4 | 4 | "href": "index.html", |
5 | 5 | "title": "betydata", |
6 | 6 | "section": "", |
7 | | - "text": "betydata is an R data package providing offline access to public data from BETYdb (Biofuel Ecophysiological Traits and Yields database), created for the PEcAn ecosystem modeling framework. It enables reproducible analyses of plant traits, crop yields, and supporting metadata without requiring database connectivity." |
| 7 | + "text": "betydata is an R data package providing offline access to public data from BETYdb (Biofuel Ecophysiological Traits and Yields database). It enables reproducible analyses of plant traits, crop yields, and supporting metadata without requiring database connectivity." |
8 | 8 | }, |
9 | 9 | { |
10 | 10 | "objectID": "index.html#at-a-glance", |
|
137 | 137 | "href": "vignettes/getting_started.html#what-is-betydata", |
138 | 138 | "title": "Getting Started with betydata", |
139 | 139 | "section": "What is betydata?", |
140 | | - "text": "What is betydata?\nThe betydata package provides offline access to public data from BETYdb, the Biofuel Ecophysiological Traits and Yields database. BETYdb is a centralized repository of plant trait measurements and crop yield data used by the PEcAn ecosystem modeling framework.\nA trait is a measurable characteristic of a plant—for example, Specific Leaf Area (SLA, m2/kg), maximum carboxylation rate (Vcmax, umol/m2/s), or leaf nitrogen content (%). A yield is a measure of crop production per unit area (typically Mg/ha). Together, traits and yields form the foundation of ecosystem model parameterization and agricultural research." |
| 140 | + "text": "What is betydata?\nThe betydata package provides offline access to public data from BETYdb, the Biofuel Ecophysiological Traits and Yields database. BETYdb is a centralized repository of plant trait measurements and crop yield data used in ecosystem modeling and agricultural research.\nA trait is a measurable characteristic of a plant – for example, Specific Leaf Area (SLA, m2/kg), maximum carboxylation rate (Vcmax, umol/m2/s), or leaf nitrogen content (%). A yield is a measure of crop production per unit area (typically Mg/ha). Together, traits and yields form the foundation of ecosystem model parameterization and agricultural research." |
141 | 141 | }, |
142 | 142 | { |
143 | 143 | "objectID": "vignettes/getting_started.html#loading-the-package", |
|
207 | 207 | "href": "vignettes/getting_started.html#references", |
208 | 208 | "title": "Getting Started with betydata", |
209 | 209 | "section": "References", |
210 | | - "text": "References\n\nLeBauer, D. S., et al. (2018). BETYdb: a yield, trait, and ecosystem service database applied to second-generation bioenergy feedstock production. GCB Bioenergy. doi:10.1111/gcbb.12420\nLeBauer, D. S., et al. (2013). Facilitating feedbacks between field measurements and ecosystem models. Ecological Monographs, 83(2), 133–154.\nBETYdb documentation: https://pecanproject.github.io/bety-documentation/" |
| 210 | + "text": "References\n\nLeBauer, D. S., et al. (2018). BETYdb: a yield, trait, and ecosystem service database applied to second-generation bioenergy feedstock production. GCB Bioenergy. doi:10.1111/gcbb.12420\nLeBauer, D. S., et al. (2013). Facilitating feedbacks between field measurements and ecosystem models. Ecological Monographs, 83(2), 133–154.\nBETYdb documentation: https://betydb.org" |
211 | 211 | }, |
212 | 212 | { |
213 | 213 | "objectID": "vignettes/manuscript.html", |
|
291 | 291 | "href": "vignettes/pfts-priors.html#sec-background", |
292 | 292 | "title": "Working with Plant Functional Types and Priors", |
293 | 293 | "section": "Background", |
294 | | - "text": "Background\n\nPlant Functional Types\nEcosystem models like PEcAn simulate how plants exchange carbon, water, and energy with the atmosphere. These models require parameter values for photosynthesis rates, leaf properties, allocation fractions, and other ecophysiological quantities. Rather than parameterizing every species individually, models group species into Plant Functional Types (PFTs)—categories like “temperate deciduous trees” or “C4 grasses”—and estimate shared parameters for each group.\n\n\nBayesian Parameterization\nPEcAn uses Bayesian inference to estimate model parameters. The workflow is:\n\nPrior distribution \\(p(\\theta)\\): Encodes existing knowledge about a parameter \\(\\theta\\) before looking at data (e.g. “SLA is around 20 m2/kg with considerable uncertainty”)\nLikelihood \\(p(D|\\theta)\\): How probable the observed trait data \\(D\\) is given parameter values\nPosterior distribution \\(p(\\theta|D)\\): Updated belief after combining prior and data via Bayes’ theorem:\n\n\\[\np(\\theta | D) \\propto p(D | \\theta) \\cdot p(\\theta)\n\\tag{1}\\]\nThe tables in betydata provide the ingredients for this workflow: priors stores prior distributions, traitsview stores the observed data, and pfts/pfts_species/pfts_priors define which priors and species belong to each PFT." |
| 294 | + "text": "Background\n\nPlant Functional Types\nEcosystem models simulate how plants exchange carbon, water, and energy with the atmosphere. These models require parameter values for photosynthesis rates, leaf properties, allocation fractions, and other ecophysiological quantities. Rather than parameterizing every species individually, models group species into Plant Functional Types (PFTs) – categories like “temperate deciduous trees” or “C4 grasses” – and estimate shared parameters for each group.\n\n\nBayesian Parameterization\nBayesian inference is used to estimate model parameters. The workflow is:\n\nPrior distribution \\(p(\\theta)\\): Encodes existing knowledge about a parameter \\(\\theta\\) before looking at data (e.g. “SLA is around 20 m2/kg with considerable uncertainty”)\nLikelihood \\(p(D|\\theta)\\): How probable the observed trait data \\(D\\) is given parameter values\nPosterior distribution \\(p(\\theta|D)\\): Updated belief after combining prior and data via Bayes’ theorem:\n\n\\[\np(\\theta | D) \\propto p(D | \\theta) \\cdot p(\\theta)\n\\tag{1}\\]\nThe tables in betydata provide the ingredients for this workflow: priors stores prior distributions, traitsview stores the observed data, and pfts/pfts_species/pfts_priors define which priors and species belong to each PFT." |
295 | 295 | }, |
296 | 296 | { |
297 | 297 | "objectID": "vignettes/pfts-priors.html#setup", |
|
326 | 326 | "href": "vignettes/pfts-priors.html#sec-prior-vs-data", |
327 | 327 | "title": "Working with Plant Functional Types and Priors", |
328 | 328 | "section": "Comparing Prior to Data", |
329 | | - "text": "Comparing Prior to Data\nA key validation step in Bayesian parameterization: compare the prior distribution to observed data. If the prior assigns negligible probability to regions where data actually falls, the prior may need revision.\n\n\n\n\n\n\nPrior-Data Conflict\n\n\n\nWhen the prior and data disagree strongly, the posterior will be dominated by whichever has lower variance. A very tight prior that disagrees with data can effectively ignore the data—a clear signal to revisit prior specification.\n\n\n\nsla_data <- traitsview |>\n filter(\n trait == \"SLA\",\n genus %in% c(\"Miscanthus\", \"Panicum\"),\n !is.na(mean),\n checked >= 0\n ) |>\n pull(mean)\n\nif (length(sla_data) > 10 && exists(\"prior_x\") && exists(\"prior_y\")) {\n ggplot() +\n geom_histogram(\n data = data.frame(sla = sla_data),\n aes(x = sla, y = after_stat(density)),\n bins = 30, fill = \"steelblue\", alpha = 0.6\n ) +\n geom_line(\n data = data.frame(x = prior_x, y = prior_y),\n aes(x, y),\n color = \"#e74c3c\", linewidth = 1, linetype = \"dashed\"\n ) +\n labs(\n title = \"Prior vs. Observed SLA\",\n subtitle = \"Dashed red = prior distribution | Blue bars = observed data (Miscanthus + Panicum)\",\n x = \"SLA (m2/kg)\",\n y = \"Density\"\n ) +\n xlim(0, 80) +\n theme_minimal(base_size = 12)\n}\n\n\n\n\nFigure 2: SLA: Prior distribution vs. observed data for bioenergy grasses" |
| 329 | + "text": "Comparing Prior to Data\nA key validation step in Bayesian parameterization: compare the prior distribution to observed data. If the prior assigns negligible probability to regions where data actually falls, the prior may need revision.\n\n\n\n\n\n\nPrior-Data Conflict\n\n\n\nWhen the prior and data disagree strongly, the posterior will be dominated by whichever has lower variance. A very tight prior that disagrees with data can effectively ignore the data – a clear signal to revisit prior specification.\n\n\n\nsla_data <- traitsview |>\n filter(\n trait == \"SLA\",\n genus %in% c(\"Miscanthus\", \"Panicum\"),\n !is.na(mean),\n checked >= 0\n ) |>\n pull(mean)\n\nif (length(sla_data) > 10 && exists(\"prior_x\") && exists(\"prior_y\")) {\n ggplot() +\n geom_histogram(\n data = data.frame(sla = sla_data),\n aes(x = sla, y = after_stat(density)),\n bins = 30, fill = \"steelblue\", alpha = 0.6\n ) +\n geom_line(\n data = data.frame(x = prior_x, y = prior_y),\n aes(x, y),\n color = \"#e74c3c\", linewidth = 1, linetype = \"dashed\"\n ) +\n labs(\n title = \"Prior vs. Observed SLA\",\n subtitle = \"Dashed red = prior distribution | Blue bars = observed data (Miscanthus + Panicum)\",\n x = \"SLA (m2/kg)\",\n y = \"Density\"\n ) +\n xlim(0, 80) +\n theme_minimal(base_size = 12)\n}\n\n\n\n\nFigure 2: SLA: Prior distribution vs. observed data for bioenergy grasses" |
330 | 330 | }, |
331 | 331 | { |
332 | 332 | "objectID": "vignettes/pfts-priors.html#sec-extract", |
|
0 commit comments