TL; DRR: Inkompatible Abmessungen Fehler vglm Funktion in VGAM
I Tobit-Regressionen mit dem VGAM Paket in R leite - Hier ist ein Spielzeug-Datensatz, die konsequent mir einen Fehler geben, dass ich habe nicht in der Lage gewesen zu diagnostizieren:
library(data.table)
library(VGAM)
> sessionInfo()$otherPkgs
$VGAM
Package: VGAM
Version: 0.9-7
Date: 2015-03-06
... <ommitted> ...
reg_data <- structure(list(S = c(1.83271488441825, 0.75411550370994, 0.904938604451928,
0.75411550370994, 0.75411550370994), H = c(0.6429, 0.7788,
0.6292, 0.8892, 0.2035), W= c(1.52497, 1.1391, 1.59722,
1.8406, 1.01865)), .Names = c("S", "H", "W"), class = c("data.table",
"data.frame"), row.names = c(NA, -5L))
minS <- 0.75411550370994
maxS <- 1.83271488441825
m <- vglm(S ~ H, tobit(Upper = maxS, Lower = minS), weights = W, data = reg_data)
Error in lm.wfit(x = cbind(x[!use.i11, ]), y = y[!use.i11, ii], w = w[!use.i11, :
incompatible dimensions
Versuche
01.235.164 zu diagnostizierenMit Traceback:
> traceback()
6: stop("incompatible dimensions")
5: lm.wfit(x = cbind(x[!use.i11, ]), y = y[!use.i11, ii], w = w[!use.i11,
ii])
4: eval(expr, envir, enclos)
3: eval(slot(family, "initialize"))
2: 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, ...)
1: vglm(y ~ x, tobit(Upper = maxy, Lower = miny), weights = w, data = X)
ich den Quellcode für lm.wfit
gesehen habe und die Quelle des Fehlers finden:
function (x, y, w, offset = NULL, method = "qr", tol = 1e-07,
singular.ok = TRUE, ...)
{
<ommitted...>
if (NROW(y) != n | length(w) != n)
stop("incompatible dimensions")
<ommitted...>
}
ich folgende in dem Quellcode für vglm
gefunden habe:
vglm.fitter <- get(method)
fit <- 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,
...)
Die Methode ist standardmäßig auf vglm.fit
eingestellt.
Ich habe immer noch nicht in der Lage gewesen zu finden, wo die Ausschlusskriterien use.i11
erstellt wird, was es tut und warum kommt es zu widersprüchlichen Dimensionen zwischen den Gewicht, Regressor und regressand.
Ich habe beobachtet, dass Rundung des minS
und maxS
bis zehn oder weniger Orte führt zu einem erfolgreichen Lauf, aber das liegt daran, dass maxS
erhöht wird, um die erste Beobachtung nicht mehr rechtszensierte und minS
erhöht wird, um die 2., 4. und 5. Beobachtungen werden nicht mehr zensiert. Beide ändern die Behandlung der Beobachtung in der Maximum-Likelihood-Funktion, so dass ich vermute, dass ich die Regression mit falschen Ergebnissen kontaminieren würde.
Kann jemand freundlicherweise helfen zu diagnostizieren, warum diese Art von Fehler auftritt?
hast du die Werte wie folgt abgerundet: 'minS = 0,75; maxS = 1.83'? –