Uwe Ziegenhagen
Uwe Ziegenhagen

Reputation: 694

Plotting confidence intervals from a dataframe

I have written some R code which produces the limits of confidence intervals as well as the information if each confidence interval covers the true parameter. I'd like to visualize this but have no idea how.

confInt <- function(runs){
    result<-NULL
    vleft<-NULL
    vright<-NULL

    for (i in 1:runs) {
        data<-rnorm(1000)
        n<-length(data)
        a<-mean(data)
        s<-sd(data)
        error <- qnorm(0.975)*s/sqrt(n)
        left <- a-error
        right <- a+error

        result[i] = left<0 & 0<right
        vleft[i] = left 
        vright[i] = right
}
    data.frame(result,vleft,vright)
}


confInt(100)

confidence

EDIT: I have found a way using ggplot2

confInt <- function(runs){
    x<-1:runs
    mu<-NULL
    sigma<-NULL
    result<-NULL
    vleft<-NULL
    vright<-NULL

    for (i in 1:runs) {
        data<-rnorm(1000)
        n<-length(data)
        a<-mean(data)
        mu[i]<-a
        s<-sd(data)
        sigma[i]<-s
        error <- qnorm(0.975)*s/sqrt(n)
        left <- a-error
        right <- a+error

        result[i] = left<0 & 0<right
        vleft[i] = left 
        vright[i] = right
}
    data.frame(x,mu,sigma,result,vleft,vright)
}


df<-confInt(100)

require(ggplot2)

myplot<-ggplot(df, aes(x = x, y = mu)) +
  geom_point(size = 2) +
  geom_errorbar(aes(ymax = vleft, ymin = vright,colour=result*3))
myplot + theme_bw() 
summary(df)

Upvotes: 1

Views: 1168

Answers (1)

nothing
nothing

Reputation: 3290

There are many ways to approach this. Below, I use mapply to feed the the starting and ending points of each confidence interval to segments.

ci <- confInt(100)

plot(y = c(0, 100), x = c(-.15,.15), type = 'n', ylab = "",
    xlab = "", yaxt = 'n')

with(ci, mapply(segments, x0 = vleft, x1 = vright,
    y0 = 1:100, y1 = 1:100, col = (!result) + 1))

abline(v = 0, col = 'purple')

enter image description here

Upvotes: 1

Related Questions