R帮助中的五类有序Probit对数似然函数:调查数据研究

时间:2014-01-30 04:46:33

标签: r survey

我目前正在处理一些具有5类比例的调查数据。我以前使用ML方法进行4类比例,我正在尝试调整R中新调查的代码。

有效的原始代码是:

#Load Data
mathcomp <- read.csv("RRawComposite11.csv", header=TRUE, sep=",")
attach(mathcomp)

#Ordered Probit Liklihood
llk.oprobit4 <- function(param, x, y) {

 os <- rep(1, nrow(x))

  x <- cbind(os, x)  

  b <- param[1:ncol(x)]

  t2 <- param[(ncol(x)+1)]

  t3 <- param[(ncol(x)+2)]

  xb <- x%*%b

  p1 <- log(pnorm(-xb))

  if (t2<=0)  p2 <- -(abs(t2)*10000)

  else p2 <- log(pnorm(t2-xb)-pnorm(-xb))

  if (t3<=t2) p3 <- -((t2-t3)*10000)

  else p3 <- log(pnorm(t3-xb)-pnorm(t2-xb))   

  p4 <- log(1-pnorm(t3-xb))

  -sum(cbind(y==1,y==2,y==3,y==4) * cbind(p1,p2,p3,p4))
}

我尝试使用的修改后的代码是:

llk.oprobit5 <- function(param, x, y) {

 os <- rep(1, nrow(x))

  x <- cbind(os, x)  

  b <- param[1:ncol(x)]

  t2 <- param[(ncol(x)+1)]

  t3 <- param[(ncol(x)+2)]

  t4 <- param[(ncol(x)+3)]

 xb <- x%*%b

  p1 <- log(pnorm(-xb))

  if (t2<=0)  p2 <- -(abs(t2)*10000)

else p2 <- log(pnorm(t2-xb)-pnorm(-xb))

  if (t3<=t2) p3 <- -((t2-t3)*10000)

else p3 <- log(pnorm(t3-xb)-pnorm(t2-xb))  

  if (t4<=t3) p4 <- -((t3-t4)*10000)  

else p4 <- log(pnorm(t4-xb)-pnorm(t3-xb)) 

  p5 <- log(1-pnorm(t4-xb))

-sum(cbind(y==1,y==2,y==3,y==4,y==5) * cbind(p1,p2,p3,p4,p5))
}

我收到一条错误消息:

  

if(t4&lt; = t3)p4&lt; - - ((t3-t4)* 10000)的错误,否则p4&lt; -   log(pnorm(t4 - :缺少值,其中需要TRUE / FALSE

有谁知道如何修复似然函数来使其工作?任何帮助,将不胜感激。感谢。

0 个答案:

没有答案