我定义了一个方程 pl 详情见后, 然后赋值进去算可以的出来,但是用optim就出现 x0 %*% beta 非整合参数,一直想不通原因。求教各位达人,万分感谢!
######## Variables Definitions and Imputations ################
x <- cbind(EXP,EDUY,RWAGE,FEMALE,MARRIED,BLACK,OTHERRACE)
y <- cbind(FAILURE)
u <- cbind(TERM)
wt <- cbind(WT)
cp <- cbind(CP)
t <- 1:50
u <- t
g=5
############################################################
############# Define the kernel function #############
kernel <- function(x){0.75*(1-x^2)*(abs(x)<=1)}
######################################################
############# Bandwidth Selection ####################
nu <- length(u)
n <- dim(x)[1]/nu
h0=2.34*n^{-0.2} #bandwidth for Epanechnikov kernel
######################################################
######### Define local linear partial likelihood function ##############
pl <- function(beta.t,x,y,h,u,t,g){
ngrid <- length(t)
nu <- length(u) ## The length of term
n <- dim(x)[1]/nu
m <- n
beta.t=rep(1,14)
beta <- as.matrix(c(beta.t),ncol=1)
ll.t <- matrix(0,n,1)
for (k in 1:n){
Nku <- matrix(0,nu,1)
for (T in 1:nu){
if(cp[(k-1)+T,]==1&&y[(k-1)+T,]==1){ # counting process
y0 <- matrix(0,n,1)
for (i in 1:n){
Xiu <- x[(i-1)*nu+T,]
Xiu <- t(as.matrix(Xiu))
xtilta.i <- kronecker(Xiu,t(c(1,T-u[g])))
x0 <- xtilta.i
y0[i,] <- y[(i-1)*nu+T,]*exp(x0%*%beta)
}
Y0 <- sum(y0)
Ker <- kernel((T-t[g])/h)/h
Xku <- x[(k-1)*nu+T,]
Xku <- t(as.matrix(Xku))
xtilta.k <- kronecker(Xku,t(c(1,T-u[g])))
x1 <- xtilta.k
Bra <- x1%*%beta-log(Y0) ##contents inside of the bracket
ifelse(Y0>0, Nku[T,]<-Ker*Bra, Nku[t,]<-0) ##inner part of the integration
}else{Nku[T,]=0} # counting process
}
ll.t[k,] <- sum(Nku)
}
LL.t = sum(ll.t)
return(LL.t)
}
################################################################################################
######### check function for partial likelihood ##############
pl(rep(1,14),x,y,h0,u,t,g)
##############################################################
######### Optimization ##############
output <- optim(c(rep(1,14)),pl,method="BFGS",hessian=N,x=x,y=y,h=h0,u=u,t=t,g=g)
“报错”
错误于x0 %*% beta : 非整合参数