[R] hypothetical prediction after polr
    Xu Jun 
    junxu.r at gmail.com
       
    Wed Oct 19 03:49:09 CEST 2011
    
    
  
Dear R-Help listers,
I am trying to estimate an proportional odds logistic regression model
(or ordered logistic regression) and then make predictions by
supplying a hypothetical x vector. However, somehow this does not
work. I guess I must have missed something here. I first used the polr
function in the MASS package, and I create a data frame and supply it
to the predict function (see below):
###############################################################
myologit <- polr(factor(warm) ~ yr89 + male + white + age + ed + prst,
              data=ordwarm2, method=c("logistic"))
yr89  <- c(1)
male  <- c(1)
white <- c(1)
  age <- c(mean(ordwarm2$age))
  ed  <- c(mean(ordwarm2$ed))
prst  <- c(mean(ordwarm2$prst))
prdata <- data.frame(yr89, male, white, age, ed, prst)
prdata$rankR <-predict(myologit,newdata=prdata,type="probs")
################################################################
I do not have any problem estimating the model, but when it comes to
the last time (predict), I got the following message:
Error in `$<-.data.frame`(`*tmp*`, "rankR", value = c(0.124294963178868,  :
 replacement has 4 rows, data has 1
Can anyone help me out with this error here? Thanks a lot!
Jun Xu, Phd
Assistant Professor
Department of Sociology
Ball State University
P.S.: below is the detailed output from R
################################################################
Call:
polr(formula = factor(warm) ~ yr89 + male + white + age + ed +
   prst, data = ordwarm2, method = c("logistic"))
Coefficients:
         Value Std. Error t value
yr89   0.523912   0.079899   6.557
male  -0.733309   0.078483  -9.344
white -0.391140   0.118381  -3.304
age   -0.021666   0.002469  -8.777
ed     0.067176   0.015975   4.205
prst   0.006072   0.003293   1.844
Intercepts:
   Value    Std. Error t value
1|2  -2.4654   0.2389   -10.3188
2|3  -0.6309   0.2333    -2.7042
3|4   1.2618   0.2340     5.3919
Residual Deviance: 5689.825
AIC: 5707.825
> # predictions for hypothetical data points
> # white male in year 89
> yr89  <- c(1)
> male  <- c(1)
> white <- c(1)
>   age <- c(mean(ordwarm2$age))
>   ed  <- c(mean(ordwarm2$ed))
> prst  <- c(mean(ordwarm2$prst))
> prdata <- data.frame(yr89, male, white, age, ed, prst)
>
> prdata$rankR <-predict(myologit,newdata=prdata,type="probs")
Error in `$<-.data.frame`(`*tmp*`, "rankR", value = c(0.124294963178868,  :
 replacement has 4 rows, data has 1
>
> prdata
 yr89 male white      age       ed     prst
1    1    1     1 44.93546 12.21805 39.58526
###############################################################3
    
    
More information about the R-help
mailing list