# NOT RUN {
library(TAM)
library(mice)
library(miceadds)
library(pls)
library(combinat)
library(mitml)
data(datenKapitel08)
data08H <- datenKapitel08$data08H
data08I <- datenKapitel08$data08I
data08J <- datenKapitel08$data08J
data08K <- datenKapitel08$data08K
# }
# NOT RUN {
## -------------------------------------------------------------
## Abschnitt 8.1.1: Konsequenzen fehlender Daten und
## messfehlerbehafteter Variablen
## -------------------------------------------------------------
# -------------------------------------------------------------
# Abschnitt 8.1.1, Listing 1: Deskriptive Statistiken des
# Illustrationsdatensatzes
#
data(datenKapitel08)
dat <- datenKapitel08$data08I[,-1]
#*** Missinganteile
round( colMeans( is.na(dat), na.rm=TRUE) , 2 )
#*** Mittelwerte
round( apply( dat , 2 , mean , na.rm=TRUE ) , 2 )
#*** Zusammenhang von Missingindikator und Variablen
round( miceadds::mi_dstat( dat[,c("WLE","X")] ) , 2 )
#*** Varianzen
round( apply( dat , 2 , var , na.rm=TRUE ) , 2 )
#*** Korrelationsmatrix
round( cor( dat , use = "pairwise.complete.obs") , 2 )
## -------------------------------------------------------------
## Abschnitt 8.2: Multiple Imputation
## -------------------------------------------------------------
# -------------------------------------------------------------
# Abschnitt 8.2.5, Listing 1: Variablenauswahl und leere
# Imputation
#
set.seed(56)
data(datenKapitel08)
dat <- datenKapitel08$data08H
# w<U+00E4>hle Variablen aus
dat1 <- dat[ , c("idschool", "HISEI", "buch", "E8LWLE",
"SES_Schule") ]
colMeans(is.na(dat1))
# f<U+00FC>hre leere Imputation durch
imp0 <- mice::mice(dat1, m=0, maxit=0)
# -------------------------------------------------------------
# Abschnitt 8.2.5, Listing 2: Spezifikation der Imputations-
# methoden
#
impMethod <- imp0$method
impMethod["HISEI"] <- "2l.continuous"
# [...] weitere Spezifikationen
impMethod["SES_Schule"] <- "2lonly.norm"
impMethod
# -------------------------------------------------------------
# Abschnitt 8.2.5, Listing 2b: Erg<U+00E4>nzung zum Buch
#
# [...] weitere Spezifikationen
impMethod["buch"] <- "2l.pmm"
impMethod
# -------------------------------------------------------------
# Abschnitt 8.2.5, Listing 3: Definition der Pr<U+00E4>diktormatrix
# f<U+00FC>r die Imputation in mice
#
predMatrix <- imp0$predictorMatrix
predMatrix[-1,"idschool"] <- -2
# [...]
predMatrix
# -------------------------------------------------------------
# Abschnitt 8.2.5, Listing 3b: Erg<U+00E4>nzung zum Buch
#
# [...]
predMatrix[2:4,2:4] <- 3*predMatrix[2:4,2:4]
predMatrix
# -------------------------------------------------------------
# Abschnitt 8.2.5, Listing 4: F<U+00FC>hre Imputation durch
#
imp1 <- mice::mice( dat1, imputationMethod=impMethod,
predictorMatrix=predMatrix, donors=5, m=10, maxit=7)
# -------------------------------------------------------------
# Abschnitt 8.2.5, Listing 4b: Erg<U+00E4>nzung zum Buch
#
#-- Mittelwert HISEI
wmod1 <- with( imp1 , lm(HISEI ~ 1))
summary( mice::pool( wmod1 ) )
#-- lineare Regression HISEI auf B<U+00FC>chervariable
wmod2 <- with( imp1 , lm(E8LWLE ~ HISEI) )
summary( mice::pool( wmod2 ))
#-- Inferenz Mehrebenenmodelle mit Paket mitml
imp1b <- mitml::mids2mitml.list(imp1)
wmod3 <- with(imp1b, lme4::lmer( HISEI ~ (1|idschool)) )
mitml::testEstimates(wmod3, var.comp=TRUE)
## ------------------------------------------------------------
## Abschnitt 8.3.2: Dimensionsreduzierende Verfahren f<U+00FC>r
## Kovariaten im latenten Regressionsmodell
## ------------------------------------------------------------
# -------------------------------------------------------------
# Abschnitt 8.3.2, Listing 1: Kovariatenauswahl, Interaktions-
# bildung und Bestimmung PLS-Faktoren
#
set.seed(56)
data(datenKapitel08)
dat <- datenKapitel08$data08J
#*** Kovariatenauswahl
kovariaten <- scan(what="character", nlines=2)
female migrant HISEI eltausb buch
SK LF NSchueler NKlassen SES_Schule
X <- scale( dat[, kovariaten ] )
V <- ncol(X)
# bilde alle Zweifachinteraktionen
c2 <- combinat::combn(V,2)
X2 <- apply( c2 , 2 , FUN = function(cc){
X[,cc[1]] * X[,cc[2]] } )
X0 <- cbind( X , X2 )
# Partial Least Squares Regression
mod1 <- pls::plsr( dat$E8LWLE ~ X0 , ncomp=55 )
summary(mod1)
# -------------------------------------------------------------
# Abschnitt 8.3.2, Listing 1b: Erg<U+00E4>nzung zum Buch
# Abbildung: Aufgekl<U+00E4>rter Varianzanteil
#
# Principal Component Regression (Extraktion der Hauptkomponenten)
mod2 <- pls::pcr( dat$E8LWLE ~ X0 , ncomp=55 )
summary(mod2)
#*** extrahierte Varianzen mit PLS-Faktoren und PCA-Faktoren
res <- mod1
R2 <- base::cumsum(res$Xvar) / res$Xtotvar
ncomp <- 55
Y <- dat$E8LWLE
R21 <- base::sapply( 1:ncomp , FUN = function(cc){
1 - stats::var( Y - res$fitted.values[,1,cc] ) / stats::var( Y )
} )
dfr <- data.frame("comp" = 1:ncomp , "PLS" = R21 )
res <- mod2
R2 <- base::cumsum(res$Xvar) / res$Xtotvar
ncomp <- 55
Y <- dat$E8LWLE
R21 <- base::sapply( 1:ncomp , FUN = function(cc){
1 - stats::var( Y - res$fitted.values[,1,cc] ) / stats::var( Y )
} )
dfr$PCA <- R21
plot( dfr$comp , dfr$PLS , type="l" , xlab="Anzahl Faktoren" ,
ylab="Aufgekl<U+00E4>rter Varianzanteil" ,
ylim=c(0,.3) )
points( dfr$comp , dfr$PLS , pch=16 )
points( dfr$comp , dfr$PCA , pch=17 )
lines( dfr$comp , dfr$PCA , lty=2 )
legend( 45 , .15 , c("PLS" , "PCA") , pch=c(16,17) , lty=c(1,2))
## ------------------------------------------------------------
## Abschnitt 8.3.3: Ziehung von Plausible Values in R
## ------------------------------------------------------------
# -------------------------------------------------------------
# Abschnitt 8.3.3, Listing 1: PLS-Faktoren ausw<U+00E4>hlen
#
facs <- mod1$scores[,1:10]
# -------------------------------------------------------------
# Abschnitt 8.3.3, Listing 1b: Erg<U+00E4>nzung zum Buch
#
set.seed(98766)
# -------------------------------------------------------------
# Abschnitt 8.3.3, Listing 2: Anpassung kognitive Daten
#
data(datenKapitel08)
dat2 <- datenKapitel08$data08K
items <- grep("E8L", colnames(dat2), value=TRUE)
# Sch<U+00E4>tzung des Rasch-Modells in TAM
mod11 <- TAM::tam.mml( resp= dat2[,items ] ,
pid = dat2$idstud, pweights = dat2$wgtstud )
# -------------------------------------------------------------
# Abschnitt 8.3.3, Listing 3: Individuelle Likelihood, latentes
# Regressionsmodell und PV-Ziehung
#
#*** extrahiere individuelle Likelihood
lmod11 <- IRT.likelihood(mod11)
#*** sch<U+00E4>tze latentes Regressionsmodell
mod12 <- TAM::tam.latreg( like = lmod11 , Y = facs )
#*** ziehe Plausible Values
pv12 <- TAM::tam.pv(mod12, normal.approx=TRUE,
samp.regr=TRUE , ntheta=400)
# -------------------------------------------------------------
# Abschnitt 8.3.3, Listing 4: Plausible Values extrahieren
#
#*** Plausible Values f<U+00FC>r drei verschiedene Sch<U+00FC>ler
round( pv12$pv[c(2,5,9),] , 3 )
# -------------------------------------------------------------
# Abschnitt 8.3.3, Listing 4b: Erg<U+00E4>nzung zum Buch
#
hist( pv12$pv$PV1.Dim1 )
# Korrelation mit Kovariaten
round( cor( pv12$pv$PV1.Dim1 , dat[,kovariaten] ,
use="pairwise.complete.obs") , 3 )
round( cor( dat$E8LWLE , dat[,kovariaten] ,
use="pairwise.complete.obs" ) , 3 )
# }
# NOT RUN {
<!-- %end dontrun -->
# }
Run the code above in your browser using DataLab