Learn R Programming

psych (version 1.0-97)

error.crosses: Plot x and y error bars

Description

Given two vectors of data (X and Y), plot the means and show standard errors in both X and Y directions.

Usage

error.crosses(x,y,labels=NULL,main=NULL,xlim=NULL,ylim= NULL,xlab=NULL,ylab=NULL,pos=NULL,offset=1,arrow.len=.2,alpha=.05,sd=FALSE,...)

Arguments

x
A vector of data or summary statistics (from Describe)
y
A second vector of data or summary statistics (also from Describe)
labels
the names of each pair -- defaults to rownames of x
main
The title for the graph
xlim
xlim values if desired-- defaults to min and max mean(x) +/- 2 se
ylim
ylim values if desired -- defaults to min and max mean(y) +/- 2 se
xlab
label for x axis -- grouping variable 1
ylab
label for y axis -- grouping variable 2
pos
Labels are located where with respect to the mean?
offset
Labels are then offset from this location
arrow.len
Arrow length
alpha
alpha level of error bars
sd
if sd is TRUE, then draw means +/- 1 sd)
...
Other parameters for plot

Details

For an example of two way error bars describing the effects of mood manipulations upon positive and negative affect, see http://personality-project.org/revelle/publications/happy-sad-appendix/FIG.A-6.pdf

The second example shows how error crosses can be done for multiple variables where the grouping variable is found dynamically.

See Also

To draw error bars for single variables error.bars, or by groups error.bars.by, or to find descriptive statistics describe or descriptive statistics by a grouping variable describe.by

Examples

Run this code
#just draw one pair of variables
desc <- describe(attitude)
x <- desc[1,]
y <- desc[2,]
error.crosses(x,y,xlab=rownames(x),ylab=rownames(y))   

#now for a bit more complicated plotting 
data(bfi)
desc <- describe.by(bfi[1:25],bfi$gender) #select a high and low group
error.crosses(desc$'1',desc$'2',ylab="female scores",xlab="male scores",main="BFI scores by gender")
 abline(a=0,b=1)
 
#do it from summary statistics  (using standard errors) 
g1.stats <- data.frame(n=c(10,20,30),means=c(10,12,18),se=c(2,3,5))
g2.stats <- data.frame(n=c(15,20,25),means=c(6,14,15),se =c(1,2,3))
error.crosses(g1.stats,g2.stats)

#Or, if you prefer to draw +/- 1 sd. instead of 95% confidence
g1.stats <- data.frame(n=c(10,20,30),means=c(10,12,18),sd=c(2,3,5))
g2.stats <- data.frame(n=c(15,20,25),means=c(6,14,15),sd =c(1,2,3))
error.crosses(g1.stats,g2.stats,sd=TRUE)

#and seem even fancy plotting: This is taken from a study of mood
#four films were given (sad, horror, neutral, happy)
#with a pre and post test
data(affect)
colors <- c("black","red","white","blue")
films <- c("Sad","Horror","Neutral","Happy")
map.mat <- describe.by(maps[10:17],maps$Film,mat=TRUE)
 error.crosses(map.mat[c(1:4,17:20),],map.mat[c(5:8,21:24),],labels=films[map.mat$group1],xlab="Energetic Arousal",ylab="Tense Arousal",col=colors[map.mat$group1],pch=16,cex=2)

Run the code above in your browser using DataLab