How to plot marginal effects (MEM) in R? -


i have 2 logistic , 2 ordered logistic regression models:

model <- glm(y1 ~ x1+x2+x3+x4+x5, data = data, family = "binomial") #logistic modelinteraction <- glm(y1 ~ x1+x2+x3+x4+x5+x1*x5, data = data, family = "binomial") #logistic            require(mass)         data$y2 <- as.factor(data$y2) # make y2 ordinal 1   mod<- polr(y2 ~x1+x2+x3+x4+x5 ,data=data, hess = true) #ordered logistic modinteraction<- polr(y2~x1+x2+x3+x4+x5+x1*x5 ,data=data, hess = true) #ordered logistic 

to calculate marginal effects (mem approach) logistic models, used mfx package:

require(mfx) <- logitmfx(model, data=data, atmean=true) b <- logitmfx(modelinteraction, data=data, atmean=true) 

to calculate marginal effects ordered logistic models, used erer package:

require(erer)     c <- ocme(mod) d <- ocme(modinteraction) 

what want is:

  1. plot results (i.e. variables) a, b, c, , d.
  2. show result 1 variable: x1c(0,1) -- vary x1 between 0 , 1 -- while others hold @ mean ( both logistic , ordered logistic models).

the plot or table want create should this: figure 1 /users/mac/desktop/skärmavbild 2016-07-21 kl. 22.59.47.png

the y axis in figure 1 indicates parameter estimate , x axis indicates name of variables

  1. i want plot interaction term in b , d (i.e. x1*x5) figure similar this: figure 2

enter image description here

the y axis in figure 2 indicates probability difference , x axis minimum , maximum value of x5 (i.e. -10 +10)

i have been looking around solutions haven't been able find any. appreciate suggestions!

a reproducible sample (originally http://www.ats.ucla.edu/stat/data/binary.csv; i've made changes in order make more similar dataset):

  > dput(data) structure(list(y1 = c(0l, 1l, 1l, 1l, 0l, 1l, 1l, 0l, 1l, 0l,  0l, 0l, 1l, 0l, 1l, 0l, 0l, 0l, 0l, 1l, 0l, 1l, 0l, 0l, 1l, 1l,  1l, 1l, 1l, 0l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, na, 1l, 0l, 1l,  1l, 0l, 0l, 1l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 1l, 0l, 0l,  0l, 0l, 1l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 0l, 0l, 1l, 0l, 1l, 0l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 1l,  0l, 1l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 1l,  1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 1l, 0l, 1l, 1l,  0l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 1l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 1l, 0l, 1l, 0l,  0l, 1l, 0l, 1l, 0l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 0l, 0l, 1l, 0l, 1l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 0l,  0l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 1l, 0l, 0l, 1l, 0l, 0l, 0l, 1l,  1l, 0l, 1l, 1l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 1l, 0l, 1l,  0l, 1l, 0l, 0l, 1l, 0l, 0l, 1l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 0l,  1l, 0l, 1l, 0l, 0l, 0l, 0l, 1l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 0l, 1l, 1l, 1l, 0l, 1l, 1l, 0l, 0l, 0l, 0l, 1l, 1l, 1l, 0l,  0l, 1l, 1l, 0l, 1l, 0l, 1l, 0l, 0l, 1l, 0l, 1l, 1l, 1l, 0l, 0l,  0l, 0l, 1l, 0l, 1l, 1l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, na,  0l, 0l, 0l, 1l, 1l, 1l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 1l,  0l, 1l, 1l, 1l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 0l,  0l, 0l, 0l, 0l, 1l, 1l, 0l, 0l, 0l, 1l, 0l, 1l, 0l, 0l, 0l, 0l,  0l, 0l, 0l, 0l, 1l, 0l, 1l, 0l, 1l, 1l, 0l, 0l, 1l, 0l, 1l, 1l,  0l, na, 1l, 0l, 0l, 0l, 0l, 0l, 1l, 1l, 1l, 1l, 0l, 0l, 0l, 1l,  0l, 0l, 0l, 1l, 0l, 0l, 1l, 0l, 1l, 0l, 0l, 0l, 1l, 1l, 1l, 1l,  1l, 0l, 0l, 0l, 0l, 0l), y2 = structure(c(1l, 3l, 2l, 2l, 1l,  2l, 2l, 1l, 3l, 1l, 1l, 1l, 2l, 1l, 2l, 1l, 1l, 1l, 1l, 2l, 1l,  2l, 1l, 1l, 2l, 2l, 2l, 2l, 2l, 1l, 1l, 1l, 1l, 3l, 1l, 1l, 1l,  1l, na, 3l, 1l, 2l, 2l, 1l, 1l, 3l, 2l, 1l, 1l, 1l, 1l, 1l, 1l,  2l, 1l, 3l, 1l, 1l, 1l, 1l, 2l, 1l, 1l, 3l, 1l, 1l, 1l, 1l, 1l,  1l, 1l, 1l, 1l, 1l, 1l, 1l, 1l, 3l, 1l, 2l, 1l, 1l, 1l, 1l, 3l,  1l, 1l, 1l, 1l, 2l, 1l, 2l, 1l, 1l, 2l, 1l, 1l, 1l, 1l, 1l, 1l,  1l, 1l, 1l, 3l, 2l, 2l, 1l, 1l, 1l, 1l, 1l, 1l, 1l, 1l, 1l, 2l,  1l, 2l, 1l, 2l, 2l, 1l, 1l, 1l, 1l, 2l, 1l, 1l, 1l, 2l, 1l, 1l,  1l, 1l, 1l, 1l, 1l, 1l, 2l, 1l, 3l, 1l, 1l, 1l, 1l, 1l, 1l, 2l,  1l, 2l, 1l, 2l, 1l, 1l, 2l, 1l, 2l, 1l, 1l, 1l, 1l, 2l, 1l, 1l,  1l, 1l, 1l, 1l, 1l, 1l, 1l, 1l, 3l, 1l, 2l, 1l, 3l, 1l, 1l, 1l,  1l, 1l, 2l, 1l, 1l, 1l, 1l, 1l, 1l, 2l, 1l, 1l, 1l, 2l, 1l, 1l,  3l, 1l, 1l, 1l, 2l, 2l, 1l, 2l, 3l, 1l, 2l, 1l, 1l, 1l, 1l, 1l,  1l, 2l, 3l, 1l, 2l, 1l, 2l, 1l, 1l, 2l, 1l, 1l, 3l, 1l, 1l, 1l,  2l, 1l, 1l, 1l, 1l, 2l, 1l, 2l, 1l, 1l, 1l, 1l, 2l, 3l, 1l, 1l,  1l, 1l, 1l, 1l, 1l, 1l, 1l, 2l, 2l, 2l, 1l, 2l, 3l, 1l, 1l, 1l,  1l, 3l, 3l, 3l, 1l, 1l, 3l, 2l, 1l, 2l, 1l, 3l, 1l, 1l, 2l, 1l,  2l, 2l, 2l, 1l, 1l, 1l, 1l, 3l, 1l, 2l, 2l, 1l, 1l, 2l, 1l, 1l,  1l, 1l, 1l, 1l, na, 1l, 1l, 1l, 3l, 2l, 2l, 1l, 1l, 2l, 1l, 1l,  1l, 1l, 1l, 1l, 3l, 1l, 2l, 2l, 2l, 2l, 1l, 1l, 1l, 1l, 1l, 1l,  1l, 1l, 3l, 1l, 1l, 1l, 1l, 1l, 1l, 3l, 2l, 1l, 1l, 1l, 3l, 1l,  3l, 1l, 1l, 1l, 1l, 1l, 1l, 1l, 1l, 2l, 1l, 3l, 1l, 2l, 2l, 1l,  1l, 3l, 1l, 2l, 2l, 1l, na, 2l, 1l, 1l, 1l, 1l, 1l, 2l, 3l, 2l,  2l, 1l, 1l, 1l, 2l, 1l, 1l, 1l, 2l, 1l, 1l, 3l, 1l, 2l, 1l, 1l,  1l, 3l, 2l, 3l, 2l, 3l, 1l, 1l, 1l, 1l, 1l), .label = c("0",  "1", "2"), class = "factor"), x1 = c(0l, 0l, 0l, 0l, 0l, 0l,  0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 0l, 1l,  0l, 0l, 1l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 0l,  1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 0l, 1l,  1l, 1l, 0l, 1l, 1l, 0l, 1l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 0l, 0l, 0l, 0l, 1l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l,  0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  1l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 1l, 0l, 0l, 1l, 0l,  0l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 1l, 1l, 0l, 0l, 0l, 0l, 0l,  1l, 1l, 0l, 1l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 1l,  0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 1l,  0l, 0l, 0l, 0l, 1l, 0l, 0l, 1l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 0l,  0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 1l, 0l, 0l, 0l,  0l, 0l, 1l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 0l, 0l,  0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 0l, 0l, 0l, 0l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 1l,  1l, 1l, 0l, 0l, 0l, 1l, 1l, 0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 0l,  1l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l,  0l, 0l, 0l, 0l, 0l, 0l, 1l, 0l, 1l, 0l, 0l, 0l, 0l, 1l, 0l, 0l,  0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l, 0l), x2 = c(380l, 660l, 800l,  640l, 520l, 760l, 560l, 400l, 540l, 700l, 800l, 440l, 760l, 700l,  700l, 480l, 780l, 360l, 800l, 540l, 500l, 660l, 600l, 680l, 760l,  800l, 620l, 520l, 780l, 520l, 540l, 760l, 600l, 800l, 360l, 400l,  580l, 520l, na, 520l, 560l, 580l, 600l, 500l, 700l, 460l, 580l,  500l, 440l, 400l, 640l, 440l, 740l, 680l, 660l, 740l, 560l, 380l,  400l, 600l, 620l, 560l, 640l, 680l, 580l, 600l, 740l, 620l, 580l,  800l, 640l, 300l, 480l, 580l, 720l, 720l, 560l, 800l, 540l, 620l,  700l, 620l, 500l, 380l, 500l, 520l, 600l, 600l, 700l, 660l, 700l,  720l, 800l, 580l, 660l, 660l, 640l, 480l, 700l, 400l, 340l, 580l,  380l, 540l, 660l, 740l, 700l, 480l, 400l, 480l, 680l, 420l, 360l,  600l, 720l, 620l, 440l, 700l, 800l, 340l, 520l, 480l, 520l, 500l,  720l, 540l, 600l, 740l, 540l, 460l, 620l, 640l, 580l, 500l, 560l,  500l, 560l, 700l, 620l, 600l, 640l, 700l, 620l, 580l, 580l, 380l,  480l, 560l, 480l, 740l, 800l, 400l, 640l, 580l, 620l, 580l, 560l,  480l, 660l, 700l, 600l, 640l, 700l, 520l, 580l, 700l, 440l, 720l,  500l, 600l, 400l, 540l, 680l, 800l, 500l, 620l, 520l, 620l, 620l,  300l, 620l, 500l, 700l, 540l, 500l, 800l, 560l, 580l, 560l, 500l,  640l, 800l, 640l, 380l, 600l, 560l, 660l, 400l, 600l, 580l, 800l,  580l, 700l, 420l, 600l, 780l, 740l, 640l, 540l, 580l, 740l, 580l,  460l, 640l, 600l, 660l, 340l, 460l, 460l, 560l, 540l, 680l, 480l,  800l, 800l, 720l, 620l, 540l, 480l, 720l, 580l, 600l, 380l, 420l,  800l, 620l, 660l, 480l, 500l, 700l, 440l, 520l, 680l, 620l, 540l,  800l, 680l, 440l, 680l, 640l, 660l, 620l, 520l, 540l, 740l, 640l,  520l, 620l, 520l, 640l, 680l, 440l, 520l, 620l, 520l, 380l, 560l,  600l, 680l, 500l, 640l, 540l, 680l, 660l, 520l, 600l, 460l, 580l,  680l, 660l, 660l, 360l, 660l, 520l, 440l, 600l, 800l, 660l, 800l,  420l, 620l, 800l, 680l, 800l, 480l, 520l, 560l, na, 540l, 720l,  640l, 660l, 400l, 680l, 220l, 580l, 540l, 580l, 540l, 440l, 560l,  660l, 660l, 520l, 540l, 300l, 340l, 780l, 480l, 540l, 460l, 460l,  500l, 420l, 520l, 680l, 680l, 560l, 580l, 500l, 740l, 660l, 420l,  560l, 460l, 620l, 520l, 620l, 540l, 660l, 500l, 560l, 500l, 580l,  520l, 500l, 600l, 580l, 400l, 620l, 780l, 620l, 580l, 700l, 540l,  760l, 700l, 720l, 560l, 720l, 520l, 540l, 680l, na, 560l, 480l,  460l, 620l, 580l, 800l, 540l, 680l, 680l, 620l, 560l, 560l, 620l,  800l, 640l, 540l, 700l, 540l, 540l, 660l, 480l, 420l, 740l, 580l,  640l, 640l, 800l, 660l, 600l, 620l, 460l, 620l, 560l, 460l, 700l,  600l), x3 = c(3.61, 3.67, 4, 3.19, 2.93, 3, 2.98, 3.08, 3.39,  3.92, 4, 3.22, 4, 3.08, 4, 3.44, 3.87, 2.56, 3.75, 3.81, 3.17,  3.63, 2.82, 3.19, 3.35, 3.66, 3.61, 3.74, 3.22, 3.29, 3.78, 3.35,  3.4, 4, 3.14, 3.05, 3.25, 2.9, na, 2.68, 2.42, 3.32, 3.15, 3.31,  2.94, 3.45, 3.46, 2.97, 2.48, 3.35, 3.86, 3.13, 3.37, 3.27, 3.34,  4, 3.19, 2.94, 3.65, 2.82, 3.18, 3.32, 3.67, 3.85, 4, 3.59, 3.62,  3.3, 3.69, 3.73, 4, 2.92, 3.39, 4, 3.45, 4, 3.36, 4, 3.12, 4,  2.9, 3.07, 2.71, 2.91, 3.6, 2.98, 3.32, 3.48, 3.28, 4, 3.83,  3.64, 3.9, 2.93, 3.44, 3.33, 3.52, 3.57, 2.88, 3.31, 3.15, 3.57,  3.33, 3.94, 3.95, 2.97, 3.56, 3.13, 2.93, 3.45, 3.08, 3.41, 3,  3.22, 3.84, 3.99, 3.45, 3.72, 3.7, 2.92, 3.74, 2.67, 2.85, 2.98,  3.88, 3.38, 3.54, 3.74, 3.19, 3.15, 3.17, 2.79, 3.4, 3.08, 2.95,  3.57, 3.33, 4, 3.4, 3.58, 3.93, 3.52, 3.94, 3.4, 3.4, 3.43, 3.4,  2.71, 2.91, 3.31, 3.74, 3.38, 3.94, 3.46, 3.69, 2.86, 2.52, 3.58,  3.49, 3.82, 3.13, 3.5, 3.56, 2.73, 3.3, 4, 3.24, 3.77, 4, 3.62,  3.51, 2.81, 3.48, 3.43, 3.53, 3.37, 2.62, 3.23, 3.33, 3.01, 3.78,  3.88, 4, 3.84, 2.79, 3.6, 3.61, 2.88, 3.07, 3.35, 2.94, 3.54,  3.76, 3.59, 3.47, 3.59, 3.07, 3.23, 3.63, 3.77, 3.31, 3.2, 4,  3.92, 3.89, 3.8, 3.54, 3.63, 3.16, 3.5, 3.34, 3.02, 2.87, 3.38,  3.56, 2.91, 2.9, 3.64, 2.98, 3.59, 3.28, 3.99, 3.02, 3.47, 2.9,  3.5, 3.58, 3.02, 3.43, 3.42, 3.29, 3.28, 3.38, 2.67, 3.53, 3.05,  3.49, 4, 2.86, 3.45, 2.76, 3.81, 2.96, 3.22, 3.04, 3.91, 3.34,  3.17, 3.64, 3.73, 3.31, 3.21, 4, 3.55, 3.52, 3.35, 3.3, 3.95,  3.51, 3.81, 3.11, 3.15, 3.19, 3.95, 3.9, 3.34, 3.24, 3.64, 3.46,  2.81, 3.95, 3.33, 3.67, 3.32, 3.12, 2.98, 3.77, 3.58, 3, 3.14,  3.94, 3.27, 3.45, 3.1, 3.39, 3.31, 3.22, 3.7, 3.15, 2.26, 3.45,  2.78, 3.7, 3.97, 2.55, 3.25, 3.16, na, 3.5, 3.4, 3.3, 3.6, 3.15,  3.98, 2.83, 3.46, 3.17, 3.51, 3.13, 2.98, 4, 3.67, 3.77, 3.65,  3.46, 2.84, 3, 3.63, 3.71, 3.28, 3.14, 3.58, 3.01, 2.69, 2.7,  3.9, 3.31, 3.48, 3.34, 2.93, 4, 3.59, 2.96, 3.43, 3.64, 3.71,  3.15, 3.09, 3.2, 3.47, 3.23, 2.65, 3.95, 3.06, 3.35, 3.03, 3.35,  3.8, 3.36, 2.85, 4, 3.43, 3.12, 3.52, 3.78, 2.81, 3.27, 3.31,  3.69, 3.94, 4, 3.49, 3.14, na, 3.36, 2.78, 2.93, 3.63, 4, 3.89,  3.77, 3.76, 2.42, 3.37, 3.78, 3.49, 3.63, 4, 3.12, 2.7, 3.65,  3.49, 3.51, 4, 2.62, 3.02, 3.86, 3.36, 3.17, 3.51, 3.05, 3.88,  3.38, 3.75, 3.99, 4, 3.04, 2.63, 3.65, 3.89), x4 = c(3l, 3l,  1l, 4l, 4l, 2l, 1l, 2l, 3l, 2l, 4l, 1l, 1l, 2l, 1l, 3l, 4l, 3l,  2l, 1l, 3l, 2l, 4l, 4l, 2l, 1l, 1l, 4l, 2l, 1l, 4l, 3l, 3l, 3l,  1l, 2l, 1l, 3l, na, 3l, 2l, 2l, 2l, 3l, 2l, 3l, 2l, 4l, 4l, 3l,  3l, 4l, 4l, 2l, 3l, 3l, 3l, 3l, 2l, 4l, 2l, 4l, 3l, 3l, 3l, 2l,  4l, 1l, 1l, 1l, 3l, 4l, 4l, 2l, 4l, 3l, 3l, 3l, 1l, 1l, 4l, 2l,  2l, 4l, 3l, 2l, 2l, 2l, 1l, 2l, 2l, 1l, 2l, 2l, 2l, 2l, 4l, 2l,  2l, 3l, 3l, 3l, 4l, 3l, 2l, 2l, 1l, 2l, 3l, 2l, 4l, 4l, 3l, 1l,  3l, 3l, 2l, 2l, 1l, 3l, 2l, 2l, 3l, 3l, 3l, 4l, 1l, 4l, 2l, 4l,  2l, 2l, 2l, 3l, 2l, 3l, 4l, 3l, 2l, 1l, 2l, 4l, 4l, 3l, 4l, 3l,  2l, 3l, 1l, 1l, 1l, 2l, 2l, 3l, 3l, 4l, 2l, 1l, 2l, 3l, 2l, 2l,  2l, 2l, 2l, 1l, 4l, 3l, 3l, 3l, 3l, 3l, 3l, 2l, 4l, 2l, 2l, 3l,  3l, 3l, 3l, 4l, 2l, 2l, 4l, 2l, 3l, 2l, 2l, 2l, 2l, 3l, 3l, 4l,  2l, 2l, 3l, 4l, 3l, 4l, 3l, 2l, 1l, 4l, 1l, 3l, 1l, 1l, 3l, 2l,  4l, 2l, 2l, 3l, 2l, 3l, 1l, 1l, 1l, 2l, 3l, 3l, 1l, 3l, 2l, 3l,  2l, 4l, 2l, 2l, 4l, 3l, 2l, 3l, 1l, 2l, 2l, 2l, 4l, 3l, 2l, 1l,  3l, 2l, 1l, 3l, 2l, 2l, 3l, 3l, 4l, 4l, 2l, 4l, 4l, 3l, 2l, 3l,  2l, 2l, 2l, 2l, 3l, 3l, 3l, 3l, 4l, 3l, 2l, 3l, 2l, 3l, 2l, 1l,  2l, 2l, 3l, 1l, 4l, 2l, 2l, 3l, 4l, 4l, 2l, 4l, 1l, 4l, 4l, 4l,  2l, 2l, 2l, 1l, 1l, 3l, 1l, na, 2l, 3l, 2l, 3l, 2l, 2l, 3l, 4l,  1l, 2l, 2l, 3l, 3l, 2l, 3l, 4l, 4l, 2l, 2l, 4l, 4l, 1l, 3l, 2l,  4l, 2l, 3l, 1l, 2l, 2l, 2l, 4l, 3l, 3l, 1l, 3l, 3l, 1l, 3l, 4l,  1l, 3l, 4l, 3l, 4l, 2l, 3l, 3l, 2l, 2l, 2l, 2l, 2l, 3l, 3l, 2l,  2l, 1l, 2l, 1l, 3l, 3l, 1l, 1l, 2l, na, 1l, 3l, 3l, 3l, 1l, 2l,  2l, 3l, 1l, 1l, 2l, 4l, 2l, 2l, 3l, 2l, 2l, 2l, 2l, 1l, 2l, 1l,  2l, 2l, 2l, 2l, 2l, 2l, 3l, 2l, 3l, 2l, 3l, 2l, 2l, 3l), x5 = c(10l,  10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l,  10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l,  10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l,  10l, 10l, 10l, 10l, 10l, -7l, -7l, -7l, -7l, -7l, -7l, -7l, -7l,  -7l, -7l, -7l, -7l, -7l, -7l, -7l, -7l, -7l, -7l, -7l, -7l, -7l,  -7l, -7l, -6l, 7l, -7l, -7l, -7l, 7l, 7l, 7l, 7l, 7l, 2l, -2l,  -2l, -2l, -2l, 0l, 3l, 5l, 5l, 5l, 5l, 0l, 0l, 6l, 6l, 6l, 6l,  6l, 5l, 5l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l,  8l, 8l, 8l, 10l, 10l, 10l, 10l, 9l, 9l, 9l, 9l, 9l, 9l, 9l, 9l,  9l, 9l, 9l, 9l, 9l, 9l, 9l, 9l, 9l, 9l, 9l, 9l, 9l, 9l, 9l, 9l,  9l, 9l, 9l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l,  10l, 10l, 10l, 10l, 10l, 0l, 0l, 0l, 0l, 0l, 4l, 4l, 4l, 6l,  6l, 6l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 3l, 3l,  3l, 3l, 3l, 3l, 3l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l, 8l,  8l, 8l, 8l, 8l, 8l, 6l, 6l, 6l, 6l, 6l, 6l, 6l, 6l, 6l, 6l, 7l,  7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 6l, 6l, 7l, 7l,  7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l, 7l,  8l, 8l, 8l, -1l, 6l, 6l, 6l, 6l, 6l, 8l, 8l, 8l, 8l, 8l, 8l,  8l, 8l, 8l, 8l, 8l, 8l, 9l, 9l, 9l, 9l, 9l, 10l, 10l, 10l, 10l,  10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l, 10l,  10l, 10l, 10l, 10l, 10l, 10l, 1l, 1l, 1l, 1l, 1l, 1l, 1l, 1l,  1l, 1l, 1l, 1l, 1l, 1l, 1l, 1l, 1l, -3l, -3l, -3l, -3l, -3l,  -3l, -3l, -3l, -3l, -3l, -3l, -3l, -3l, -3l, -4l, -4l, -4l, -4l,  -4l, -4l, -4l, -4l, -4l, -4l, -4l, -4l, -4l, -4l, -4l, -5l, -5l,  -5l, -5l, -5l, -5l, -5l, -5l, -5l, -5l, -5l, -5l, -5l, -8l, -8l,  -8l, -8l, -8l, -8l, -8l, -8l, -8l, -8l, -8l, -8l, -8l, -8l, -8l,  -9l, -9l, -9l, -9l, -9l, -9l, -9l, -9l, -9l, -9l, -9l, -9l, -9l,  -9l, -9l, -10l, -10l, -10l, -10l, -10l, -10l, -10l, -10l, -10l,  -10l, -10l, -10l, -10l)), .names = c("y1", "y2", "x1", "x2",  "x3", "x4", "x5"), row.names = c(na, -400l), class = "data.frame") 

i'll proceed in parts.

first, create additional variable interaction term, because ocme() not appear behave when interaction term specified in formula.

data$x1_5 <- data$x1 * data$x5

then, fit model a, b, c, , d above (having changed x1*x5 in formulas x1_5).

require(mass)  # polr require(mfx)   # logitmfx require(erer)  # ocme  model <- glm(y1 ~ x1+x2+x3+x4+x5, data = data, family = "binomial") #logistic modelinteraction <- glm(y1 ~ x1+x2+x3+x4+x5+x1_5, data = data, family = "binomial") #logistic <- logitmfx(model, data=data, atmean=true) b <- logitmfx(modelinteraction, data=data, atmean=true)  data$y2 <- as.factor(data$y2) # make y2 ordinal 1  mod<- polr(y2 ~x1+x2+x3+x4+x5 ,data=data, hess = true) #ordered logistic modinteraction<- polr(y2~x1+x2+x3+x4+x5+x1_5 ,data=data, hess = true) #ordered logistic c <- ocme(mod) d <- ocme(modinteraction) 

now can plot. make dataframe, out, contains coordinates want plot (the marginal effects , confidence intervals), based on logitmfx , ocme outputs. use 1.96 approximation critical levels, may or may not appropriate depending on size of dataset.

est <- a$mfxest par(mfrow=c(1,1)) out <- data.frame(mean=est[,1],                   lower=est[,1]-1.96*est[,2],                   upper=est[,1]+1.96*est[,2]) plot(x=1:nrow(out), y=out$mean, ylim=c(min(out$lower), max(out$upper)),      xaxt="n", ylab="marginal effects", xlab="", las=2) abline(h=0, col="grey") arrows(x0=1:nrow(out), y0=out$lower, y1=out$upper, code=3, angle=90, length=.05) axis(1, at=1:nrow(out), labels=rownames(out)) 

marginal effects 1

assign est <- b$mfxest model b or est <- a$mfxest["x1",,drop=false] if want see estimates 1 variable. process similar ordered models, because marginal effects estimated each level of outcome variable, need plot level-specific marginal effects. estimated effects found in $out element of model fit, can put plotting code above loop, small modifications:

par(mfrow=c(1,3)) lvl <- 0 (est in c$out[1:3]) {     out <- data.frame(mean=est[,1],                       lower=est[,1]-1.96*est[,2],                       upper=est[,1]+1.96*est[,2])     plot(x=1:nrow(out), y=out$mean,          ylim=c(min(out$lower), max(out$upper)),         xlim=c(.5, nrow(out)+.5),         xaxt="n", ylab="", xlab="", las=2,         main=paste("marginal effects on level", lvl))     abline(h=0, col="grey")     arrows(x0=1:nrow(out), y0=out$lower, y1=out$upper, code=3, angle=90, length=.05)     axis(1, at=1:nrow(out), labels=rownames(out))     lvl <- lvl + 1 } 

marginal effects 2

figure 2 bit more complicated, particularly confidence intervals. intuitive way (in mind) estimate uncertainty intervals using bootstrap (see king, tomz, , wittenberg 2000 in ajps, p. 352). uncertainty comes resampling data replacement. can write function bootstrapping, resample data , re-fit model:

bootstrap <- function(data, model) {     newdata <- data[sample(rownames(data), nrow(data), replace=true),]     fit <- polr(formula(model), data=newdata, method="logistic") } 

we fit model many times, each time using newly resampled dataset:

sims <- 1000 coefs <- replicate(sims, bootstrap(data, mod)) 

now have 1000 sets of parameter estimates. we'll use predict function generate new probabilities outcome variable. set 2 dataframes, x2, x3, , x4 take on mean values in data, x5 ranges -10 10 in 0.1 increments, , x1 0 , 1 respectively.

data_means <- colmeans(data[,grep("x", names(data))], na.rm=true) data_x1_0 <- data.frame(x1=0,                         x2=data_means["x2"],                         x3=data_means["x3"],                         x4=data_means["x4"],                         x5=seq(-10, 10, .1)) data_x1_1 <- data_x1_0 data_x1_1$x1 <- 1 

then use predict predicted probabilities:

out_0 <- lapply(coefs, function(fit) predict(fit, data_x1_0, type="probs")) out_1 <- lapply(coefs, function(fit) predict(fit, data_x1_1, type="probs")) 

now can calculate marginal effects subtracting probabilities when x1=0 x1=1:

diffs <- lapply(1:sims, function(s) out_1[[s]] - out_0[[s]]) 

calculate means , 95% interval:

diffs <- array(unlist(diffs),      dim = c(nrow(diffs[[1]]), ncol(diffs[[1]]), length(diffs))) means <- apply(diffs, margin=c(1,2), mean) upper <- apply(diffs, margin=c(1,2), quantile, .975) lower <- apply(diffs, margin=c(1,2), quantile, .025) 

finally, can plot results:

for (i in 1:3) {     plot(x=seq(-10, 10, .1), y=means[,i], type="l",          ylim=c(min(lower[,i]), max(upper[,i])), xlab="", ylab="")     lines(x=seq(-10, 10, .1), y=upper[,i], lty=2)     lines(x=seq(-10, 10, .1), y=lower[,i], lty=2)    } 

marginal effects 3

very unexciting, expected given estimates insignificant. interaction model, modify data_x1_0 , data_x1_1 take account interaction term (i.e. make new variable along lines of data_x1_0$x1_5 <- data_x1_0$x1 * data_x1_0$x5 -- zeros, , likewise data_x1_1), , modify coefs <- replicate(sims, bootstrap(data, mod)) use modinteraction instead of mod.


Comments