adjustieren2

regression
lm
qm2
bayes
adjust
qm2-pruefung2023
Published

September 4, 2022

Exercise

Betrachten Sie folgendes Modell, das den Zusammenhang des Preises (price) und dem Gewicht (carat) von Diamanten untersucht (Datensatz diamonds).

library(tidyverse)
diamonds <- read_csv("https://vincentarelbundock.github.io/Rdatasets/csv/ggplot2/diamonds.csv")

Aber zuerst zentrieren wir den metrischen Prädiktor carat, um den Achsenabschnitt besser interpretieren zu können.

diamonds <-
  diamonds %>% 
  mutate(carat_z = carat - mean(carat, na.rm = TRUE))

Dann berechnen wir ein (bayesianisches) Regressionsmodell, wobei wir auf die Standardwerte der Prior zurückgreifen.

library(rstanarm)
library(easystats)
lm1 <- stan_glm(price ~ carat_z, data = diamonds,
                chains = 1,  # nur ein Mal Stichproben ziehen, spart Zeit (auf Kosten der Genauigkeit)
                refresh = 0)
parameters(lm1)
Parameter Median CI CI_low CI_high pd Rhat ESS Prior_Distribution Prior_Location Prior_Scale
(Intercept) 3932.920 0.95 3919.371 3946.766 1 0.9990498 393.9934 normal 3932.8 9973.599
carat_z 7756.537 0.95 7727.103 7786.143 1 0.9999757 1086.8613 normal 0.0 21040.850

Zur Verdeutlichung ein Diagramm zum Modell:

diamonds %>% 
  ggplot() +
  aes(x = carat_z, y = price) +
  geom_point() + 
  geom_smooth(method = "lm")

Answerlist

  1. Was kostet in Diamant mittlerer Größe laut Modell lm1? Runden Sie auf eine Dezimale. Geben Sie nur eine Zahl ein.
  2. Geben Sie eine Regressionsformel an, die lm1 ergänzt, so dass die Schliffart (cut) des Diamanten kontrolliert (adjustiert) wird. Anders gesagt: Das Modell soll die mittleren Preise für jede der fünf Schliffarten angeben. Geben Sie nur die Regressionsformel an. Lassen Sie zwischen Termen jeweils ein Leerzeichen Abstand.

Hinweis: Es gibt (laut Datensatz) folgende Schliffarten (und zwar in der folgenden Reihenfolge):

diamonds %>% 
  distinct(cut)
cut
Ideal
Premium
Good
Very Good
Fair











Solution

  1. Unser Modell lm1 schätzt den Preis eines Diamanten mittlerer Größe auf etwa 3932.5 (was immer auch die Einheiten sind, Dollar vermutlich).

  2. price ~ carat_z + cut

Dieses zweite Modell könnten wir so berechnen:

lm2 <- stan_glm(price ~ carat_z + cut, data = diamonds,
                chains = 1,
                refresh = 0)
parameters(lm2)
Parameter Median CI CI_low CI_high pd Rhat ESS Prior_Distribution Prior_Location Prior_Scale
(Intercept) 2407.912 0.95 2331.372 2480.358 1 1.0062264 369.3906 normal 3932.8 9973.599
carat_z 7870.898 0.95 7842.895 7898.690 1 0.9998309 1247.8616 normal 0.0 21040.850
cutGood 1116.806 0.95 1033.093 1200.567 1 1.0035885 420.2779 normal 0.0 34685.376
cutIdeal 1798.721 0.95 1719.831 1875.217 1 1.0029074 376.1663 normal 0.0 20362.277
cutPremium 1434.665 0.95 1356.570 1513.830 1 1.0022276 389.1478 normal 0.0 22862.493
cutVery Good 1507.099 0.95 1425.447 1589.738 1 1.0045950 383.1560 normal 0.0 23922.148

Ein “normales” (frequentistisches) lm käme zu ähnlichen Ergebnissen:

lm(price ~ carat_z + cut, data = diamonds)

Call:
lm(formula = price ~ carat_z + cut, data = diamonds)

Coefficients:
 (Intercept)       carat_z       cutGood      cutIdeal    cutPremium  
        2405          7871          1120          1801          1439  
cutVery Good  
        1510  

Man könnte hier noch einen Interaktionseffekt ergänzen, wenn man Grund zur Annahme hat, dass es einen gibt.


Categories:

  • regression
  • lm
  • qm2
  • bayes
  • adjust