Hi,
I am new to R. My problem is with the ordered logistic model. Here is my
question:
Generate an order discrete variable using the variable
wrwage1 = wages in first full calendar quarter after benefit application
in the following way:
*
wage*1*Ordered *=
1 *if*0 *· wrwage*1 *< *1000
2 *if*1000 *· wrwage*1 *< *2000
3 *if*2000 *· wrwage*1 *< *3000
4 *if*3000 *· wrwage*1 *< *4000
5 *ifwrwage*1 *¸ *4000.
Estimate an order logit model using the new created discrete variable as the
dependent variable with the following control variables:
black = 1 if black
hispanic = 1 if hispanic
otherrace = 1 if black = 0 and hispanic = 0
female = 1 if female
wba = claimant's UI weekly bene¯t amount (*=week*)
age = age of claimant when claim is ¯led (years)
bp1000 = base period wages (thousand $)
inuidur1 = duration of unemployment (weeks)
I have written the program as:
> pennw <- read.table("G:/Econometrics II/pennsylvania.txt", header=TRUE)
> names(pennw)
[1] "group" "t0" "t1" "t2" "t3" "t4"
[7] "intercept" "black" "hispanic" "female" "wba" "bonus"
[13] "age" "recall" "pd" "bp1000" "numpay" "wrwage0"
[19] "wrwage1" "wrwage2" "wrwage3" "wrwage4" "inuidur1" "regui"
> wage <- pennw$wrwage1
> wage[wage>=0 & wage<1000] <- 1
> wage[wage>=1000 & wage<2000] <- 2
> wage[wage>=2000 & wage<3000] <- 3
> wage[wage>=3000 & wage<4000] <- 4
> wage[wage>=4000] <- 5
> intercept <- pennw$intercept
> blac <- pennw$black
> hisp <- pennw$hispanic
> fem <- pennw$female
> wba <- pennw$wba
> age <- pennw$age
> bpw <- pennw$bp1000
> dur <- pennw$inuidur1
> fw <- factor(wage)
> Ik <- model.matrix(~fw-1)
> I1 <- Ik[,1]
> I2 <- Ik[,2]
> I3 <- Ik[,3]
> I4 <- Ik[,4]
> I5 <- Ik[,5]
> yelmon <- function(theta,x){
+ mu1 <- theta[1]
+ mu2 <- theta[2]
+ mu3 <- theta[3]
+ mu4 <- theta[4]
+ mu5 <- theta[5]
+ beta <- theta[6]
+ logL <-
sum((Ik*log((exp(mu2-(x*beta))/(1+exp(mu2-(x*beta))))-(exp(mu1-(x*beta))/(1+exp(mu1-(x*beta))))))+(Ik*log((exp(mu3-(x*beta))/(1+exp(mu3-(x*beta))))-(exp(mu2-(x*beta))/(1+exp(mu2-(x*beta))))))+(Ik*log((exp(mu4-(x*beta))/(1+exp(mu4-(x*beta))))-(exp(mu3-(x*beta))/(1+exp(mu3-(x*beta))))))+(Ik*log((exp(mu5-(x*beta))/(1+exp(mu5-(x*beta))))-(exp(mu4-(x*beta))/(1+exp(mu4-(x*beta))))))+(Ik*log(1-(exp(mu5-(x*beta))/(1+exp(mu5-(x*beta)))))))
+ return(-logL)
+ }
> optim(yelmon, c(0,1), x=c(intercept, blac, hisp, fem, wba, age, bpw, dur))
I should be getting the values for all betas and mus here
) The program
should be done by maximum likelihood not by calling ready-made commands
Rubel
[[alternative HTML version deleted]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.