Notebook–A visual intuition for the instrumental argument for equality
— link-citations: true title: Notebook–A visual intuition for the instrumental argument for equality published: 2018-04-25 tags: notebook, social welfare, inequality —
var nerd = require('nerdamer/all')
var tex = require('./content/data/offline/tex-helper')
var plot = require('./content/data/offline/plot-helper')
var q = "quantitative"
var incomeDistribution = nerd('p^2 * 30')
var percentileDomain = [0, 100]
$$html$$ = tex(incomeDistribution)
\(30 \cdot p^{2}\)
var incomeDistributionFn = incomeDistribution.buildFunction()
var values = plot.mkRange(percentileDomain, 1)
.map(percentile => {
return { percentile, income: incomeDistributionFn(percentile) }
})
var chart = {
data: { values },
mark: 'line',
encoding: {
x: { field: 'percentile', type: q },
y: { field: 'income', type: q }
}
}
$$html$$ = plot.mkGraphHtml(chart)
var minIncome = incomeDistributionFn(percentileDomain[0])
var maxIncome = incomeDistributionFn(percentileDomain[1])
var utilityOfMarginalDollar = nerd(`1 - d/${maxIncome}`)
var incomeDomain = [
minIncome,
maxIncome
]
$$html$$ = tex(utilityOfMarginalDollar)
\(-\frac{d}{300000}+1\)
var utilityOfMarginalDollarFn = utilityOfMarginalDollar.buildFunction()
var values = plot.mkRange(incomeDomain, 1000)
.map(income => {
return { income, marginalUtility: utilityOfMarginalDollarFn(income) }
})
var chart = {
data: { values },
mark: 'line',
encoding: {
x: { field: 'income', type: q },
y: { field: 'marginalUtility', type: q }
}
}
$$html$$ = plot.mkGraphHtml(chart)
\(-\frac{d^{2}}{600000}+d\)
var utilityOfIncomeFn = utilityOfIncome.buildFunction()
var values = plot.mkRange(incomeDomain, 1000)
.map(income => {
return { income, utility: utilityOfIncomeFn(income) }
})
var chart = {
data: { values },
mark: 'line',
encoding: {
x: { field: 'income', type: q },
y: { field: 'utility', type: q }
}
}
$$html$$ = plot.mkGraphHtml(chart)
var utilityAtPercentile = utilityOfIncome.sub('d', incomeDistribution)
$$html$$ = tex(utilityAtPercentile)
\(-\frac{3 \cdot p^{4}}{2000}+30 \cdot p^{2}\)
var utilityAtPercentileFn = utilityAtPercentile.buildFunction()
var inegalitarianValues = plot.mkRange(percentileDomain, 1)
.map(percentile => {
return {
percentile,
utility: utilityAtPercentileFn(percentile),
series: 'inegalitarian'
}
})
var chart = {
data: { values: inegalitarianValues },
mark: 'line',
encoding: {
x: { field: 'percentile', type: q },
y: { field: 'utility', type: q }
}
}
$$html$$ = plot.mkGraphHtml(chart)
var averageIncomeExp = `defint((${incomeDistribution}), p, 0, 100)/100`
var averageIncome = nerd(`defint((${incomeDistribution}), 0, 100)/100`)
var averageHappinessExp = `defint((${utilityAtPercentile}), p, 0, 100)/100`
var averageHappiness = nerd(`defint((${utilityAtPercentile}), 0, 100)/100`)
$$html$$ = tex(
averageIncomeExp,
averageIncome,
averageHappinessExp,
averageHappiness)
\(\frac{\int\limits_{0}^{100} {\left(30 \cdot {p}^{2}\right)}\, dp}{100}\)
\(100000\)
\(\frac{\int\limits_{0}^{100} {\left(\left(- \frac{3}{2000}\right) \cdot {p}^{4} + 30 \cdot {p}^{2}\right)}\, dp}{100}\)
\(70000\)
var egalIncomeDistribution = nerd(averageIncome)
var egalUtilityAtPercentile = utilityOfIncome.sub('d', egalIncomeDistribution)
var egalUtilityAtPercentileFn = egalUtilityAtPercentile.buildFunction()
var egalitarianValues = plot.mkRange(percentileDomain, 1)
.map(percentile => {
return {
percentile,
utility: egalUtilityAtPercentileFn(percentile),
series: 'egalitarian'
}
})
var chart = {
config: {
rule: {
strokeDash: [8, 8],
opacity: 0.3
}
},
layer: [{
mark: 'line',
encoding: {
x: { field: 'percentile', type: q },
y: { field: 'utility', type: q },
color: { field: 'series', type: 'nominal' }
}
}, {
mark: 'rule',
encoding: {
y: {
field: 'utility',
type: q,
aggregate: 'mean'
},
size: { value: 4 },
color: { field: 'series', type: 'nominal' }
}
}],
data: { values: [].concat(inegalitarianValues, egalitarianValues) }
}
$$html$$ = plot.mkGraphHtml(chart)
var averageIncomeExp = `defint((${incomeDistribution}), p, 0, 100)/100`
var averageIncome = nerd(`defint((${incomeDistribution}), 0, 100, p)/100`)
var inegalAverageHappinessExp = `defint((${utilityAtPercentile}), p, 0, 100)/100`
var inegalAverageHappiness = nerd(`defint((${utilityAtPercentile}), 0, 100, p)/100`)
var egalAverageHappinessExp = `defint((${egalUtilityAtPercentile}), p, 0, 100)/100`
var egalAverageHappiness = nerd(`defint((${egalUtilityAtPercentile}), 0, 100, p)/100`)
$$html$$ = tex(
averageIncomeExp,
averageIncome,
inegalAverageHappinessExp,
inegalAverageHappiness,
egalAverageHappinessExp,
egalAverageHappiness)
\(\frac{\int\limits_{0}^{100} {\left(30 \cdot {p}^{2}\right)}\, dp}{100}\)
\(100000\)
\(\frac{\int\limits_{0}^{100} {\left(\left(- \frac{3}{2000}\right) \cdot {p}^{4} + 30 \cdot {p}^{2}\right)}\, dp}{100}\)
\(70000\)
\(\frac{\int\limits_{0}^{100} {\left(\frac{250000}{3}\right)}\, dp}{100}\)
\(\frac{250000}{3}\)