Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

person.side

Wright Map person sides


Description

Draw the person side of a Wright Map in a variety of styles. Intended to be primarily called by wrightMap, but also available for use on their own.

Usage

personHist(thetas, yRange = NULL, breaks = "FD", dim.lab.cex = 0.6, dim.lab.side = 3
  , dim.lab.adj = 0.5, dim.names = NULL, dim.color = "white", person.points = NULL
  , person.range = NULL, p.point.col = "gray45", p.range.col = "gray75"
  ,axis.persons = "Respondents", oma = c(0, 5, 0, 5), axis.logits = "Logits"
  , show.axis.logits = TRUE,...)

personDens(thetas, yRange = NULL, dim.lab.cex = 0.6, dim.lab.side = 3, dim.lab.adj = 0.5
  ,dim.names = NULL,dim.color = "black",person.points = NULL, person.range = NULL
  , p.point.col = "black", p.range.col = "gray70",oma = c(0, 5, 0, 5)
  , axis.logits = "Logits",show.axis.logits = TRUE, axis.persons = "Respondents",...)

Arguments

thetas

vector or matrix of person parameters. If a matrix, persons should be the rows and dimensions the columns.

yRange

vector with 2 elements specifying the lower and upper limits of the plot's y-axis.

dim.lab.cex

An integer specifying the amount the dimension labels should be magnified relative to the default.

dim.lab.side

an integer specifying in which side to plot the dimension names. Values of 1, 2, 3 (default) and 4, respectively indicate positions below, to the left of, above and to the right of the person distributions.

dim.lab.adj

a numerical value adjusting the position of the dimension names.

dim.names

a string or a vector of strings containing the names of each one of the dimensions.

dim.color

a numerical value or vector indicating the colors to be used for representing each dimension.

person.points

a vector of individual values to highlight

person.range

Can be a pair of values, an even-lengthed vector, or a matrix with two rows. Values indicate the start and endpoints of ranges to highlight. If a matrix, the first row should be lower bounds and the second row upper bounds of the ranges. If a vector, the values should alternate: (lower1,upper1,lower2,upper2,...).

p.point.col

a string or vector of strings indicating the color to use for the highlighted points

p.range.col

a string or vector of strings indicating the color to use for the highlighted ranges.

axis.persons

title of the y-axis on the left side.

oma

values to use for the oma parameter (see par)

show.axis.logits

logical indicating whether to show the logit axis

axis.logits

title of the y-axis on the right side

...

Not used.

For personHist:

breaks

See hist). This argument is passed directly to hist, so it will accept all the options detailed in that function's manual.

Details

These functions are designed as helper functions for wrightMap and ppPlot to draw the person side of a map. When called outside of that function, they can be used to create more customized maps. Possible uses inlcude:

  • draw a person map on its own

  • compare two person maps in a single figure

  • draw a Wright Map with the item side on the left and the person side on the right

  • etc.

The personHist style, the default, draws the person distribution as a histogram, and is equivalent to the use.hist = TRUE option from previous versions of wrightMap. The personDens style draws a density plot.

The person.points, person.range, p.point.col, and p.range.col parameters are called directly by ppPlot to show the estimate and standard deviation for a single person. However, they can also be specified without using ppPlot to highlight arbitrary values or ranges.

Author(s)

Rebecca Freund and David Torres Irribarra

See Also

Examples

# Creating a Wright Map with item side on the left
	
	multi.proficiency <- data.frame(
    d1 = rnorm(1000, mean =  -0.5, sd = 1),
    d2 = rnorm(1000, mean =   0.0, sd = 1),
    d3 = rnorm(1000, mean =  +0.5, sd = 1))

    
  items.loc <- sort( rnorm( 20))
  thresholds <- data.frame(
    l1 = items.loc - 0.5 ,
    l2 = items.loc - 0.25,
    l3 = items.loc + 0.25,
    l4 = items.loc + 0.5)
    
    # split.screen: Set up a split screen with the left side 80 percent of the screen
    # yRange = c(-3,4): Set the yRange to be the same for both sides
    # axis.logits.side = "L": Move the item logit axis to the left
    # oma = c(0,0,0,2): Adjust the spacing between the graphs
    # mtext("Wright Map", side = 3, font = 2, line = 1): add a title
    # screen(2): Start drawing on the second screen
    
    split.screen(figs = matrix(c(0,.8,0,1,.8,1,0,1),ncol = 4, byrow = TRUE)) 
    itemModern(thresholds, yRange = c(-3,4), show.axis.logits = "L", oma = c(0,0,0,2))
    mtext("Wright Map", side = 3, font = 2, line = 1)
    screen(2)
    personHist(multi.proficiency, axis.persons = "",yRange = c(-3,4)
    , axis.logits = "Persons", show.axis.logits = FALSE)
    
     ## Creating a multidimensional Wright Map with each dimension separate
    
    ## Mock results
  
    d1 = rnorm(1000, mean =  -0.5, sd = 1)
    d2 = rnorm(1000, mean =   0.0, sd = 1)

	dim1.diff <- rnorm(5)
	dim2.diff <- rnorm(5)
  
	split.screen(figs = matrix(c(0,.1,0,1,
  								.12,.6,0,1,
  								.5,.6,0,1,
  								.5,1,0,1),ncol = 4,byrow = TRUE))
  							  
	personDens(d1,yRange = c(-3,3),show.axis.logits = FALSE
  , axis.logits = "")
	screen(2)
	itemModern(dim1.diff,yRange = c(-3,3),show.axis.logits = FALSE)
	mtext("Wright Map", side = 3, font = 2, line = 1)
	screen(3)
	personDens(d2,yRange = c(-3,3),show.axis.logits = FALSE
  , axis.logits = ""
  , axis.persons = "",dim.names = "Dim2")
	screen(4)
	itemModern(dim2.diff,yRange = c(-3,3),show.axis.logits = FALSE
  , label.items = paste("Item",6:10))

WrightMap

IRT Item-Person Map with 'ConQuest' Integration

v1.2.3
BSD_2_clause + file LICENSE
Authors
David Torres Irribarra & Rebecca Freund
Initial release
2020-04-24

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.