使用censReg函数时,我很难计算方差 - 协方差矩阵。我的示例数据集(在下面发布)没有任何删失数据,因此我可以将结果与简单线性回归(lm)函数进行比较。我将来需要将此应用于具有审查数据的数据集,因此我需要知道它是如何工作的原因。
问题:censReg似乎在处理日期时遇到问题(无论是作为类Date还是转换为类数字)。这是一个简单的数据集:
X = data.table(EVENT=as.Date(c(ISOdate(2011,1,1),ISOdate(2011,1,2),ISOdate(2011,1,3),ISOdate(2011,1,4))),
VAL = c(12.2,62.4,38.9,65.7),
INTERP = c(126.42,124.26,125.53,124.48))
当我通过censReg函数传递时,我得到以下结果:
CEN = censReg(formula=log(VAL) ~ INTERP + EVENT,data=X)
vcov(CEN)
(Intercept) INTERP EVENT logSigma
(Intercept) Inf Inf Inf Inf
INTERP Inf Inf Inf Inf
EVENT Inf Inf Inf Inf
logSigma Inf Inf Inf Inf
如果我将日期(在本例中为#34; EVENT")字段更改为较小的数字(seq(1,4,1)),则vcov函数将计算某些内容。
X = data.table(EVENT=seq(1,4,1),
VAL = c(12.2,62.4,38.9,65.7),
INTERP = c(126.42,124.26,125.53,124.48))
CEN = censReg(formula=log(VAL) ~ INTERP + EVENT,data=X)
vcov(CEN)
(Intercept) INTERP EVENT logSigma
(Intercept) 1.112009e+02 -8.802189e-01 -4.073329e-01 5.874470e-09
INTERP -8.802189e-01 6.968719e-03 3.170767e-03 -4.652036e-11
EVENT -4.073329e-01 3.170767e-03 4.176038e-03 -2.049346e-11
logSigma 5.874470e-09 -4.652036e-11 -2.049346e-11 1.250000e-01
我尝试将EVENT字段转换为数字值,但这仍然不起作用。
X = data.table(EVENT=as.Date(c(ISOdate(2011,1,1),ISOdate(2011,1,2),ISOdate(2011,1,3),ISOdate(2011,1,4))),
VAL = c(12.2,62.4,38.9,65.7),
INTERP = c(126.42,124.26,125.53,124.48))
X[,EVENT := as.numeric(EVENT)]
CEN = censReg(formula=log(VAL) ~ INTERP + EVENT,data=X)
vcov(CEN)
(Intercept) INTERP EVENT logSigma
(Intercept) Inf Inf Inf Inf
INTERP Inf Inf Inf Inf
EVENT Inf Inf Inf Inf
logSigma Inf Inf Inf Inf
有谁知道发生了什么事?