regData = Object.keys(pricesYieldsDirectCosts).reduce((obj, curCrop) => {
const minYear = 2010;
const curCropYields = pricesYieldsDirectCosts[curCrop]
.filter((r) => r.year > minYear)
.map((r) => ({
Yield: r.yield,
Region: r.region,
NUTS2: nuts2_sqrs.find((f) => f.NUTS_NAME === r.region)
? nuts2_sqrs.find((f) => f.NUTS_NAME === r.region).NUTS_CODE
: 0,
SQR: nuts2_sqrs.find((f) => f.NUTS_NAME === r.region)
? nuts2_sqrs.find((f) => f.NUTS_NAME === r.region)._mean
: 0
}))
.filter((r) => r.SQR);
const dataPerRegions = [...d3.group(curCropYields, (r) => r.Region)];
const weightsPerRegion = dataPerRegions.reduce((obj, reg) => {
obj[reg[0]] = 1 / d3.variance(reg[1].map((r) => r.Yield));
return obj;
}, {});
const weights = curCropYields.map((r) => weightsPerRegion[r.Region]);
const model = lm(`Yield ~ SQR`, curCropYields, { weights: weights });
obj.push(model);
return obj;
}, [])