全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
8679 4
2010-10-12
我定义了一个方程 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 : 非整合参数
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-10-12 21:44:18
补充一下,

######## check function for partial likelihood ##############

pl(rep(1,14),x,y,h0,u,t,g)

##############################################################

这一段是可以到处一个数值的,所以我感觉pl函数定义没错,
但是下面做最优化就出问题了,说  “错误于x0%*%beta 非整合参数”


我个人感觉是optim这个命令的问题,还请假大家!谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-10-13 08:39:40
matrix multiplication requires  conformable matrices
最简易的方法,自行先检测
x0 %*% beta
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-5-11 22:58:00
楼主解决了吗,我也有类似的问题···
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-5-24 21:17:27
戳戳 发表于 2012-5-11 22:58
楼主解决了吗,我也有类似的问题···
楼上你解决了么?我也遇到类似的问题了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群