import {palette, plotStyle, rng, ols, fmt} from "/_extensions/felipelmc/plenario/ojs/notes.js"
pal = palette()
viewof n = Inputs.range([20, 500], {value: 80, step: 10, label: "observações"})
viewof ruido = Inputs.range([0.2, 3], {value: 1, step: 0.1, label: "desvio do erro"})
dados = {
const r = rng(7);
return Array.from({length: n}, () => {
const x = r.normal(0, 1);
return {x, y: 1 + 0.8 * x + r.normal(0, ruido)};
});
}
coef = ols(dados.map(d => [d.x]), dados.map(d => d.y))
Plot.plot({
style: plotStyle, width: 1050, height: 360, marginLeft: 50,
x: {domain: [-3.5, 3.5], label: "x"}, y: {domain: [-6, 8], label: "y"},
marks: [
Plot.dot(dados, {x: "x", y: "y", r: 4, fill: pal.accent, fillOpacity: 0.5}),
Plot.line([[-3.5, 1 - 0.8 * 3.5], [3.5, 1 + 0.8 * 3.5]], {stroke: pal.ink3, strokeDasharray: "6,5"}),
Plot.line([[-3.5, coef[0] - coef[1] * 3.5], [3.5, coef[0] + coef[1] * 3.5]], {stroke: pal.danger, strokeWidth: 3})
]
})