config = ({
// autosize: "none",
view: {stroke: null},
background: "transparent",
padding: {
left: 0,
top: 5,
right: 0,
bottom: 5,
},
font: "Montserrat",
fontSize: 14,
title: {
offset: 0,
fontSize: 16,
subtitleFontSize: 14,
},
facet: {
fontSize: 14,
labelFontSize: 14,
titleFontSize: 14,
titleFontWeight: "normal",
},
axis: {
labelFontSize: 14,
titleFontSize: 14,
titleFontWeight: "normal",
},
legend: {
labelFontSize: 14,
titleFontSize: 14,
titleFontWeight: "normal",
},
mark: {
fontSize: 14
},
locale: {
number: {
decimal: ",",
thousands: ".",
grouping: [3]
},
time: {
dateTime: "%A %e %B %Y, %X",
date: "%d/%m/%Y",
time: "%H:%M:%S",
periods: ["AM", "PM"],
days: [
"Montag",
"Dienstag",
"Mittwoch",
"Donnerstag",
"Freitag",
"Samstag",
"Sonntag"
],
shortDays: [
"Mo",
"Di",
"Mi",
"Do",
"Fr",
"Sa",
"So"
],
months: [
"Jänner",
"Februar",
"März",
"April",
"Mai",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"Dezember"
],
shortMonths: [
"Jan",
"Feb",
"Mar",
"Apr",
"Mai",
"Jun",
"Jul",
"Aug",
"Sep",
"Okt",
"Nov",
"Dez"
]
}
},
})
colors2 = ["#be0021", "#ffa500"] // ["#be0021", "#ffa500"]
colors = ["#d3d3d3", "#0063b1"] // ["#0063b1", "#008000"]
colors3 = ["#4b0082", "#00ced1"]
colors4 = ["#008080", "#800080"]
colors5 = ["#00ff00", "#0000ff"]
function makeWidth(inputWidth) {
const outputWidth =
inputWidth > 2000 ? inputWidth * 0.250 :
inputWidth > 1600 ? inputWidth * 0.330 :
inputWidth > 1400 ? inputWidth * 0.380 :
inputWidth > 1100 ? inputWidth * 0.400 :
inputWidth > 825 ? inputWidth * 0.450 :
inputWidth * 0.775
return outputWidth
}
function removeAfterLastComma(str) {
const lastCommaIndex = str.lastIndexOf(",");
if (lastCommaIndex === -1) {
return str; // Return the original string if there's no comma
}
return str.substring(0, lastCommaIndex);
}
germanLocale = d3.formatLocale({
decimal: ",", // Decimal separator
thousands: ".", // Thousands separator
grouping: [3], // Grouping for thousands
currency: ["€", ""], // Currency format (optional)
});
// function makeWidthSmall(inputWidth) {
// const outputWidth =
// inputWidth > 2000 ? inputWidth * 0.080 : // Home and or WIFO screen?
// inputWidth > 1600 ? inputWidth * 0.100 : // ASCII screen (small)
// inputWidth > 1400 ? inputWidth * 0.150 : // laptop
// inputWidth > 1100 ? inputWidth * 0.166 : //
// inputWidth > 825 ? inputWidth * 0.200 : //
// inputWidth * 0.380
// return outputWidth
// }
// function makeWidthBars(inputWidth) {
// const outputWidth =
// inputWidth > 2000 ? inputWidth * 0.100 : // Home and or WIFO screen?
// inputWidth > 1600 ? inputWidth * 0.125 : // ASCII screen (small)
// inputWidth > 1400 ? inputWidth * 0.150 : // laptop
// inputWidth > 1100 ? inputWidth * 0.200 : //
// inputWidth > 825 ? inputWidth * 0.300 : //
// inputWidth * 0.8
// return outputWidth
// }
logoAK = vl
.markImage({
x: makeWidth(width)/1.7 - 48,
x2: makeWidth(width)/1.7,
y: 20,
opacity: 0.2,
clip: true,
smooth: true,
height: 100,
})
.data([
{x: 1, y: 2}
])
.encode(
vl.url()
.value("https://appetizingdata.com/wp-content/uploads/2024/08/ak-logo.svg"),
)
logoWIFO = vl
.markImage({
x: makeWidth(width)/1.7 - 48,
x2: makeWidth(width)/1.7 - 2,
y: 50,
opacity: 0.2,
clip: true,
smooth: true,
height: 100,
})
.data([
{x: 1, y: 2}
])
.encode(
vl.url()
.value("https://appetizingdata.com/wp-content/uploads/2024/08/WIFO_kurz_rechts.svg"),
)
logo = vl.layer(logoAK, logoWIFO)
function bars(inputWidth) {
const bar = vl
.markBar({
strokeWidth: 1.75,
strokeOpacity: 1,
// size: width > 1600 ? 20 : null,
})
.encode(
vl.x()
.fieldN("gesl")
.sort("value")
.axis({
minExtent: 70,
grid: false,
title: null,
}),
vl.y()
.fieldQ("value")
.scale({
domain: [0, 5000],
nice: false,
})
.axis({
domain: false,
grid: false,
title: width > 600 ? "Bruttopension" : null,
labels: width > 600 ? true : false,
ticks: width > 600 ? true : false,
}),
vl.xOffset()
.fieldN("val"),
vl.color()
.fieldN("val")
.scale({
range: colors,
})
.legend({
// orient: width > 825 ? "right" : "top",
orient: "top",
symbolOpacity: 1,
symbolType: "square",
title: null,
}),
vl.stroke()
.fieldN("closestDecile")
.scale({
range: radio2 == "Meine Vergleichsgruppe" ?
["transparent", "black"] :
radio2 == "∅ Gesamtdurchschnitt" ?
["black", "transparent"] :
["black", "black"]
})
.legend(null),
vl.opacity()
.fieldN("closestDecile")
.scale({
range: radio2 == "Meine Vergleichsgruppe" ?
[0.5, 0.8] :
radio2 == "∅ Gesamtdurchschnitt" ?
[0.8, 0.5] :
[0.8, 0.8]
})
.legend(null),
)
const text = vl
.markText({
clip: true,
size: 14,
y: width > 600 ? 270 : 230,
angle: -90,
align: "left",
})
.encode(
vl.x()
.fieldO("gesl"),
vl.xOffset()
.fieldN("val"),
vl.text()
.fieldQ("value")
.format(",.0~f"),
vl.opacity()
.fieldN("closestDecile")
.scale({
range: radio2 == "Meine Vergleichsgruppe" ?
[0.5, 0.8] :
radio2 == "∅ Gesamtdurchschnitt" ?
[0.8, 0.5] :
[0.8, 0.8]
})
.legend(null),
)
const textDiff = vl
.markText({
clip: true,
size: 14,
dy: -16,
align: "center",
})
.transform(vl.filter("datum.val == 'Szenario'"))
.encode(
vl.x()
.fieldO("gesl"),
vl.y()
.fieldQ("value"),
vl.text()
.fieldQ("diffScenario")
.format("+,.0~f"),
vl.opacity()
.fieldN("closestDecile")
.scale({
range: radio2 == "Meine Vergleichsgruppe" ?
[0.5, 0.8] :
radio2 == "∅ Gesamtdurchschnitt" ?
[0.8, 0.5] :
[0.8, 0.8]
})
.legend(null),
)
const textDiffPerc = vl
.markText({
clip: true,
size: 14,
dy: -36,
align: "center",
})
.transform(vl.filter("datum.val == 'Szenario'"))
.encode(
vl.x()
.fieldO("gesl"),
vl.y()
.fieldQ("value"),
vl.text()
.fieldQ("diffScenarioPerc")
.format("+,.0~%"),
vl.opacity()
.fieldN("closestDecile")
.scale({
range: radio2 == "Meine Vergleichsgruppe" ?
[0.5, 0.8] :
radio2 == "∅ Gesamtdurchschnitt" ?
[0.8, 0.5] :
[0.8, 0.8]
})
.legend(null),
)
const textPosition = vl
.markText({
clip: true,
size: 18,
dy: -10,
dx: -28,
// angle: -0,
align: "left",
strokeWidth: 1.25,
})
.transform(
vl.filter("datum.D == 'Vergleichsgruppe'"),
vl.filter("datum.val == 'Status quo'"),
)
.encode(
vl.x()
.fieldN("gesl")
.sort("value"),
vl.y()
.fieldQ("value"),
vl.text()
.value("↘"),
vl.opacity()
.fieldN("closestDecile")
.scale({
range: radio2 == "Meine Vergleichsgruppe" ?
[0.5, 0.8] :
radio2 == "∅ Gesamtdurchschnitt" ?
[0.8, 0.5] :
[0.8, 0.8]
})
.legend(null),
)
const layers = width > 600 ?
vl.layer(
bar,
text,
textDiff,
textDiffPerc,
textPosition,
) :
vl.layer(
bar,
text,
textDiff,
textDiffPerc,
)
return layers
.height(width > 600 ? 280 : 240) // width > 825 ? 280 : 180
.width(inputWidth)
.facet({
field: "dummy",
type: "nominal",
title: null,
header: {
labelFontSize: 14,
orient: "top",
},
})
// .resolve({
// "axis": {"x": "independent"},
// "scale": {"x": "independent"},
// })
.data(decilesBar)
.config(config)
}
function dumbbell(inputData, inputWidth) {
const points = vl
.markPoint({
size: 100,
opacity: 1,
shape: "square",
stroke: "transparent",
})
.encode(
vl.y()
.fieldQ("value")
.axis({
title: width > 600 ? "Bruttopension" : null,
labels: width > 600 ? true : false,
ticks: width > 600 ? true : false,
domain: false,
grid: false,
})
.scale({
domain: [0, 5000],
nice: false,
}),
vl.x()
.fieldO("val")
.axis({
title: null,
}),
vl.fill()
.fieldN("gesl")
.scale({
range: colors2,
})
.legend({
// orient: width > 825 ? "right" : "top",
orient: "top",
symbolOpacity: 1,
symbolType: "square",
title: null,
}),
)
const lines = vl
.markLine({
opacity: 0.15,
size: 5,
})
.encode(
vl.y()
.fieldQ("value"),
vl.x()
.fieldO("val"),
vl.color()
.fieldN("val")
.scale({
range: ["black", "black"]
})
.legend(null),
)
const text = vl
.markText({
size: 14,
dx: 27,
clip: true,
})
.encode(
vl.y()
.fieldQ("value"),
vl.x()
.fieldO("val"),
vl.color()
.fieldN("gesl")
.scale({
range: ["black"],
})
.legend(null),
vl.text()
.fieldQ("value")
.format(",.0f"),
)
const textPerc = vl
.markText({
size: 14,
dx: 0,
dy: -30,
angle: -90,
align: "left",
clip: true,
})
.encode(
vl.y()
.fieldQ("value"),
vl.x()
.fieldO("val"),
vl.text()
.fieldQ("gapPerc")
.format(",.0~%"),
vl.opacity()
.fieldN("gesl")
.scale({
range : [0.51, 0]
})
.legend(null),
)
const textGap = vl
.markText({
size: 14,
dx: 0,
dy: -16,
angle: -90,
align: "left",
clip: true,
})
.encode(
vl.y()
.fieldQ("value"),
vl.x()
.fieldO("val"),
vl.text()
.fieldQ("gapValue")
.format(",.0~f"),
vl.opacity()
.fieldN("gesl"),
)
const textArrow = vl
.markText({
size: 10,
dx: rangeRaw < 3000 ? 40 : 20,
dy: width > 600 ? (rangeRaw < 3000 ? -40 : -50) : (rangeRaw < 3000 ? -37 : -35),
angle: rangeRaw < 3000 ? -90 : -270,
align: "left",
clip: true,
})
.encode(
vl.y()
.fieldQ("value"),
vl.x()
.fieldO("val"),
vl.text()
.value(["Gender","Pension", "⤺ Gap"]),
vl.opacity()
.fieldN("gesl"),
)
const layers = width > 600 ?
vl.layer(
lines,
points,
text,
//textRel,
textGap,
textPerc,
textArrow,
) :
vl.layer(
lines,
points,
//textRel,
textGap,
textPerc,
textArrow,
// text,
)
return layers
.height(width > 600 ? 280 : 240)
.width(inputWidth)
.facet({
field: "D",
type: "nominal",
title: null,
// header: {
// labelFontSize: 0,
// },
// header: {
// labelFontSize: 14,
// orient: "bottom",
// },
header: {
labelFontSize: 14,
labelOrient: "top",
},
})
.data(inputData)
.config(config)
}
distributions = {
const dataDist = bins.filter(d => d.variable == "Status quo") //bins.filter(d => (d.variable == select || d.variable == "Status quo") && d.gesl == d.radio)
// const dataRule = dataDist
// .filter(d => d.range == d.bin)
// .map(d => ({...d, y: 0, y2: 20000}))
const dataRule = [
{gesl: "Frauen", median: 1223, y: 0, y2: 20000}, //1215
{gesl: "Männer", median: 2286, y: 0, y2: 20000}, //2278
]
const area = vl
.markArea({
interpolate: interpolate,
fillOpacity: 0.4,
strokeWidth: 1.75,
clip: true,
})
.encode(
vl.x()
.fieldQ("bin")
.axis({
grid: false,
title: "Bruttopension",
// labels: width > 825 ? true : false,
// ticks: width > 825 ? true : false,
})
.scale({
domain: [0, 4500],
nice: false,
}),
vl.y()
.fieldQ("N")
.scale({
domain: [0, 23000],
nice: false,
})
.axis({
domain: false,
grid: false,
title: width > 825 ? "Anzahl Personen" : null,
labels: width > 825 ? true : false,
ticks: width > 825 ? true : false,
values: [0, 5000, 10000, 15000, 20000],
}),
vl.color()
.fieldN("gesl")
.scale({
range: colors2,
})
.legend(null),
// .legend({
// orient: "top",
// symbolOpacity: 1,
// symbolType: "square",
// symbolStrokeColor: "transparent",
// title: null,
// }),
vl.stroke()
.fieldN("gesl")
.scale({
range: radio == "Männer" ? ["transparent", "black"] : ["black", "transparent"],
})
.legend(null),
)
const areaLowTail = vl
.markArea({
interpolate: interpolate,
fillOpacity: 0.75,
strokeWidth: 2,
clip: true,
})
.transform(
vl.filter("datum.bin <= datum.range"),
vl.filter("datum.gesl == datum.radio"),
)
.encode(
vl.x()
.fieldQ("bin"),
vl.y()
.fieldQ("N"),
vl.color()
.fieldN("gesl")
.scale({
range: colors2,
})
.legend(null),
)
const rule = vl
.markRule({
stroke: "black",
strokeDash: [4, 2],
clip: true,
strokeWidth: 0.75,
})
.transform(
vl.filter("datum.bin == datum.range")
)
.encode(
vl.x()
.fieldQ("bin")
)
const ruleGray = vl
.markRule({
opacity: 0.51,
clip: true,
})
.data(dataRule)
.encode(
vl.x()
.fieldQ("median"),
vl.y()
.fieldQ("y"),
vl.y2()
.fieldQ("y2"),
vl.opacity()
.fieldN("gesl")
.scale({
range: radio == "Männer" ?
[0.51, 1] :
[1, 0.51]
})
.legend(null),
)
const textGray1 = vl
.markText({
opacity: 0.51,
size: 13,
y: 50,
dx: -10,
align: "right",
clip: true,
})
.data(dataRule)
.encode(
vl.x()
.fieldQ("median"),
vl.text()
.fieldQ("median")
.format(",.0f"),
vl.opacity()
.fieldN("gesl")
.scale({
range: radio == "Männer" ?
[0.51, 1] :
[1, 0.51]
})
.legend(null),
)
const textGray2 = vl
.markText({
// opacity: 0.51,
size: 11,
y: 65,
dx: -10,
align: "right",
clip: true,
})
.data(dataRule)
.encode(
vl.x()
.fieldQ("median"),
vl.text()
.value("mittlere Pension"),
vl.opacity()
.fieldN("gesl")
.scale({
range: radio == "Männer" ?
[0.51, 1] :
[1, 0.51]
})
.legend(null),
)
const textGray3 = vl
.markText({
opacity: 0.51,
size: 11,
y: 80,
dx: -10,
align: "right",
clip: true,
})
.data(dataRule)
.encode(
vl.x()
.fieldQ("median"),
vl.text()
.fieldN("gesl"),
vl.opacity()
.fieldN("gesl")
.scale({
range: radio == "Männer" ?
[0.51, 1] :
[1, 0.51]
})
.legend(null),
)
const textLeft = vl
.markText({
clip: true,
size: 14,
y: 10,
dx: -12,
align: "right",
})
.transform(
vl.filter("datum.gesl == datum.radio"),
vl.filter("datum.bin == datum.range"),
)
.encode(
vl.x()
.fieldQ("bin"),
vl.text()
.value("← " + getCumPerc(radio, "lower")),
)
// const textLeft2 = vl
// .markText({
// opacity: 0.51
// clip: true,
// size: 12,
// y: 42,
// dx: -12,
// align: "right",
// })
// .transform(
// vl.filter("datum.gesl == datum.radio"),
// vl.filter("datum.bin == datum.range"),
// )
// .encode(
// vl.x()
// .fieldQ("bin"),
// vl.text()
// .value("kleiner"),
// )
const textLeftOther = vl
.markText({
opacity: 0.51,
clip: true,
size: 12,
y: 26,
dx: -12,
align: "right",
})
.transform(
vl.filter("datum.gesl != datum.radio"),
vl.filter("datum.bin == datum.range"),
)
.encode(
vl.x()
.fieldQ("bin"),
vl.text()
.value(getCumPerc(notRadio, "lower")),
)
const textRight = vl
.markText({
clip: true,
size: 14,
y: 10,
dx: 12,
align: "left",
})
.transform(
vl.filter("datum.gesl == datum.radio"),
vl.filter("datum.bin == datum.range"),
)
.encode(
vl.x()
.fieldQ("bin"),
vl.text()
.value(getCumPerc(radio, "higher") + " →"),
)
// const textRight2 = vl
// .markText({
// opacity: 0.51,
// clip: true,
// size: 12,
// y: 42,
// dx: 12,
// align: "left",
// })
// .transform(
// vl.filter("datum.gesl == datum.radio"),
// vl.filter("datum.bin == datum.range"),
// )
// .encode(
// vl.x()
// .fieldQ("bin"),
// vl.text()
// .value("größer"),
// )
const textRightOther = vl
.markText({
opacity: 0.51,
clip: true,
size: 12,
y: 26,
dx: 12,
align: "left",
})
.transform(
vl.filter("datum.gesl != datum.radio"),
vl.filter("datum.bin == datum.range"),
)
.encode(
vl.x()
.fieldQ("bin"),
vl.text()
.value(getCumPerc(notRadio, "higher")),
)
const textPosition = vl
.markText({
clip: true,
size: 18,
y: 290,
dx: 5,
// angle: -0,
align: "left",
strokeWidth: 1.25,
})
.transform(
vl.filter("datum.gesl == datum.radio"),
vl.filter("datum.bin == datum.range"),
)
.encode(
vl.x()
.fieldQ("bin"),
vl.text()
.value("↙"),
)
// const textPositionWhite = vl
// .markText({
// clip: true,
// size: 18,
// y: 290,
// dx: 5,
// // angle: -0,
// align: "left",
// stroke: "white",
// strokeWidth: 2.75,
// // fontWeight: "bold",
// })
// .transform(
// vl.filter("datum.gesl == datum.radio"),
// vl.filter("datum.bin == datum.range"),
// )
// .encode(
// vl.x()
// .fieldQ("bin"),
// vl.text()
// .value("↙"),
// )
const textMen = vl
.markText({
opacity: radio == "Männer" ? 1 : 0.51,
clip: true,
size: width > 600 ? 11 : 10,
y: width > 600 ? 200 : 105,
align: "center",
})
.data([
{bin: 3500}
])
.encode(
vl.x()
.fieldQ("bin"),
vl.text()
.value(width > 600 ? "⤺ Pensionen der Männer" : ["⤺ Pensionen ", "der Männer"]),
)
const textWomen = vl
.markText({
opacity: radio == "Frauen" ? 1 : 0.51,
clip: true,
size: width > 600 ? 11 : 10,
y: width > 600 ? 110 : 35,
align: "center",
})
.data([
{bin: width > 600 ? 400 : 600}
])
.encode(
vl.x()
.fieldQ("bin"),
vl.text()
.value(["Pensionen", "der Frauen ↷ "]),
)
const layers = width > 825 ?
vl.layer(
ruleGray,
textGray1,
textGray2,
textGray3,
area,
areaLowTail,
rule,
textLeft,
textRight,
// textLeft2,
// textRight2,
// textPositionWhite,
textPosition,
textLeftOther,
textRightOther,
textMen,
textWomen,
):
vl.layer(
area,
areaLowTail,
rule,
textLeft,
textRight,
textMen,
textWomen,
)
return layers
.height(width > 825 ? 300 : 200)
.width(makeWidth(width))
// .facet({
// field: "variable",
// type: "nominal",
// title: null,
// header: {
// labelFontSize: 14,
// orient: "top",
// },
// })
.data(dataDist)
.config(config)
}
distributionsChange = {
const dataDistChange = bins.filter(d => (d.variable == select || d.variable == "Status quo") && d.gesl == d.radio)
const dataRule = dataDistChange
.filter(d => d.range == d.bin && d.variable != "Status quo")
.map(d => ({...d, y: 0, y2: 21500}))
const colorsArea = radio == "Frauen" || select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" || select == "Szenario 5 (Beste 15 Jahre)" ? colors : [colors[0], "transparent"]
const area = vl
.markArea({
interpolate: interpolate,
strokeWidth: 1.25,
stroke: "black",
opacity: 0.8,
clip: true,
})
.encode(
vl.x()
.fieldQ("bin")
.axis({
grid: false,
title: "Bruttopension",
// labels: width > 825 ? true : false,
// ticks: width > 825 ? true : false,
})
.scale({
domain: [0, 4500],
nice: false,
}),
vl.y()
.fieldQ("N")
.scale({
domain: [0, 23000],
nice: false,
})
.axis({
domain: false,
grid: false,
title: width > 825 ? "Anzahl Personen" : null,
labels: width > 825 ? true : false,
ticks: width > 825 ? true : false,
values: [0, 5000, 10000, 15000, 20000],
}),
vl.color()
.fieldN("variable")
.scale({
range: colorsArea,
})
.legend(null)
// .legend({
// orient: "top",
// symbolType: "square",
// symbolOpacity: 1,
// symbolStrokeColor: "transparent",
// labelLimit: width > 825 ? 1111 : 160,
// title: null,
// })
)
const ruleGray = vl
.markRule({
// opacity: 0.51,
clip: true,
})
.data(dataRule)
.encode(
vl.x()
.fieldQ("median"),
vl.y()
.fieldQ("y"),
vl.y2()
.fieldQ("y2"),
)
const textGray1 = vl
.markText({
// opacity: 0.51,
size: 13,
y: 50,
dx: -10,
align: "right",
clip: true,
})
.data(dataRule)
.encode(
vl.x()
.fieldQ("median"),
vl.text()
.fieldQ("median")
.format(",.0f"),
)
const textGrayVar = radio == "Frauen" || select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" || select == "Szenario 5 (Beste 15 Jahre)" ? "neue mittlere Pension " + radio : "mittlere Pension " + radio
const textGray2 = vl
.markText({
// opacity: 0.51,
size: 11,
y: 65,
dx: -10,
align: "right",
clip: true,
})
.data(dataRule)
.encode(
vl.x()
.fieldQ("median"),
vl.text()
.value(textGrayVar),
)
const textGray3 = vl
.markText({
// opacity: 0.51,
size: 11,
y: 80,
dx: -10,
align: "right",
clip: true,
})
.data(dataRule)
.encode(
vl.x()
.fieldQ("median"),
vl.text()
.value(select.substr(0, 10)),
)
const textOld = vl
.markText({
clip: true,
size: 14,
y: 50,
align: "center",
})
.data([
{bin: radio == "Männer" ? 1000 : 600}
])
.encode(
vl.x()
.fieldQ("bin"),
vl.text()
.value("alte Verteilung ⤵"),
)
const textNewVar = radio == "Frauen" || select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" || select == "Szenario 5 (Beste 15 Jahre)" ? "⤺ neue Pensionen" : "⤺ keine Veränderung"
const textNew = vl
.markText({
// opacity: 0.51,
clip: true,
size: 11,
y: width > 600 ? 180 : 100,
align: "left",
})
.data([
{bin: radio == "Männer" ? 2800 : 2200}
])
.encode(
vl.x()
.fieldQ("bin"),
vl.text()
.value([textNewVar, select.substr(0, 10)]),
)
const textArrow = vl
.markText({
// opacity: 0.51,
clip: true,
size: radio == "Frauen" || select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" || select == "Szenario 5 (Beste 15 Jahre)" ? 16 : 0,
y: 30,
align: "right",
opacity: 0.7,
dx: -10,
})
.data(dataRule)
.encode(
vl.x()
.fieldQ("median"),
vl.text()
.value("⟶"),
)
const layers = width > 825 ?
vl.layer(
ruleGray,
textGray1,
textGray2,
textGray3,
textArrow,
textNew,
area,
) :
vl.layer(
area,
textNew,
)
return layers
.height(width > 825 ? 300 : 200)
.width(makeWidth(width))
.data(dataDistChange)
.config(config)
}
import {vl} from "@vega/vega-lite-api-v5" // apiVersion = '5.6.0' vlVersion = '5.6.0' vegaVersion = '5.23.0' tooltipVersion = '0.30.0'
import {aq, op} from '@uwdata/arquero'
binsRaw = FileAttachment("data/bins.csv").csv({ typed: true })
scenarios = aq.from(binsRaw)
.derive({ variable: d => aq.op.replace(d.variable, /\r\n/g, " ") })
.filter(aq.escape(d => d.variable != "Status quo"))
.filter(aq.escape(d => d.variable != "Szenario 4 (GPG/Frau)"))
.filter(aq.escape(d => d.variable != "Szenario 5 (Beste 15 Jahre)"))
.select("variable")
.dedupe()
.array("variable")
binsMid = aq.from(binsRaw)
.derive({
variable: d => aq.op.replace(d.variable, /\r\n/g, " "),
bin: d => d.bin * 100,
range: aq.escape(d => range),
radio: aq.escape(d => radio),
})
cumPercMid = binsMid
.derive({
tail: aq.escape(
d => d.bin < range ? "lower" :
d.bin > range ? "higher" : "same"
)
})
.groupby(["gesl", "variable", "tail"])
.rollup({ N: d => aq.op.sum(d.N) })
.groupby(["gesl", "variable"])
.derive({ perc: d => d.N / aq.op.sum(d.N) })
CumPercSame = cumPercMid
.filter(d => d.tail == "same")
.derive({
percSame: d => d.perc,
})
.select(["gesl", "variable", "percSame"],)
cumPerc = cumPercMid
.join_left(CumPercSame, [["gesl", "variable"], ["gesl", "variable"]])
.derive({
perc: d => d.tail == "lower" ? d.perc + d.percSame : d.perc, // closest decile to the right! not left!!!!
})
.groupby(["gesl", "variable", "tail"])
.derive({ text: aq.escape(d => germanLocale.format(",.0~%")(d.perc)) })
.objects()
function getCumPerc(gesl, tail) {
const out = cumPerc
.filter(d =>
d.gesl == gesl &&
d.tail == tail &&
d.variable == "Status quo"
)
.map(d => d.text)
return out
}
notRadio = radio == "Frauen" ? "Männer" : "Frauen"
decilesRaw =
check1[0] == "Kindererziehungszeiten" && select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" && radio == "Frauen" ?
FileAttachment("data/deciles_betroffen_szen1.csv").csv({ typed: true }) :
check1[0] != "Kindererziehungszeiten" && select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" && radio == "Frauen" ?
FileAttachment("data/deciles_nbetroffen_szen1.csv").csv({ typed: true }) :
check2[0] == "Arbeitslosenversicherungszeiten" && select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
FileAttachment("data/deciles_betroffen_szen2.csv").csv({ typed: true }) :
check2[0] != "Arbeitslosenversicherungszeiten" && select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
FileAttachment("data/deciles_nbetroffen_szen2.csv").csv({ typed: true }) :
FileAttachment("data/deciles.csv").csv({ typed: true })
decilesMid = aq.from(decilesRaw)
.derive({
select: aq.escape(d => select),
range: aq.escape(d => range),
radio: aq.escape(d => radio),
diff: aq.escape(d => Math.abs(d.value-range)), // closest decile to the right! not left!!!!
})
.groupby(["gesl", "val", "variable"])
.derive({ closestDecile: d => aq.op.min(d.diff) == d.diff && d.gesl == d.radio && d.val == "Status quo" ? 1 : 0 })
.groupby(["gesl", "variable", "D"])
.derive({ closestDecile: d => aq.op.sum(d.closestDecile) > 0 ? "yes" : "no" })
.ungroup()
decilesDiffVal = decilesMid
.filter(aq.escape(d => d.variable == select))
.select(["gesl", "D", "variable", "val", "value"])
.groupby(["gesl", "D", "variable"])
.pivot("val", "value")
.derive({
diffScenario: d => d["Szenario"] - d["Status quo"],
diffScenarioPerc: d => (d["Szenario"] - d["Status quo"]) / d["Status quo"],
})
closestDecileValue = decilesMid
.filter(aq.escape(d => d.variable == select))
.objects()
.filter(d => d.closestDecile == "yes")
.map(d => d.D)[0]
decilesDiffGesl = decilesMid
.derive({ closestDecileValue: aq.escape(d => closestDecileValue) })
.select(["gesl", "D", "variable", "val", "value"])
.groupby(["val", "D", "variable"])
.pivot("gesl", "value")
.derive({
gapValue: d => d.Männer - d.Frauen,
gapPerc: d => (d.Männer - d.Frauen) / (d.Männer),
gapRel: d => (d.Frauen) / (d.Männer),
})
deciles = decilesMid
.derive({ closestDecileValue: aq.escape(d => closestDecileValue) })
.join_left(decilesDiffVal, [["gesl", "D", "variable"], ["gesl", "D", "variable"]])
.join_left(decilesDiffGesl, [["val", "D", "variable"], ["val", "D", "variable"]])
.objects()
decilesRawGeneral = FileAttachment("data/deciles.csv").csv({ typed: true }) // always the main data no betr or nbetr
medians = aq.from(decilesRawGeneral)
.filter(aq.escape(d => d.D == "50. Perzentil"))
.derive({
variable: d => d.val == "Szenario" ? d.variable : "Status quo",
median: d => d.value,
})
.select(["gesl", "variable", "val", "median"])
.dedupe()
bins = binsMid
.join_left(medians, [["gesl", "variable"], ["gesl", "variable"]])
.objects()
RECHNER
Frauenpensionen erhöhen: AK-Vorschläge für eine faire Pensionsberechnung
Einstiegsfrage I
Um wieviel Prozent ist die durchschnittliche Pension von Frauen in Österreich geringer als die der Männer?
Einstiegsfrage II
Wie viele Pensionist:innen befinden sich im Risiko, in Armut zu geraten?
viewof guess2 = Inputs.radio(["0%", "8,3% ", "14,8%", "26,2%"], {
label: "", value: "0%", // Wählen Sie eine Antwort
})
// guess // is null
answer2 = guess2 == "14,8%" ? "Richtig! Fast 15% der Pensionist:innen in Österreich befinden sich im Armutsrisiko." : "Leider falsch, fast 15% der Pensionist:innen in Österreich befinden sich im Armutsrisiko!"
Frauenpensionen erhöhen: AK-Vorschläge für eine faire Pensionsberechnung
Auflösung
Der Gender Pension Gap, also der Unterschied zwischen Männer- und Frauenpensionen, liegt im Jahr 2024 in Österreich bei 40,1%¹. In Oberösterreich liegt er sogar bei 45,4% und ist somit im Bundesländervergleich nach Vorarlberg an vorletzter Stelle. Gründe für die Schlechterstellung von Frauen sind die Hürden, mit denen sie bereits im Erwerbsleben konfrontiert sind: lange Teilzeitphasen, niedrigere Einkommen, Zeiten von Arbeitslosigkeit und Unterbrechungen aufgrund von Kindererziehungs- und Pflegezeiten.
Die Arbeiterkammer Oberösterreich hält dies für eine große Ungerechtigkeit und setzt sich für Pensionsberechnungen ein, die tatsächlich Verbesserungen für die Menschen bringen und dieser enormen Schieflage entgegenwirken.
Mit dem AK-Pensionsfairness-Rechner sehen Sie, was die einzelnen Änderungsvorschläge für die Pensionshöhen, bei der Reduktion des Gender Pension Gap und Verteilung bedeuten.
Machen Sie mit! Wie viel Pension würden Sie bekommen?
Eine Studie des WIFO im Auftrag der AK OÖ untersucht die Auswirkungen verschiedener Änderungen im Pensionsrecht auf die Höhe der Alterseinkommen und den Gender Pension Gap².
- Szenario 1: Höherbewertung von Kindererziehungszeiten³
- Szenario 2: Höherbewertung von Zeiten der Arbeitslosigkeit4
- Szenario 3: Einführung eines Aufwertungsfaktors (Gender-Pay-Gap-Faktor), der die Einkommensunterschiede zwischen Männern und Frauen ausgleicht5
Die Auswirkungen dieser Szenarien können Sie hier erkunden. Der Rechner zeigt Ihnen dabei, wie sich die Pensionshöhe in den jeweiligen Szenarien durchschnittlich verändern würde.
¹Datenbasis: Pensionsversicherungs-Jahresstatistik, Dezember 2023, Berechnung: MA 23 - Wirtschaft, Arbeit und Statistik.
²Datenbasis: Sozialversicherungsdaten zu den Erwerbs- und Einkommensverläufen der Pensionsantrittskohorten 2015 bis 2021.
³
4
5
Geben Sie eine Bruttopension an
Auswahl 1/3
viewof rangeRaw = Inputs.range([400, 4000], {step: 50, value: 1500})
range = Math.round(rangeRaw/100)*100
Sollten Sie ihre voraussichtliche Bruttopension nicht kennen können Sie diese mit dem AK-Pensionsrechner ermitteln.
Ihre Bruttopension wird in weiterer Folge dazu verwendet Sie in eine Vergleichsgruppe einzuordnen.
Geben Sie ein Geschlecht an
Auswahl 2/3
viewof radioRaw = Inputs.radio(["Frau", "Mann"], {value: "Frau"})
radio = radioRaw == "Frau" ? "Frauen" : "Männer"
Manche der berechneten Szenarien wirken sich nur auf Frauen aus. Daher ist es möglich, dass die Ergebnisse bei Männern keine Veränderungen zeigen.
Wählen Sie ein Szenario
Auswahl 3/3
Durch die Auswahl eines Verbesserungs-Szenarios können Sie beeinflussen, wie sich die Pensionshöhe verändert.
viewof selectnew = Inputs.select(["Szenario 1 (Höherbewertung Kindererziehungszeiten)","Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)","Szenario 3 (Einführung eines Aufwertungsfaktors [Gender-Pay-Gap-Faktor])"])
select =
selectnew == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ? "Szenario 1 (Höherbewertung Kindererziehungszeiten)" :
selectnew == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ? "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" :
"Szenario 3 (Einführung Gender-Pay-Gap-Faktor)"
selecttextshort =
select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ? "Szenario 1 (Höherbewertung Kindererziehungszeiten)" :
select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ? "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" :
"Szenario 3 - Einführung eines Aufwertungsfaktors (Gender-Pay-Gap-Faktor)"
selectszen =
select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ? "Szenario 1" :
select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ? "Szenario 2" :
"Szenario 3"
Informationen zu dem von Ihnen gewählten Szenario:
Zutreffendes ankreuzen
viewof check1 = Inputs.checkbox(["Kindererziehungszeiten"], {disabled: select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" && radio == "Frauen" ? false : true})
viewof check2 = Inputs.checkbox(["Arbeitslosenversicherungszeiten"], {disabled: select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ? false : true})
interpolate = "step"
check1Info = select != "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ? "Kindererziehungszeiten sind nur im Szenario 1 relevant." : radio != "Frauen" ? "Kindererziehungszeiten wurden bei der Berechnung der Szenarien nur für Frauen berücksichtigt." : "Kindererziehungszeiten werden für Frauen in durchschnittlichem Ausmaß angenommen."
check2Info = select != "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ? "Arbeitslosenversicherungsszeiten sind nur im Szenario 2 relevant." : "Es werden Arbeitslosenversicherungszeiten von durchschnittlicher Höhe angenommen."
Das sind Ihre Ergebnisse
Ergebnisse 1/4
Wie würde sich das auf vergleichbare Personen auswirken?
decilesBar =
deciles
.filter(d => d.variable == select)
.filter(d => d.D == d.closestDecileValue || d.D == "Gesamt")
.filter(d => d.gesl == d.radio || d.D == "Gesamt")
.map(d => ({...d, D: d.D == "Gesamt" ? "∅ Gesamtdurchschnitt" : "Meine Vergleichsgruppe"}))
.map(d => ({...d, gesl: d.gesl == d.radio && d.D == "Meine Vergleichsgruppe" ? "Meine Vergleichsgruppe" : "∅ " + d.gesl}))
.map(d => ({...d, dummy: "⠀"}))
bars(width > 600 ? 250 : width * 0.8).render({ renderer: "svg" })
Inputs.bind(
Inputs.radio(
["Meine Vergleichsgruppe", "∅ Gesamtdurchschnitt", "Beides anzeigen"],
{value: "Meine Vergleichsgruppe", label: "Zeige"}
),
viewof radio2
)
checkText1 = check1.length == 1 ? ", die Kinderbetreuungszeiten vorweisen können," : ""
checkText2 = check2.length == 1 ? ", die Ersatzzeiten durch Arbeitslosigkeit haben," : ""
checkText1not = check1.length != 1 && select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" && radio == "Frauen" ? ", die keine Kinderbetreuungszeiten vorweisen können," : ""
checkText2not = check2.length != 1 && select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ? ", die keine Ersatzzeiten durch Arbeitslosigkeit haben," : ""
diffScenario = deciles
.filter(d => d.variable == select)
.filter(d => d.gesl == radio && d.val == "Szenario" && d.D == d.closestDecileValue)
.map(d => d.diffScenario)
diffScenarioGesamt = deciles
.filter(d => d.variable == select)
.filter(d => d.gesl == radio && d.val == "Szenario" && d.D == "Gesamt")
.map(d => d.diffScenario)
diffScenarioPerc = deciles
.filter(d => d.variable == select)
.filter(d => d.gesl == radio && d.val == "Szenario" && d.D == d.closestDecileValue)
.map(d => d.diffScenarioPerc)
diffScenarioPercGesamt = deciles
.filter(d => d.variable == select)
.filter(d => d.gesl == radio && d.val == "Szenario" && d.D == "Gesamt")
.map(d => d.diffScenarioPerc)
statusIncome = deciles
.filter(d => d.closestDecileValue == d.D && d.gesl == d.radio && d.val == "Status quo")
.map(d => d.value)[0]
closestDecileNumber = closestDecileValue.split('.')[0]
barsText = md`
${diffScenario > 0 && diffScenarioGesamt > 0 ?
"Im " + selecttextshort + " würden vergleichbare " + radio + " mit einer Pension von " + germanLocale.format(",.0f")(statusIncome) + " Euro¹" + checkText1 + checkText2 + " im Schnitt um **" + germanLocale.format(",.0f")(diffScenario) + " Euro mehr Pension erhalten**. Das entspricht etwa " + germanLocale.format(",.0%")(diffScenarioPerc) + " mehr. Betrachtet man den Gesamtdurchschnitt aller "+ radio + " so würden diese im Schnitt " + germanLocale.format(",.0f")(diffScenarioGesamt) + " Euro oder " + germanLocale.format(",.0%")(diffScenarioPercGesamt) + " mehr Pension bekommen." :
diffScenarioGesamt < 0 ?
"Im " + selecttextshort + " würden vergleichbare " + radio + " mit einer Pension von " + germanLocale.format(",.0f")(statusIncome) + " Euro¹" + checkText1 + checkText2 + " im Schnitt um **" + germanLocale.format(",.0f")(diffScenario) + " Euro mehr Pension erhalten**. Das entspricht etwa " + germanLocale.format(",.0%")(diffScenarioPerc) + " mehr. Betrachtet man den Gesamtdurchschnitt aller "+ radio + " so würden diese im Schnitt " + germanLocale.format(",.0f")(-diffScenarioGesamt) + " Euro oder " + germanLocale.format(",.0%")(-diffScenarioPercGesamt) + " mehr Pension bekommen." :
check1.length != 1 && select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" && radio == "Frauen" ?
"Im " + selecttextshort + " würden vergleichbare " + radio + " mit einer Pension von " + germanLocale.format(",.0f")(statusIncome) + " Euro¹, die keine Kinderbetreuungszeiten vorweisen können," + " **gleich viel erhalten wie aktuell**. " + "Das Szenario hätte keinen Effekt. " + "Betrachtet man den Gesamtdurchschnitt aller " + radio + " so würden diese im Schnitt " + germanLocale.format(",.0f")(diffScenarioGesamt) + " Euro oder " + germanLocale.format(",.0%")(diffScenarioPercGesamt) + " mehr Pension bekommen." :
check2.length != 1 && select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
"Im " + selecttextshort + " würden vergleichbare " + radio + " mit einer Pension von " + germanLocale.format(",.0f")(statusIncome) + " Euro¹, die keine Ersatzzeiten durch Arbeitslosigkeit haben" + " **gleich viel erhalten wie aktuell**. " + "Das Szenario hätte keinen Effekt. " + "Betrachtet man den Gesamtdurchschnitt aller " + radio + " so würden diese im Schnitt " + germanLocale.format(",.0f")(diffScenarioGesamt) + " Euro oder " + germanLocale.format(",.0%")(diffScenarioPercGesamt) + " mehr Pension bekommen." :
"Im " + selecttextshort + " würden vergleichbare " + radio + " mit einer Pension von " + germanLocale.format(",.0f")(statusIncome) + " Euro¹" + checkText2 + " **gleich viel erhalten wie aktuell**. " + "Das Szenario hätte keinen Effekt. "
}
`
perzentilText = "Sie haben eine Bruttopension von " + rangeRaw + " Euro angeben. Ihre Vergleichsgruppe ist deshalb das " + deciles.map(d => d.closestDecileValue)[0] + " (" + closestDecileNumber + "% der " + radio + checkText1 + checkText2 + checkText1not + checkText2not + " haben eine geringere Pension). Hier beträgt die durchschnittliche Pension " + germanLocale.format(",.0f")(statusIncome) + " Euro."
¹
Eingaben ändern:
Inputs.bind(Inputs.range([400, 4000], {step: 50, value: 1500, label: "Bruttopension"}), viewof rangeRaw)
Inputs.bind(Inputs.radio(["Frau", "Mann"], {value: "Frauen", label: "Geschlecht"}), viewof radioRaw)
Inputs.bind(Inputs.select(["Szenario 1 (Höherbewertung Kindererziehungszeiten)","Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)","Szenario 3 (Einführung eines Aufwertungsfaktors [Gender-Pay-Gap-Faktor])"], {label: "Szenario"}), viewof selectnew)
select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ?
Inputs.bind(Inputs.checkbox(["Kindererziehungszeiten"], {disabled: select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" && radio == "Frauen" ? false : true}), viewof check1) :
select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
Inputs.bind(Inputs.checkbox(["Arbeitslosenversicherungszeiten"], {disabled: select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ? false : true}), viewof check2) :
html`<div></div>`
Das sind Ihre Ergebnisse
Ergebnisse 2/4
Wie würde sich das auf den Gender Pension Gap auswirken?
decilesDumbbellFull = deciles
.filter(d => (d.D == d.closestDecileValue || d.D == "Gesamt") && d.variable == select)
.map(d => ({...d, D: d.D == "Gesamt" ? "∅ Gesamtdurchschnitt" : "Meine Vergleichsgruppe"}))
dumbbell(radio2 == "Beides anzeigen" ? decilesDumbbellFull : decilesDumbbellFull.filter(d => d.D == radio2), width > 600 ? 230 : width * 0.6).render({ renderer: "svg" })
viewof radio2 = Inputs.radio(
["Meine Vergleichsgruppe", "∅ Gesamtdurchschnitt", "Beides anzeigen"],
{value: "Meine Vergleichsgruppe", label: "Zeige"}
)
mehrWeniger = deciles.filter(d => d.D == d.closestDecileValue && d.val == "Status quo").map(d => d.gapValue)[0] > deciles.filter(d => d.D == d.closestDecileValue && d.val == "Szenario").map(d => d.gapValue)[0] ? " fallen." : " steigen."
mehrWenigerGesamt = deciles.filter(d => d.D == "Gesamt" && d.val == "Status quo").map(d => d.gapValue)[0] > deciles.filter(d => d.D == "Gesamt" && d.val == "Szenario").map(d => d.gapValue)[0] ? " sinken." : " steigen."
percentText =
Math.round(deciles.filter(d => d.D == d.closestDecileValue && d.val == "Szenario").map(d => d.gapPerc)[0] * 100) === Math.round(deciles.filter(d => d.D == d.closestDecileValue && d.val == "Status quo").map(d => d.gapPerc)[0] * 100)
? "weiterhin " + germanLocale.format(",.0%")(deciles.filter(d => d.D == d.closestDecileValue && d.val == "Status quo").map(d => d.gapPerc)[0])
: germanLocale.format(",.0%")(deciles.filter(d => d.D == d.closestDecileValue && d.val == "Szenario").map(d => d.gapPerc)[0]) + " anstatt " + germanLocale.format(",.0%")(deciles.filter(d => d.D == d.closestDecileValue && d.val == "Status quo").map(d => d.gapPerc)[0])
dumbbellText = md`
${check1.length != 1 && select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" && radio == "Frauen" ?
"Im " + selecttextshort + " würde sich der Gender Pension Gap in meiner Vergleichsgruppe¹, **nicht verändern**. Er beträgt " + germanLocale.format(",.0f")(deciles.filter(d => d.D == d.closestDecileValue && d.val == "Status quo").map(d => d.gapValue)[0]) + " Euro oder " + germanLocale.format(",.0%")(deciles.filter(d => d.D == d.closestDecileValue && d.val == "Szenario").map(d => d.gapPerc)[0]) + ". Im Gesamtdurchschnitt würde der Gap im " + selectszen + " " + germanLocale.format(",.0%")(deciles.filter(d => d.D == "Gesamt" && d.val == "Szenario").map(d => d.gapPerc)[0]) + " anstatt " + germanLocale.format(",.0%")(deciles.filter(d => d.D == "Gesamt" && d.val == "Status quo").map(d => d.gapPerc)[0]) + " ausmachen und damit von " + germanLocale.format(",.0f")(deciles.filter(d => d.D == "Gesamt" && d.val == "Status quo").map(d => d.gapValue)[0]) + " Euro auf " + germanLocale.format(",.0f")(deciles.filter(d => d.D == "Gesamt" && d.val == "Szenario").map(d => d.gapValue)[0]) + " Euro" + mehrWenigerGesamt :
check2.length != 1 && select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
"Im " + selecttextshort + " würde sich der Gender Pension Gap in meiner Vergleichsgruppe¹, **nicht verändern**. Er beträgt " + germanLocale.format(",.0f")(deciles.filter(d => d.D == d.closestDecileValue && d.val == "Status quo").map(d => d.gapValue)[0]) + " Euro oder " + germanLocale.format(",.0%")(deciles.filter(d => d.D == d.closestDecileValue && d.val == "Szenario").map(d => d.gapPerc)[0]) + ". Im Gesamtdurchschnitt würde der Gap im " + selectszen + " " + germanLocale.format(",.0%")(deciles.filter(d => d.D == "Gesamt" && d.val == "Szenario").map(d => d.gapPerc)[0]) + " anstatt " + germanLocale.format(",.0%")(deciles.filter(d => d.D == "Gesamt" && d.val == "Status quo").map(d => d.gapPerc)[0]) + " ausmachen und von " + germanLocale.format(",.0f")(deciles.filter(d => d.D == "Gesamt" && d.val == "Status quo").map(d => d.gapValue)[0]) + " Euro auf " + germanLocale.format(",.0f")(deciles.filter(d => d.D == "Gesamt" && d.val == "Szenario").map(d => d.gapValue)[0]) + " Euro" + mehrWenigerGesamt :
"Im " + selecttextshort + " würde der Gender Pension Gap in meiner Vergleichsgruppe¹, " + " **von " + germanLocale.format(",.0f")(deciles.filter(d => d.D == d.closestDecileValue && d.val == "Status quo").map(d => d.gapValue)[0]) + " Euro auf " + germanLocale.format(",.0f")(deciles.filter(d => d.D == d.closestDecileValue && d.val == "Szenario").map(d => d.gapValue)[0]) + " Euro" + mehrWeniger + "** Damit würde der Gender Pension Gap " + percentText + " ausmachen. Im Gesamtdurchschnitt würde der Gap im " + selectszen + " " + germanLocale.format(",.0%")(deciles.filter(d => d.D == "Gesamt" && d.val == "Szenario").map(d => d.gapPerc)[0]) + " anstatt " + germanLocale.format(",.0%")(deciles.filter(d => d.D == "Gesamt" && d.val == "Status quo").map(d => d.gapPerc)[0]) + " ausmachen und damit von " + germanLocale.format(",.0f")(deciles.filter(d => d.D == "Gesamt" && d.val == "Status quo").map(d => d.gapValue)[0]) + " Euro auf " + germanLocale.format(",.0f")(deciles.filter(d => d.D == "Gesamt" && d.val == "Szenario").map(d => d.gapValue)[0]) + " Euro" + mehrWenigerGesamt
}
`
¹
Eingaben ändern:
Inputs.bind(Inputs.range([400, 4000], {step: 50, value: 1500, label: "Bruttopension"}), viewof rangeRaw)
Inputs.bind(Inputs.radio(["Frau", "Mann"], {value: "Frauen", label: "Geschlecht"}), viewof radioRaw)
Inputs.bind(Inputs.select(["Szenario 1 (Höherbewertung Kindererziehungszeiten)","Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)","Szenario 3 (Einführung eines Aufwertungsfaktors [Gender-Pay-Gap-Faktor])"], {label: "Szenario"}), viewof selectnew)
select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ?
Inputs.bind(Inputs.checkbox(["Kindererziehungszeiten"], {disabled: select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" && radio == "Frauen" ? false : true}), viewof check1) :
select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
Inputs.bind(Inputs.checkbox(["Arbeitslosenversicherungszeiten"], {disabled: select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ? false : true}), viewof check2) :
html`<div></div>`
Das sind Ihre Ergebnisse
Ergebnisse 3/4
Wie viel Pension erhalte ich momentan im Vergleich zu anderen?
textDistributions = "Etwa " + getCumPerc(radio, "lower") + " aller " + radio + " erhalten im Status quo eine niedrigere Pension als " + germanLocale.format(",.0f")(range) + " Euro pro Monat. Umgekehrt erhalten " + getCumPerc(radio, "higher") + " aller " + radio + " mehr Pension."
Eingaben ändern:
Das sind Ihre Ergebnisse
Ergebnisse 4/4
Wie würden sich die Verteilungen dieser Pensionen im ändern?
distributionsChangeText1 =
select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
"Durch die Aufwertung der Zeiten in Arbeitslosigkeit würden sich die Pension für " + radio + " leicht erhöhen." :
radio == "Frauen" && select != "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
"Für " + radio + " würden sich die Pensionen im " + selecttextshort + " deutlich erhöhen." :
radio == "Männer" && select != "Szenario 5 (Beste 15 Jahre)" ?
radio + " profitieren nicht von " + selecttextshort + "." :
radio + " profitieren deutlich von " + selecttextshort + "."
distributionsChangeText2 = radio == "Männer" && select != "Szenario 5 (Beste 15 Jahre)" && select != "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
"Die mittlere Pension der Männer würde sich nicht verändern und bei " + germanLocale.format(",.0~f")(bins.filter(d => d.variable == select && d.gesl == d.radio)[0].median) + " verbleiben." :
"Die mittlere Pension der " + radio + " würde sich auf " + germanLocale.format(",.0~f")(bins.filter(d => d.variable == select && d.gesl == d.radio)[0].median) + " Euro steigern."
Eingaben ändern:
Inputs.bind(Inputs.radio(["Frau", "Mann"], {value: "Frauen", label: "Geschlecht"}), viewof radioRaw)
Inputs.bind(Inputs.select(["Szenario 1 (Höherbewertung Kindererziehungszeiten)","Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)","Szenario 3 (Einführung eines Aufwertungsfaktors [Gender-Pay-Gap-Faktor])"], {label: "Szenario"}), viewof selectnew)
Ergebnisse auf einen Blick
Hier können Sie die Ergebnisse gesammelt betrachten und Ihre Eingaben ändern
Inputs.bind(Inputs.range([400, 4000], {step: 50, value: 1500, label: "Bruttopension"}), viewof rangeRaw)
Inputs.bind(Inputs.radio(["Frau", "Mann"], {value: "Frauen", label: "Geschlecht"}), viewof radioRaw)
Inputs.bind(Inputs.select(["Szenario 1 (Höherbewertung Kindererziehungszeiten)","Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)","Szenario 3 (Einführung eines Aufwertungsfaktors [Gender-Pay-Gap-Faktor])"], {label: "Szenario"}), viewof selectnew)
Inputs.bind(Inputs.radio(["Meine Vergleichsgruppe", "∅ Gesamtdurchschnitt"], {value: "Meine Vergleichsgruppe", label: "Zeige"}), viewof radio2)
Inputs.bind(Inputs.checkbox(["Kindererziehungszeiten"], {disabled: select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" && radio == "Frauen" ? false : true}), viewof check1)
Inputs.bind(Inputs.checkbox(["Arbeitslosenversicherungszeiten"], {disabled: select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ? false : true}), viewof check2)
AK Oberösterreich für faire Pensionen
Sie sehen, die 3 Szenarien aus der Studie, also die Höherberechnung von Kindererziehungszeiten und Zeiten der Arbeitslosigkeit bzw. die Einführung eines Aufwertungsfaktors (Gender-Pay-Gap-Faktor) durch den die Benachteiligung von Frauen in der Arbeitswelt gemindert wird, würden auf unterschiedliche Weise die Pensionen erhöhen. Vor allem für Frauen ist ein deutlich positiver Effekt zu spüren. Das ist enorm wichtig für ein gerechteres Pensionssystem, da Frauenpensionen in Österreich derzeit um über 40 Prozent niedriger sind als jene der Männer.
Die Vorschläge der Arbeiterkammer Oberösterreich für eine fairere Pensionsberechnung würden genau hier ansetzten und Frauenpensionen nachhaltig erhöhen.
function generateIncomeChart(group) {
// Filter data based on the provided group and a variable that should be defined or passed in
const filteredIncome = hhIncome
.filter(d => d.group == group && d.variable == select) // Ensure 'select' is correctly defined or passed in
const widthHH = group == "Geschlecht" ? makeWidth(width) * 0.2 : group == "Altersgruppen" ? makeWidth(width) * 0.45 : makeWidth(width) * 0.5;
const bars = vl
.markBar({
strokeWidth: 1.75,
opacity: 0.8,
fill: colors2[1], // Make sure colors[1] is defined
})
.encode(
vl.y()
.fieldQ("value")
.scale({
domain: [0, 0.02],
})
.axis({
title: "In Prozent",
grid: false,
format: "+.1%",
minExtent: 40,
// labelFontSize: 10
}),
vl.x()
.fieldN("detail")
.axis({
title: null,
domain: false,
ticks: false,
labelAlign: "right",
labelPadding: 20,
labelLimit: 280,
// labelFontSize: 10,
}),
vl.stroke()
.fieldN("focus")
.scale({
range: ["transparent", "black"],
})
.legend(null),
vl.opacity()
.fieldN("focus")
.scale({
range: [0.5, 0.8],
})
.legend(null),
);
const text = vl
.markText({
size: 13,
align: "center",
angle: -90,
baseline: "middle",
dx: 28,
})
.encode(
vl.y()
.fieldQ("value")
.axis({
format: "+.2f"
}),
vl.x()
.fieldN("detail"),
vl.text()
.fieldQ("value")
.format("+.2~%"),
vl.opacity()
.fieldN("focus")
.scale({
range: [0.5, 0.8],
})
.legend(null),
);
return vl
.layer(
bars,
text,
)
.width(widthHH) // Dynamically set width based on group
.data(filteredIncome) // Use the filtered data
.config(config); // Ensure 'config' is defined
}
function generateIncomeChartStatusquo(group) {
const filteredIncomeStatusquo = hhIncome.filter(d => d.group == group && d.variable == "Status quo");
const widthHH = group == "Geschlecht" ? makeWidth(width) * 0.2 : group == "Altersgruppen" ? makeWidth(width) * 0.45 : makeWidth(width) * 0.5;
const bars = vl
.markBar({
strokeWidth: 1.75,
opacity: 0.8,
fill: colors2[0],
})
.encode(
vl.y()
.fieldQ("value")
.axis({
title: "In Euro",
grid: false,
minExtent: 40,
// labelFontSize: 10
}),
vl.x()
.fieldN("detail")
.axis({
title: null,
domain: false,
ticks: false,
labelAlign: "right",
labelPadding: 20,
labelLimit: 280,
// labelFontSize: 10,
}),
vl.stroke()
.fieldN("focus")
.scale({
range: ["transparent", "black"],
})
.legend(null),
vl.opacity()
.fieldN("focus")
.scale({
range: [0.5, 0.8],
})
.legend(null),
);
const text = vl
.markText({
size: 13,
align: "center",
angle: -90,
baseline: "middle",
dx: 28,
})
.transform(
vl.calculate("format(datum.value, ',.0f') + '€'")
.as("formattedValue"),
vl.calculate("0")
.as("zero"),
)
.encode(
vl.x()
.fieldN("detail"),
vl.y()
.fieldQ("zero"),
vl.text()
.fieldN("formattedValue"),
vl.opacity()
.fieldN("focus")
.scale({
range: [0.5, 0.8],
})
.legend(null),
);
return vl
.layer(
bars,
text,
)
.width(widthHH)
.data(filteredIncomeStatusquo) // Use the filtered data
.config(config);
}
function generatePovertyChart(group) {
const filteredPoverty = hhPoverty.filter(d => d.group == group && d.variable == select);
const widthHH = group == "Geschlecht" ? makeWidth(width) * 0.2 : group == "Altersgruppen" ? makeWidth(width) * 0.45 : makeWidth(width) * 0.5;
const bars = vl
.markBar({
strokeWidth: 1.75,
fill: colors[1],
opacity: 0.8,
})
.encode(
vl.y()
.fieldQ("value")
.scale({
domain: [-1.5, 0],
})
.axis({
title: "In Prozentpunkten",
grid: false,
format: "+.1f",
minExtent: 40,
// labelFontSize: 10
}),
vl.x()
.fieldN("detail")
.axis({
title: null,
domain: false,
ticks: false,
labelAlign: "right",
labelPadding: 20,
labelLimit: 280,
// labelFontSize: 10,
}),
vl.stroke()
.fieldN("focus")
.scale({
range: ["transparent", "black"],
})
.legend(null),
vl.opacity()
.fieldN("focus")
.scale({
range: [0.5, 0.8],
})
.legend(null),
)
const text = vl
.markText({
size: 13,
align: "right",
angle: -90,
baseline: "middle",
dx: -10,
})
.transform(
// vl.filter('datum.value !== 0'),
vl.calculate("datum.value == 0 ? '-' + format(datum.value, '.2~f') + ' PP.' : format(datum.value, '.2~f') + ' PP.'")
.as("formattedValue")
)
.encode(
vl.y()
.fieldQ("value")
.axis({
format: "+.2f" // Ensure format is set here for text
}),
vl.x()
.fieldN("detail"),
vl.text()
.fieldN("formattedValue"), // Use the calculated field for text labels
vl.opacity()
.fieldN("focus")
.scale({
range: [0.5, 0.8],
})
.legend(null),
);
return vl
.layer(
bars,
text,
)
.width(widthHH)
.data(filteredPoverty) // Use the filtered data
.config(config);
}
function generatePovertyChartStatusquo(group) {
const filteredPovertyStatusquo = hhPoverty.filter(d => d.group == group && d.variable == "Status quo");
const widthHH = group == "Geschlecht" ? makeWidth(width) * 0.2 : group == "Altersgruppen" ? makeWidth(width) * 0.45 : makeWidth(width) * 0.5;
const bars = vl
.markBar({
strokeWidth: 1.75,
opacity: 0.8,
fill: colors[0],
})
.encode(
vl.y()
.fieldQ("value")
.axis({
title: "In Prozent",
grid: false,
format: ".0%",
minExtent: 40,
// labelFontSize: 10
}),
vl.x()
.fieldN("detail")
.axis({
title: null,
domain: false,
ticks: false,
labelAlign: "right",
labelPadding: 20,
labelLimit: 280,
// labelFontSize: 10,
}),
vl.stroke()
.fieldN("focus")
.scale({
range: ["transparent", "black"],
})
.legend(null),
vl.opacity()
.fieldN("focus")
.scale({
range: [0.5, 0.8],
})
.legend(null),
);
const text = vl
.markText({
size: 13,
align: "center",
angle: -90,
baseline: "middle",
dx: 28,
})
.transform(
vl.calculate("0")
.as("zero"),
)
.encode(
vl.y()
.axis({
format: ".1%"
}),
vl.x()
.fieldN("detail"),
vl.y()
.fieldQ("zero"),
vl.text()
.fieldQ("value")
.format(".1%"),
vl.opacity()
.fieldN("focus")
.scale({
range: [0.5, 0.8],
})
.legend(null),
);
return vl
.layer(
bars,
text,
)
.width(widthHH)
.data(filteredPovertyStatusquo) // Use the filtered data
.config(config);
}
Frauenpensionen erhöhen: AK-Vorschläge für eine faire Pensionsberechnung
Auflösung
Altersarmut, insbesondere bei Frauen, ist ein großes Thema. Das liegt auch daran, dass Frauenpensionen um 40,1 Prozent niedriger sind als jene der Männer. Gründe für die Schlechterstellung von Frauen sind die Hürden, mit denen sie bereits im Erwerbsleben konfrontiert sind: lange Teilzeitphasen, niedrige Einkommen, Zeiten von Arbeitslosigkeit und Unterbrechungen aufgrund von Kindererziehungs- und Pflegezeiten.
Die Arbeiterkammer Oberösterreich hält dies für eine große Ungerechtigkeit und setzt sich für Pensionsberechnungen ein, die tatsächlich Verbesserungen für die Menschen bringen und dieser enormen Schieflage entgegenwirken.
Mit dem AK-Pensionsfairness-Rechner sehen Sie, was die einzelnen Änderungsvorschläge zur faireren Pensionsberechnung für die Pensionshöhen, für Gender Pension Gap, die Verteilung und die Armutsgefährdungsquoten bedeuten.
Machen Sie mit! Wie verändern sich Haushaltseinkommen und Armutsquoten?
Eine Studie des WIFO im Auftrag der AK OÖ untersucht die Auswirkungen verschiedener Änderungen im Pensionsrecht auf die Höhe der Alterseinkommen und den Gender Pension Gap, also den Unterschied zwischen Frauen- und Männerpensionen. Zusätzlich werden Auswirkungen auf Haushaltseinkommen und Armutsgefährdungsquoten dargestellt².
- Szenario 1: Höherbewertung von Kindererziehungszeiten³
- Szenario 2: Höherbewertung von Zeiten der Arbeitslosigkeit4
- Szenario 3: Einführung eines Aufwertungsfaktors (Gender-Pay-Gap-Faktor), der die Einkommensunterschiede zwischen Männern und Frauen ausgleicht5
Die Auswirkungen dieser Szenarien können Sie hier erkunden. Der AK-Pensionsfairness-Rechner zeigt Ihnen dabei, wie sich die Haushaltseinkommen und die Armutsgefährdungsquote in den jeweiligen Szenarien durchschnittlich verändern würden.
¹Datenbasis: Pensionsversicherungs-Jahresstatistik, Dezember 2023, Berechnung: MA 23 - Wirtschaft, Arbeit und Statistik.
²Datenbasis: Sozialversicherungsdaten zu und den Erwerbs- und Einkommensverläufen der Pensionsantrittskohorten 2015 bis 2021.
³
4
5
Ich bin interessiert an den Effekten auf
Auswahl 1/2
viewof radioHaushaltseffekt = Inputs.radio(["das Gesamteinkommen von Haushalten", "die Armutsgefährdungsquote von Haushalten"], {value: "das Gesamteinkommen von Haushalten"})
optionHH = radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
html`Haushaltseinkommen` : html`Armutsgefährdungsquote`
infoHH = radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
html`
Haushaltseinkommen: Das äquivalente Haushaltseinkommen ist ein Maß zur Ermittlung des Einkommensniveaus eines Haushalts unter Berücksichtigung der Haushaltsgröße und -zusammensetzung. Es zielt darauf ab, das verfügbare Einkommen eines Haushalts auf eine einheitliche Basis zu bringen, um Vergleiche zwischen verschiedenen Haushalten zu ermöglichen.
`
:
html`
Armutsgefährdungsquote: Armutsgefährdung bezeichnet das Risiko, in Armut zu geraten. Die relative Armutsgefährdungsquote misst den Anteil der Menschen in einer Gesellschaft, deren Einkommen unterhalb der Armutsgefährdungsschwelle liegt. Diese Grenze wird hier (nach Eurostat-Definition) bei 60% des mittleren äquivalente Haushaltseinkommen festgelegt.
`
Die Betrachtung liegt hier auf durchschnittlichen Haushaltseinkommen. Darunter fallen auch Haushalte, in denen z.B. nur eine Person ein Pensionseinkommen oder in der gar keine Person ein Pensionseinkommen hat. Deswegen sind hier die gezeigten Effekte kleiner, als wenn nur das individuelle Pensionseinkommen betrachtet wird.
Wählen Sie ein Szenario
Auswahl 2/2
Durch die Auswahl eines Verbesserungs-Szenarios können Sie beeinflussen, wie sich Haushaltseinkommen bzw. Armutsgefährdungsquote verändern.
Inputs.bind(Inputs.select(["Szenario 1 (Höherbewertung Kindererziehungszeiten)","Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)","Szenario 3 (Einführung eines Aufwertungsfaktors [Gender-Pay-Gap-Faktor])"], {label: "Szenario"}), viewof selectnew)
Informationen zu dem von Ihnen gewählten Szenario:
hhIncomeRaw = FileAttachment("data/household_income_detail.csv").csv({ typed: true })
hhPovertyRaw = FileAttachment("data/household_arop_detail.csv").csv({ typed: true })
hhIncome = aq.from(hhIncomeRaw)
.filter(aq.escape(d => d.variable != "azr0" && d.variable != "azr1"))
.filter(d =>
d.detail !== "Im Vorschulalter" &&
d.detail !== "Landwirtschaft" &&
d.detail !== "Inaktiv" &&
d.detail !== "Sonstige Inaktivität"
)
.derive({
value: d => d.variable != "Status quo" ? d.value / 100 : d.value,
selectMark: aq.escape(d => d.variable == select ? "yes" : "no"),
detail2: aq.escape(d => d.detail.includes("kein Kind") ? "Kein Kind" : d.detail.includes("1 Kind") ? "Ein Kind" : "Zwei Kinder oder mehr"),
detail3: aq.escape(d => d.detail.includes("<65") ? "<65" : "≥65"),
detail4: aq.escape(d => d.detail.includes("Frau") ? "Frauen" : "Männer"),
detail5: aq.escape(d => d.detail.includes("2 Erwachsene") ? "Zwei Erwachsene" : d.detail.includes("3 ") ? "Drei Erwachsene oder mehr" : "Ein Erwachsener"),
})
.derive({
radioGeschlecht: aq.escape(d => d.detail == radio),
selectStatus: aq.escape(d => d.detail == selectStatus),
radioAltersgruppe: aq.escape(d => d.detail == radioAltersgruppe),
//radioKinder: aq.escape(d => d.detail2 == radioKinder),
//radioErwachsene: aq.escape(d => d.detail5 == radioErwachsene),
})
.derive({
focus: d => d.radioGeschlecht || d.selectStatus || d.radioAltersgruppe, //|| (d.radioKinder && d.radioErwachsene),
})
.objects()
// .map(d => ({...d, detail: removeAfterLastComma(d.detail) }))
// selectStatus
// radioAltersgruppe
// radioKinder
// radioErwachsene
// radioHaushaltseffekt
// hhIncome
// hhPoverty
groups = aq.from(hhIncome)
.filter(aq.escape(d => d.group != "Gesamt"))
.select("group")
.dedupe()
.array("group")
hhPoverty = aq.from(hhPovertyRaw)
.filter(aq.escape(d => d.variable != "azr0" && d.variable != "azr1"))
.filter(d =>
d.detail !== "Im Vorschulalter" &&
d.detail !== "Landwirtschaft" &&
d.detail !== "Inaktiv" &&
d.detail !== "Sonstige Inaktivität"
)
.derive({
value: d => d.variable == "Status quo" ? d.value / 100 : d.value,
selectMark: aq.escape(d=> d.variable == select ? "yes" : "no"),
detail2: aq.escape(d => d.detail.includes("kein Kind") ? "Kein Kind" : d.detail.includes("1 Kind") ? "Ein Kind" : "Zwei Kinder oder mehr"),
detail3: aq.escape(d => d.detail.includes("<65") ? "<65" : "≥65"),
detail4: aq.escape(d => d.detail.includes("Frau") ? "Frauen" : "Männer"),
detail5: aq.escape(d => d.detail.includes("2 Erwachsene") ? "Zwei Erwachsene" : d.detail.includes("3 ") ? "Drei Erwachsene oder mehr" : "Ein Erwachsener"),
})
.derive({
radioGeschlecht: aq.escape(d => d.detail == radio),
selectStatus: aq.escape(d => d.detail == selectStatus),
radioAltersgruppe: aq.escape(d => d.detail == radioAltersgruppe),
//radioKinder: aq.escape(d => d.detail2 == radioKinder),
//radioErwachsene: aq.escape(d => d.detail5 == radioErwachsene),
})
.derive({
focus: d => d.radioGeschlecht || d.selectStatus || d.radioAltersgruppe, //|| (d.radioKinder && d.radioErwachsene),
})
.objects()
Das sind Ihre Ergebnisse
Ergebnisse 1/3
Wie würde sich das auf die der auswirken?
html`
${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten"
? "<h4>Änderung der Haushaltseinkommen</h4>"
: "<h4>Änderung der Armutsgefährdungsquote</h4>"
}`
radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
generateIncomeChart("Geschlecht").render({ renderer: "svg" }) :
generatePovertyChart("Geschlecht").render({ renderer: "svg" })
html`
${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten"
? "<h4>Status quo der Haushaltseinkommen</h4>"
: "<h4>Status quo der Armutsgefährdungsquote</h4>"
}`
radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
generateIncomeChartStatusquo("Geschlecht").render({ renderer: "svg" }) :
generatePovertyChartStatusquo("Geschlecht").render({ renderer: "svg" })
hhIncomeGeschlechttext =
radioRaw == "Frau" && select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ?
"Das durchschnittliche Haushaltseinkommen von Frauen liegt im Status quo mit 2.470€ leicht unter dem der Männer (2.528€)¹. Sie würden von Szenario 1, also bei Höherbewertung von Kindererziehungszeiten, mehr profitieren (+0,47%) als Männer (+0,26%)." :
radioRaw != "Frau" && select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ?
"Das durchschnittliche Haushaltseinkommen von Männern liegt im Status quo mit 2.528€ leicht über dem der Frauen (2.470€)¹. Sie würden von Szenario 1, also bei Höherbewertung von Kindererziehungszeiten, weniger profitieren (+0,26%) als Frauen (+0,47%)." :
radioRaw == "Frau" && select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
"Das durchschnittliche Haushaltseinkommen von Frauen liegt im Status quo mit 2.470€ leicht unter dem der Männer (2.528€)¹. Sie würden von Szenario 2, also bei Höherbewertung von Zeiten der Arbeitslosigkeit, gleich viel wie Männer profitieren (+0,09%)." :
radioRaw != "Frau" && select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
"Das durchschnittliche Haushaltseinkommen von Männern liegt im Status quo mit 2.528€ leicht unter dem der Frauen (2.470€)¹. Sie würden von Szenario 2, also bei Höherbewertung von Zeiten der Arbeitslosigkeit, gleich viel wie Frauen profitieren (+0,09%)." :
radioRaw == "Frau" && select == "Szenario 3 (Einführung Gender-Pay-Gap-Faktor)" ?
"Das durchschnittliche Haushaltseinkommen von Frauen liegt im Status quo mit 2.470€ leicht unter dem der Männer (2.528€)¹. Sie würden von Szenario 3, also der Einführung eines Aufwertungsfaktors (Gender-Pay-Gap-Faktor) durch den die Benachteiligung von Frauen in der Arbeitswelt gemindert wird, mehr profitieren (+0,5%) als Männer (+0,28%)." :
"Das durchschnittliche Haushaltseinkommen von Männern liegt im Status quo mit 2.528€ leicht unter dem der Frauen (2.470€)¹. Sie würden von Szenario 3, also der Einführung eines Aufwertungsfaktors (Gender-Pay-Gap-Faktor) durch den die Benachteiligung von Frauen in der Arbeitswelt gemindert wird, weniger profitieren (+0,28%) als Frauen (+0,5%)."
hhPovertyGeschlechttext =
radioRaw == "Frau" && select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ?
"Die durchschnittliche Armutsgefährdungsquote von Frauen liegt im Status quo mit 14,4% leicht unter der der Männer (14,97%)¹. Sie würden von Szenario 1, also bei Höherbewertung von Kindererziehungszeiten, mehr profitieren (-0,22 Prozentpunkte) als Männer (-0,02 Prozentpunkte)." :
radioRaw != "Frau" && select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ?
"Die durchschnittliche Armutsgefährdungsquote von Männern liegt im Status quo mit 14,97% leicht über der der Frauen (14,4%)¹. Sie würden von Szenario 1, also bei Höherbewertung von Kindererziehungszeiten, weniger profitieren (-0,02 Prozentpunkte) als Frauen (-0,22 Prozentpunkte)." :
radioRaw == "Frau" && select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
"Die durchschnittliche Armutsgefährdungsquote von Frauen liegt im Status quo mit 14,4% leicht unter der der Männer (14,97%)¹. Sie würden von Szenario 2, also bei Höherbewertung von Zeiten der Arbeitslosigkeit, mehr profitieren (-0,05 Prozentpunkte) als Männer (-0,02 Prozentpunkte)." :
radioRaw != "Frau" && select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
"Die durchschnittliche Armutsgefährdungsquote von Männern liegt im Status quo mit 14,97% leicht über der der Frauen (14,4%)¹. Sie würden von Szenario 2, also bei Höherbewertung von Zeiten der Arbeitslosigkeit, weniger profitieren (-0,02 Prozentpunkte) als Frauen (-0,05 Prozentpunkte)." :
radioRaw == "Frau" && select == "Szenario 3 (Einführung Gender-Pay-Gap-Faktor)" ?
"Die durchschnittliche Armutsgefährdungsquote von Frauen liegt im Status quo mit 14,4% leicht unter der der Männer (14,97%)¹. Sie würden von Szenario 3, also der Einführung eines Aufwertungsfaktors (Gender-Pay-Gap-Faktor) durch den die Benachteiligung von Frauen in der Arbeitswelt gemindert wird, mehr profitieren (-0,42 Prozentpunkte) als Männer (-0,13 Prozentpunkte)." :
"Die durchschnittliche Armutsgefährdungsquote von Männern liegt im Status quo mit 14,97% leicht über der der Frauen (14,4%)¹. Sie würden von Szenario 3, also der Einführung eines Aufwertungsfaktors (Gender-Pay-Gap-Faktor) durch den die Benachteiligung von Frauen in der Arbeitswelt gemindert wird, weniger profitieren (-0,13 Prozentpunkte) als Frauen (-0,42 Prozentpunkte)."
html`${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
`<div class="infoText">¹Das Haushaltseinkommen wird berechnet, indem alle Einkommen der Haushaltsmitglieder summiert und als gemeinsame Ressource betrachtet werden. In der Regel wird angenommen, dass die Ressourcen innerhalb des Haushalts gleichmäßig verteilt sind. Inwieweit sich ein niedriges Individualeinkommen in einem niedrigen Haushaltseinkommen widerspiegelt, hängt stark von der Haushaltsstruktur ab.</div>` :
`<div class="infoText">¹Da das Armutsrisiko nicht anhand des individuellen, sondern des Haushaltseinkommens gemessen wird, ist das Armutsrisiko für einen Mann und eine Frau, die im selben Haushalt leben, unabhängig vom individuellen Einkommen gleich, wenn (wie üblicherweise angenommen) die Ressourcen im Haushalt gleichmäßig verteilt werden. In Österreich unterscheidet sich das Armutsrisiko für Frauen und Männer bis zum Regelpensionsalter daher trotz des relativ hohen Gender Pay Gap kaum.</div>`
}`
Eingabe ändern:
Inputs.bind(Inputs.select(["Szenario 1 (Höherbewertung Kindererziehungszeiten)","Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)","Szenario 3 (Einführung eines Aufwertungsfaktors [Gender-Pay-Gap-Faktor])"], {label: "Szenario"}), viewof selectnew)
Inputs.bind(Inputs.radio(["das Gesamteinkommen von Haushalten", "die Armutsgefährdungsquote von Haushalten"], {value: "das Gesamteinkommen von Haushalten", label: "Effekte auf"}), viewof radioHaushaltseffekt)
Das sind Ihre Ergebnisse
Ergebnisse 2/3
Wie würde sich das auf die in ihrer Altersgruppe auswirken?
optionHH2 = radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
html`Haushaltseinkommen` : html`Armutsgefährdungsquote`
html`
${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten"
? "<h4>Änderung der Haushaltseinkommen</h4>"
: "<h4>Änderung der Armutsgefährdungsquote</h4>"
}`
radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
generateIncomeChart("Altersgruppen").render({ renderer: "svg" }) :
generatePovertyChart("Altersgruppen").render({ renderer: "svg" })
html`
${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten"
? "<h4>Status quo der Haushaltseinkommen</h4>"
: "<h4>Status quo der Armutsgefährdungsquote</h4>"
}`
radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
generateIncomeChartStatusquo("Altersgruppen").render({ renderer: "svg" }) :
generatePovertyChartStatusquo("Altersgruppen").render({ renderer: "svg" })
AltersgruppeIncome =
radioAltersgruppe == "0-14" ? "2.200€" :
radioAltersgruppe == "15-24" ? "2.300€" :
radioAltersgruppe == "25-49" ? "2.500€" :
radioAltersgruppe == "50-64" ? "2.800€" :
radioAltersgruppe == "65-79" ? "2.500€" :
"2.400€"
BaseIncomeAge =
radioAltersgruppe == "50-64" ?
("Das durchschnittliche Haushaltseinkommen der Altersgruppe " + radioAltersgruppe + " liegt im Status quo bei etwa " + AltersgruppeIncome + ". Im Vergleich mit anderen Altersgruppen ist dies der höchste Wert. ") :
radioAltersgruppe == "0-14" ?
("Das durchschnittliche Haushaltseinkommen der Altersgruppe " + radioAltersgruppe + " liegt im Status quo bei etwa " + AltersgruppeIncome + ". Im Vergleich mit anderen Altersgruppen ist dies der niedrigste Wert. ") :
("Das durchschnittliche Haushaltseinkommen der Altersgruppe " + radioAltersgruppe + " liegt im Status quo bei etwa " + AltersgruppeIncome + ". ")
SzenarioIncomeAge =
select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ?
"Von Szenario 1 (Höherbewertung Kindererziehungszeiten) würden Personen zwischen 50 und 79 überdurchschnittlich profitieren." :
select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
"Von Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit) würden Personen zwischen 50 und 79 überdurchschnittlich profitieren." :
"Von Szenario 3 - Einführung eines Aufwertungsfaktors durch den die Benachteiligung von Frauen in der Arbeitswelt gemindert wird (Gender-Pay-Gap Faktor) würden Personen zwischen 50 und 79 überdurchschnittlich profitieren."
AltersgruppePoverty =
radioAltersgruppe == "0-14" ? "17%" :
radioAltersgruppe == "15-24" ? "18%" :
radioAltersgruppe == "25-49" ? "15%" :
radioAltersgruppe == "50-64" ? "12%" :
radioAltersgruppe == "65-79" ? "14%" :
"13%"
BasePovertyAge =
radioAltersgruppe == "15-24" ?
("Die durchschnittliche Armutsgefährdungsquote der Altersgruppe " + radioAltersgruppe + " liegt im Status quo bei etwa " + AltersgruppePoverty + ". Im Vergleich mit anderen Altersgruppen ist dies der höchste Wert. ") :
radioAltersgruppe == "50-64" ?
("Die durchschnittliche Armutsgefährdungsquote der Altersgruppe " + radioAltersgruppe + " liegt im Status quo bei etwa " + AltersgruppePoverty + ". Im Vergleich mit anderen Altersgruppen ist dies der niedrigste Wert. ") :
("Die durchschnittliche Armutsgefährdungsquote der Altersgruppe " + radioAltersgruppe + " liegt im Status quo bei etwa " + AltersgruppePoverty + ". ")
SzenarioPovertyAge =
select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ?
"Von Szenario 1 (Höherbewertung Kindererziehungszeiten) würden Personen zwischen 50 und 79 überdurchschnittlich profitieren." :
select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
"Von Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit) würden ausschließlich Personen zwischen 50 und 79 profitieren." :
"Von Szenario 3 - Einführung eines Aufwertungsfaktors durch den die Benachteiligung von Frauen in der Arbeitswelt gemindert wird (Gender-Pay-Gap Faktor) würden Personen zwischen 15 und 24 am meisten profitieren."
hhIncomeAltersgruppetext = BaseIncomeAge + SzenarioIncomeAge
hhPovertyAltersgruppetext = BasePovertyAge + SzenarioPovertyAge
Eingabe ändern:
viewof radioAltersgruppe = Inputs.radio(["0-14", "15-24", "25-49", "50-64", "65-79", "80+"], {label: "Altersgruppe", value: "0-14"})
altersgruppe = radioAltersgruppe
Inputs.bind(Inputs.select(["Szenario 1 (Höherbewertung Kindererziehungszeiten)","Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)","Szenario 3 (Einführung eines Aufwertungsfaktors [Gender-Pay-Gap-Faktor])"], {label: "Szenario"}), viewof selectnew)
Inputs.bind(Inputs.radio(["das Gesamteinkommen von Haushalten", "die Armutsgefährdungsquote von Haushalten"], {value: "das Gesamteinkommen von Haushalten", label: "Effekte auf"}), viewof radioHaushaltseffekt)
Das sind Ihre Ergebnisse
Ergebnisse 3/3
Wie würde sich das auf die für Personen mit Ihrem Erwerbsstatus auswirken?
optionHH3 = radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
html`Haushaltseinkommen` : html`Armutsgefährdungsquote`
html`
${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten"
? "<h4>Änderung der Haushaltseinkommen</h4>"
: "<h4>Änderung der Armutsgefährdungsquote</h4>"
}`
radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
generateIncomeChart("Erwerbsstatus").render({ renderer: "svg" }) :
generatePovertyChart("Erwerbsstatus").render({ renderer: "svg" })
html`
${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten"
? "<h4>Status quo der Haushaltseinkommen</h4>"
: "<h4>Status quo der Armutsgefährdungsquote</h4>"
}`
radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
generateIncomeChartStatusquo("Erwerbsstatus").render({ renderer: "svg" }) :
generatePovertyChartStatusquo("Erwerbsstatus").render({ renderer: "svg" })
StatusIncome =
selectStatus == "Arbeitsuchend, arbeitslos" ? "1.700€" :
selectStatus == "Dauerhaft arbeitsunfähig" ? "1.900€" :
selectStatus == "Im Vorschulalter" ? "2.100€" :
selectStatus == "In Ausbildung" ? "2.300€" :
selectStatus == "In Pension" ? "2.400€" :
selectStatus == "Inaktiv" ? "2.500€" :
selectStatus == "Landwirtschaft" ? "2.600€" :
selectStatus == "Selbständig beschäftigt" ? "3.100€" :
selectStatus == "Sonstige Inaktivität" ? "1.900€" :
"2.700€"
BaseIncomeStatus =
selectStatus == "Selbständig beschäftigt" ?
("Das durchschnittliche Haushaltseinkommen der Gruppe '" + selectStatus + "' liegt im Status quo bei etwa " + StatusIncome + ". Im Vergleich mit anderen Gruppen ist dies der höchste Wert. ") :
selectStatus == "Arbeitsuchend, arbeitslos" ?
("Das durchschnittliche Haushaltseinkommen der Gruppe '" + selectStatus + "' liegt im Status quo bei etwa " + StatusIncome + ". Im Vergleich mit anderen Gruppen ist dies der niedrigste Wert. ") :
("Das durchschnittliche Haushaltseinkommen der Gruppe '" + selectStatus + "' liegt im Status quo bei etwa " + StatusIncome + ". ")
SzenarioIncomeStatus =
"In allen gezeigten Szenarien würden Pensionist:innen überdurchschnittlich profitieren."
StatusPoverty =
selectStatus == "Arbeitsuchend, arbeitslos" ? "46%" :
selectStatus == "Dauerhaft arbeitsunfähig" ? "34%" :
selectStatus == "Im Vorschulalter" ? "18%" :
selectStatus == "In Ausbildung" ? "18%" :
selectStatus == "In Pension" ? "15%" :
selectStatus == "Inaktiv" ? "18%" :
selectStatus == "Landwirtschaft" ? "6%" :
selectStatus == "Selbständig beschäftigt" ? "17%" :
selectStatus == "Sonstige Inaktivität" ? "32%" :
"8%"
BasePovertyStatus =
selectStatus == "Arbeitsuchend, arbeitslos" ?
("Die durchschnittliche Armutsgefährdungsquote der Gruppe '" + selectStatus + "' liegt im Status quo bei etwa " + StatusPoverty + ". Im Vergleich mit anderen Gruppen ist dies der höchste Wert. ") :
selectStatus == "Landwirtschaft" ?
("Die durchschnittliche Armutsgefährdungsquote der Gruppe '" + selectStatus + "' liegt im Status quo bei etwa " + StatusPoverty + ". Im Vergleich mit anderen Gruppen ist dies der niedrigste Wert. ") :
("Die durchschnittliche Armutsgefährdungsquote der Gruppe '" + selectStatus + "' liegt im Status quo bei etwa " + StatusPoverty + ". ")
SzenarioPovertyStatus =
select == "Szenario 1 (Höherbewertung Kindererziehungszeiten)" ?
"Von Szenario 1 (Höherbewertung Kindererziehungszeiten) würden Pensionist:innen überdurchschnittlich profitieren. Weiters gäbe es positive Effekte auf arbeitssuchende Personen, Personen in Ausbildung sowie kleine positive Effekte für unselbständig Beschäftigte." :
select == "Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)" ?
"Von Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit) würden Personen der Gruppe 'Sonstige Inaktivität' am meisten profitieren. Weiters gibt es positive Effekte bei Pensionist:innen und dauerhaft arbeitsunfähigen Personen." :
"Von Szenario 3 - Einführung eines Aufwertungsfaktors durch den die Benachteiligung von Frauen in der Arbeitswelt gemindert wird (Gender-Pay-Gap Faktor) würden arbeitssuchende Personen am meisten profitieren. Weiters gibt es positive Effekte bei Pensionist:innen, Personen in Ausbildung und bei unselbständig beschäftigten Personen."
hhIncomeStatustext = BaseIncomeStatus + SzenarioIncomeStatus
hhPovertyStatustext = BasePovertyStatus + SzenarioPovertyStatus
Eingabe ändern:
viewof selectStatus = Inputs.select(["Selbständig beschäftigt", "Unselbständig beschäftigt", "In Pension", "Arbeitsuchend, arbeitslos", "In Ausbildung", "Dauerhaft arbeitsunfähig"], {label: "Erwerbsstatus", value: "Unselbständig beschäftigt"})
Inputs.bind(Inputs.select(["Szenario 1 (Höherbewertung Kindererziehungszeiten)","Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)","Szenario 3 (Einführung eines Aufwertungsfaktors [Gender-Pay-Gap-Faktor])"], {label: "Szenario"}), viewof selectnew)
Inputs.bind(Inputs.radio(["das Gesamteinkommen von Haushalten", "die Armutsgefährdungsquote von Haushalten"], {value: "das Gesamteinkommen von Haushalten", label: "Effekte auf"}), viewof radioHaushaltseffekt)
Ergebnisse auf einen Blick
Hier können Sie die Ergebnisse gesammelt betrachten und Ihre Eingaben ändern
Inputs.bind(Inputs.select(["Szenario 1 (Höherbewertung Kindererziehungszeiten)","Szenario 2 (Höherbewertung Zeiten der Arbeitslosigkeit)","Szenario 3 (Einführung eines Aufwertungsfaktors [Gender-Pay-Gap-Faktor])"], {label: "Szenario"}), viewof selectnew)
Inputs.bind(Inputs.radio(["das Gesamteinkommen von Haushalten", "die Armutsgefährdungsquote von Haushalten"], {value: "das Gesamteinkommen von Haushalten", label: "Effekte auf"}), viewof radioHaushaltseffekt)
Inputs.bind(Inputs.radio(["0-14", "15-24", "25-49", "50-64", "65-79", "80+"], {value: "0-14", label: "Altersgruppe"}), viewof radioAltersgruppe)
Inputs.bind(Inputs.select(["Selbständig beschäftigt", "Unselbständig beschäftigt", "In Pension", "Arbeitsuchend, arbeitslos", "In Ausbildung", "Dauerhaft arbeitsunfähig"], {value: "Unselbständig beschäftigt", label: "Erwerbsstatus"}), viewof selectStatus)
html`
${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten"
? "<h4>Änderung der Haushaltseinkommen nach Geschlecht</h4>"
: "<h4>Änderung der Armutsgefährdungsquote nach Geschlecht</h4>"
}`
radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
generateIncomeChart("Geschlecht").render({ renderer: "svg" }) :
generatePovertyChart("Geschlecht").render({ renderer: "svg" })
html`
${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten"
? "<h4>Status quo der Haushaltseinkommen nach Geschlecht</h4>"
: "<h4>Status quo der Armutsgefährdungsquote nach Geschlecht</h4>"
}`
radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
generateIncomeChartStatusquo("Geschlecht").render({ renderer: "svg" }) :
generatePovertyChartStatusquo("Geschlecht").render({ renderer: "svg" })
html`
${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten"
? "<h4>Änderung der Haushaltseinkommen nach Altersgruppen</h4>"
: "<h4>Änderung der Armutsgefährdungsquote nach Altersgruppen</h4>"
}`
radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
generateIncomeChart("Altersgruppen").render({ renderer: "svg" }) :
generatePovertyChart("Altersgruppen").render({ renderer: "svg" })
html`
${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten"
? "<h4>Status quo der Haushaltseinkommen nach Altersgruppen</h4>"
: "<h4>Status quo der Armutsgefährdungsquote nach Altersgruppen</h4>"
}`
radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
generateIncomeChartStatusquo("Altersgruppen").render({ renderer: "svg" }) :
generatePovertyChartStatusquo("Altersgruppen").render({ renderer: "svg" })
html`
${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten"
? "<h4>Änderung der Haushaltseinkommen nach Erwebsstatus</h4>"
: "<h4>Änderung der Armutsgefährdungsquote nach Erwebsstatus</h4>"
}`
radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
generateIncomeChart("Erwerbsstatus").render({ renderer: "svg" }) :
generatePovertyChart("Erwerbsstatus").render({ renderer: "svg" })
html`
${radioHaushaltseffekt === "das Gesamteinkommen von Haushalten"
? "<h4>Status quo der Haushaltseinkommen nach Erwebsstatus</h4>"
: "<h4>Status quo der Armutsgefährdungsquote nach Erwebsstatus</h4>"
}`
radioHaushaltseffekt === "das Gesamteinkommen von Haushalten" ?
generateIncomeChartStatusquo("Erwerbsstatus").render({ renderer: "svg" }) :
generatePovertyChartStatusquo("Erwerbsstatus").render({ renderer: "svg" })
AK Oberösterreich für faire Pensionen
Sie sehen, die 3 Szenarien aus der Studie, also die Höherberechnung von Kindererziehungszeiten und Zeiten der Arbeitslosigkeit bzw. die Einführung eines Aufwertungsfaktors (Gender-Pay-Gap-Faktor) durch den die Benachteiligung von Frauen in der Arbeitswelt gemindert wird, würden auf unterschiedliche Weise die Pensionen erhöhen. Vor allem für Frauen ist ein deutlich positiver Effekt zu spüren. Das ist enorm wichtig für ein gerechteres Pensionssystem, da Frauenpensionen in Österreich derzeit um über 40 Prozent niedriger sind als jene der Männer.
Die Vorschläge der Arbeiterkammer Oberösterreich für eine fairere Pensionsberechnung würden genau hier ansetzten und Frauenpensionen nachhaltig erhöhen.