モンテカルロ研究を行っています。私は、従属変数を 0 に打ち切り、不均一分散を伴う線形モデルを持っています。打ち切り率の平均は 25.9 です。
エラーが発生します
Error in lm.fit(X.vlm, y = z.vlm, ...) : NA/NaN/Inf in 'x'
トービットモデルを推定しようとした後。
vglm(y[i,]~X[1,i,]+X[2,i,]+X[3,i,]+X[4,i,],family=tobit(Lower=0))
私のデータは標準分布からシミュレートされているため、問題は奇数変数に由来するものではありません。
実際のデータで同じ問題を抱えていた他の 2 つの質問を見つけました: lm() NA/NaN/Inf error、 lm() NA/NaN/Inf error しかし、満足のいく答えはないようでした。私のデータは簡単に再現できるので、問題の特定に役立つはずです
コードは次のとおりです。
library(VGAM)
set.seed(12345)
nobs=100
nsim=100
b=c(2,-2,-3,3)
g=c(1,0.2)
y=matrix(rep(0,nobs*nsim),ncol=nobs,nrow=nsim)
X=array(0,dim=c(4,nsim,nobs))
res=matrix(rep(0,nobs*nsim),ncol=nobs,nrow=nsim)
tobit=vector(mode="list",length=nsim)
for(i in 1:nsim){
# generate covariates :
X[1,i,]=rlnorm(n=nobs)
X[2,i,]=runif(n=nobs)<=.75
X[3,i,]=rnorm(mean = 3,n=nobs)
X[4,i,]=runif(n=nobs,min=0,max=10)
res[i,]=(g[1]+g[2]*X[4,i,])*rnorm(n=nobs)
# generate censored dependent variable
y[i,]=b[1]*X[1,i,]+b[2]*X[2,i,]+b[3]*X[3,i,]+b[4]*X[4,i,]+res[i,]
y[i,]=sapply(y[i,],FUN=function(x){max(0,x)}) #apply censoring
tobit[[i]]<-vglm(y[i,]~X[1,i,]+X[2,i,]+X[3,i,]+X[4,i,],
family = tobit(Lower=0))
}
トレースバックはこちら
traceback()
5: lm.fit(X.vlm, y = z.vlm, ...)
4: vlm.wfit(xmat = X.vlm.save, z, Hlist = NULL, U = U, matrix.out =FALSE,
is.vlmX = TRUE, qr = qr.arg, xij = NULL)
3: vglm.fitter(x = x, y = y, w = w, offset = offset, Xm2 = Xm2,
Ym2 = Ym2, etastart = etastart, mustart = mustart, coefstart =coefstart,
family = family, control = control, constraints = constraints,
criterion = control$criterion, extra = extra, qr.arg = qr.arg,
Terms = mt, function.name = function.name, ...)
2: vglm(y[1, ] ~ X[1, 1, ] + X[2, i, ] + X[3, i, ] + X[4, i, ],
family = tobit(Lower = 0))
1: traceback(vglm(y[1, ] ~ X[1, 1, ] + X[2, i, ] + X[3, i, ] + X[4,
i, ], family = tobit(Lower = 0)))
*** 編集 :
共変量を 1 つ削除し (X[3,i,] と X[4,i,] で試しました)、BondedDust が示唆するように下限打ち切りを -0.001 に設定すると、問題なく動作し、複製なしで複製数を 1000 にプッシュすることさえできます。大きな問題。
下限打ち切りを -0.001 に設定し、すべての共変量を維持するだけで、100 回の反復で 2 つのエラーが発生します。エラーが現在あることに注意する価値があります
Error in lm.fit(X.vlm, y = z.vlm, ...) : NA/NaN/Inf in 'y'
さらに、これらの警告が表示されます
In vglm.fitter(x = x, y = y, w = w, offset = offset, Xm2 = Xm2, ... :
iterations terminated because half-step sizes are very small