Public
Edited
Dec 5, 2023
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
maples = d3.csv("https://pasta.lternet.edu/package/data/eml/knb-lter-hbr/157/3/5c415a399b00430d35d13c31312f1e53",d3.autoType)
Insert cell
Insert cell
Insert cell
Insert cell
maples
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
Insert cell
Insert cell
Insert cell
maples2003 =maples.map((d) => (
{
year: (d.Year).toString() ,
watershed: d.Watershed,
stemLength: d.StemLength,
leafMass: d.LeafDryMass,
stemMass: d.StemDryMass,
leafArea: d.CorrectedLeafArea
}
)).filter((d) => d.year=="2003")
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
PlotMatrix()
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
//Untreated Seeds - remove outliers
maple_untreated=maples2003.filter((d)=>d.watershed=="Reference" && d.stemMass<0.04)
Insert cell
//Untreated seeds parameters (OLS estimates)
mapleUntreatedLM = new ML.SimpleLinearRegression(maple_untreated.map(d => d.stemLength),maple_untreated.map(d => d.stemMass))
Insert cell
//coefficients of untreated seeds linear model
mapleUntreat_coeff=mapleUntreatedLM.coefficients
Insert cell
// Pearson corr, R^2, r
maple_untreat_corr = mapleUntreatedLM.score(maple_untreated.map(d => d.stemLength), maple_untreated.map(d => d.stemMass))
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
//Treated Seeds data - remove outliers
maaple_treated=maples2003.filter((d)=>d.watershed=="W1" && d.stemLength<132.3)
Insert cell
maple_treated=maaple_treated.filter((d)=>d.watershed=="W1" && d.stemMass<.057)
Insert cell
//Calcium treated seeds parameters
mapleTreatedLM = new ML.SimpleLinearRegression(maple_treated.map(d => d.stemLength),maple_treated.map(d => d.stemMass))
Insert cell
//coefficients of untreated seeds linear model
mapleTreat_coeff=mapleTreatedLM.coefficients
Insert cell
// Pearson corr, R^2, r
maple_treat_corr = mapleTreatedLM.score(maple_treated.map(d => d.stemLength), maple_treated.map(d => d.stemMass))
Insert cell
Insert cell
Insert cell
//concat both datasets of treated and untreated groups with outliers removed (dropped 5 data points altogether)
maple2003_adj=maple_untreated.concat(maple_treated)
Insert cell
Plot.plot({
color: { legend: true },
marks: [
Plot.dot(maple2003_adj, {
x: "stemLength",
y: "stemMass",
stroke: "watershed",
tip: true
}),
Plot.linearRegressionY(maple2003_adj,{ x:"stemLength",y:"stemMass",stroke:"watershed"})
]
})
Insert cell
Insert cell
Insert cell
Insert cell
import {scale, asMatrix} from "@chrispahm/hierarchical-clustering" //import asMatrix as well for PCA analysis 2D predictions
Insert cell
//maple2003 = original 2003 data ; maple2003_adj has outliers removed
//mapleScale = scale(maples2003)
mapleScale= scale(maple2003_adj)
Insert cell
maplesArray = mapleScale.map(
(d) => [d.leafArea, d.leafMass, d.stemMass, d.stemLength]
)
Insert cell
mapleClusters = ML.KMeans(maplesArray, 2)
Insert cell
//mapleKmeans = maples2003.map((d,i) => ({...d, clusterNo: mapleClusters.clusters[i]}))
mapleKmeans = maple2003_adj.map((d,i) => ({...d, clusterNo: mapleClusters.clusters[i]}))

Insert cell
Insert cell
Insert cell
Insert cell
mapleKmeans
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more