person.side: Wright Map person sides

person.sideR Documentation

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", show.axis.persons = FALSE
  , axis.persons.par = list(), 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 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 dimension.

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

A pair of values, an even-length 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

The title of the y-axis on the left side.

show.axis.persons

Logical indicating whether to show the persons axis on the left side. Default is FALSE.

axis.persons.par

A list of parameters to customize the appearance of the persons axis. This can include options such as cex.axis, las, and others as supported by the axis function.

oma

Values to use for the oma parameter (see par).

show.axis.logits

Logical indicating whether to show the logit axis.

axis.logits

The title of the y-axis on the right side.

...

Additional arguments passed to other methods (e.g., cutLines).

For personHist:

breaks

A parameter passed to the hist function to define the binning of the histogram.

Details

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

  • Drawing a person map on its own

  • Comparing two person maps in a single figure

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

The personHist style, the default, draws the person distribution as a histogram. The personDens style draws a density plot.

The person.points, person.range, p.point.col, and p.range.col parameters can highlight specific values or ranges, either when called directly or via ppPlot.

Author(s)

Rebecca Freund and David Torres Irribarra

See Also

item.side personData wrightMap ppPlot

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 documentation built on Sept. 24, 2024, 9:07 a.m.