Lösungen

Aufgabe_1

  # library(Hmisc) für Hmisc::rcorr
  # library(corrplot) für corrplot
  # library(pwr)
  
  # 1. Ermitteln Sie mit einer geeigneten Funktion die Korrelationen und prüfen Sie 
  #    diese auch auf statistische Signifikanz.
    CorRes <- Hmisc::rcorr(as.matrix(DF_Korr), type="pearson") # type can be pearson or spearman
    pander::pander(round(CorRes$r, 2))
    pander::pander(round(CorRes$P , 2))
  # 2. Zeichnen Sie einen Korrelationsplot mit dem Paket *corrplot*.
    corrplot::corrplot(cor(DF_Korr), type="upper", method = "ellipse")
  # 3. Berechnen Sie die Teststärke der Korrelation $r(IQ, EP)$
  #    (Hinweis: verwenden Sie die Funktion *pwr::pwr.r.test* des Pakets *pwr*).
    N    <- dim(DF_Korr)[1]
    PwrA <- pwr::pwr.r.test(n = N, r = 0.47, sig.level = 0.05, alternative = 'two.sided')
    pander::pander(data.frame(Kennwerte = unlist(PwrA)))
  # 4. Verwenden diese Funktion (*pwr::pwr.r.test*) um für eine Korrelation $r(x,y) = 0.21$ 
  #    den optimalen Stichprobenumfang zu berechnen.  
    OptN <- pwr::pwr.r.test(r = 0.21, sig.level = 0.05, power = 0.95, alternative = 'greater')
    pander::pander(data.frame(Kennwerte = unlist(OptN)))
  # 5. Prüfen Sie mit Hilfe der Funktion *mvn* aus dem Paket *MVN* 
  #    die Voraussetzung der bivariaten Normalverteilung der 
  #    Variablenpaare (EP,IQ), (EP, VZ) und (EP,PA).
    # library(MVN)
    # mvn(DF_Korr[, c("EP","IQ")], multivariatePlot = "persp")
    # mvn(DF_Korr[, c("EP","VZ")], multivariatePlot = "persp")
    # mvn(DF_Korr[, c("EP","PA")], multivariatePlot = "persp")

  # 6. Berechnen Sie die durchschnittliche Korrelation von $r_1(EP,IQ)$, $r_1(EP,VZ)$ und $r_1(EP,PA)$.
      round(fisherz2r(mean(c(fisherz(.47), fisherz(.36), fisherz(-.25)))), 2)
  # 7. Prüfen Sie, on der Unterschied der Korrelationskoeffizienten $r(EP,IQ) = 0.47$ und $r(EP,VZ) = 0.36$
  #    statistisch signifikant ist. Verwenden Sie die Funktion *psych::paired.r()* aus dem Paket *psych*
    # library(psych)
    psych::paired.r(xy        = .47, 
             xz        = .36, 
             n         = N,
             twotailed = TRUE) 

zurück zu Aufgabe

Aufgabe_2

    # library(Hmisc)

    # 1. Berechnen Sie zuerst nochmal die Pearson-Korrelation $r(EQ,IQ)$ des bereits geladenen Datensatzes
    #    und rechnen Sie dann eine Spearman Korrelation. Verwenden Sie nun die Funktion cor() des Basispakets.
    #    Vergleichen Sie die Ergebnisse!
    
    EP <- DF_Korr$EP
    IQ <- DF_Korr$IQ
    
    CorPearson  <- round(cor(EP, IQ, method = "pearson"), 2)
    CorSpearman <- round(cor(EP, IQ, method = "spearman"), 2)
    CorKendall  <- round(cor(EP, IQ, method = "kendall"), 2)
    
    pander::pander(data.frame(Pearson  = CorPearson,
                      Spearman = CorSpearman,
                      Kendall  = CorKendall))
    # Alternativ kann auch cor.test() verwendet werden, dabei werden die Tests auf
    # Signigikanz gleich mitgerechnet.
    # cor.test(x = EP, 
    #          y = IQ, 
    #          alternative = 'two.sided', 
    #          method = 'pearson')    
    # cor.test(x = EP, 
    #          y = IQ, 
    #          alternative = 'two.sided', 
    #          method = 'spearman')    
    # cor.test(x = EP, 
    #          y = IQ, 
    #          alternative = 'two.sided', 
    #          method = 'kendall')    
    # Bemerkung: cor.test() mit Kendall bringt Warnung bezüglich der Rangbindungen.
    #            Alternativ kann man daher die Funktion Kendall() des Paketes Kendal verwenden:
      # library(Kendall)
        # Kendall(x = EP, 
        #         y = IQ)
    # 2. Verwenden Sie die Funktion rank() um den Variablen EP und IQ Ränge zuzuordnen.
    #   Speichern Sie die Ergebnisse in EP_Ranks und IQ_Ranks und berechnen Sie anschließend
    #   eine Pearson-Korrelation. Vergleichen Sie die Ergebnisse mit dem vorherigen Pearson-r.
    EP_Ranks <- rank(EP, na.last = TRUE,
                     ties.method = c("average"))
    IQ_Ranks <- rank(IQ, na.last = TRUE,
                     ties.method = c("average"))
    round(cor(EP_Ranks, IQ_Ranks, method = "pearson"), 2)

zurück zu Aufgabe

Aufgabe_3

    # Zuerst wird die Examensperformanz über den Median in zwei Gruppen geteilt
    # library(sjmisc)
    DF_Biserial <- DF_Korr[order(EP), ]
    DF_Biserial <- sjmisc::dicho(DF_Biserial,
                         dich.by = "median", 
                         as.num = FALSE, 
                         var.label = "Grp",
                         val.labels = c("low", "high"), 
                         append = TRUE, 
                         suffix = "_Grp")
    IQ          <- DF_Biserial$IQ
    
    biserial(x = IQ, y = DF_Biserial$EP_Grp)    

zurück zu Aufgabe

rm(list = ls()) graphics.off() if (!require("pacman")) install.packages("pacman") pacman::p_load(car, DAAG, ggplot2, pander, ppcor, mosaicData, reshape2, rockchalk)