11# # File Name: dif.logisticregression.R
2- # # File Version: 1.204
2+ # # File Version: 1.206
3+
4+
35
4- # ---------------------------------------------------------------------------------------##
56# This function performs itemwise DIF analysis by using logistic regression methods ##
67# uniform and nonuniform DIF ##
78dif.logistic.regression <- function ( dat , group , score , quant = 1.645 )
89{
9- # INPUT:
10- # dat ... data frame (must only include item responses)
11- # group ... group identifier (this has to be a dummy variable)
12- # score ... matching criterion
13-
1410 I <- ncol(dat )
1511 matr <- NULL
1612 cat(' Items ' )
@@ -21,8 +17,7 @@ dif.logistic.regression <- function( dat, group, score, quant=1.645)
2117 mod3 <- stats :: glm( y ~ score + group + score * group , data = dat.ii ,
2218 family = ' binomial' )
2319
24- h1 <- data.frame ( item = colnames(dat )[ii ], N = sum( 1 - is.na( dat [,ii ] ),
25- na.rm = TRUE ))
20+ h1 <- data.frame ( item = colnames(dat )[ii ], N = sum(1 - is.na(dat [,ii ]), na.rm = TRUE ))
2621 h1 $ R <- min(group )
2722 h1 $ F <- max(group )
2823 h1 $ nR <- sum( ( 1 - is.na( dat [,ii ] ) )* (1 - group ), na.rm = T )
@@ -56,7 +51,7 @@ dif.logistic.regression <- function( dat, group, score, quant=1.645)
5651 cat( ii , ' ' )
5752 utils :: flush.console()
5853 if ( ii %% 15 == 0 ){ cat(' \n ' ) }
59- }
54+ }
6055 cat(' \n ' )
6156 # include variable of adjusted p values
6257 matr [, ' pdiff.adj' ] <- matr $ pR - matr $ pF - mean( matr $ pR - matr $ pF )
@@ -79,12 +74,10 @@ dif.logistic.regression <- function( dat, group, score, quant=1.645)
7974 # **** calculation of DIF variance
8075 dif1 <- dif.variance( dif = matr $ uniformDIF , se.dif = matr $ se.uniformDIF )
8176 matr <- data.frame ( matr [, seq(1 ,ind1 )], uniform.EBDIF = dif1 $ eb.dif ,
82- DIF.SD = dif1 $ unweighted.DIFSD , matr [, seq(ind1 + 1 , ncol(matr )) ] )
77+ DIF.SD = dif1 $ unweighted.DIFSD , matr [, seq(ind1 + 1 , ncol(matr )) ] )
8378 cat( paste0(' \n DIF SD=' , round(dif1 $ unweighted.DIFSD , 3 ) ), ' \n ' )
8479 # sorting of the items
8580 g1 <- rank( matr $ uniformDIF )
8681 matr <- data.frame ( itemnr = 1L : nrow(matr ), sortDIFindex = g1 , matr )
8782 return (matr )
8883}
89- # ------------------------------------------------------------------------------
90-
0 commit comments