2014-12-19 9 views
11

TL에서 호환되지 않는 치수 오류 vglm 기능, DRR : VGAM


나는 R의 VGAM 패키지와 함께 토비트 회귀 분석을 실행하고 - 여기가 지속적으로 나에게 오류를주고있다 장난감 세트입니다 나는 진단 할 수 없었다 :

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 

시도가 진단

내가 lm.wfit의 소스 코드를 볼 수 있으며 오류의 원인 찾을 수있다

> 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) 

: 다음 vglm의 소스 코드에 다음과 내가 찾은

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...> 
    } 

을 : 역 추적으로

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, 
     ...) 

여기서 기본값은 vglm.fit입니다.

제외 기준 use.i11이 생성 된 위치, 수행중인 작업 및 가중치, 회귀 변수 및 회귀 식 간의 충돌하는 차원이 나타나는 위치를 아직 찾을 수 없었습니다.

나는 관찰이 10 명 이하일 성공적인 실행의 장소 결과에 minSmaxS 반올림하지만 maxS이 증가하기 때문에 1 차 관찰이 더 이상 권리 검열하지 않으며 minS 그래서 2, 4 증가되도록입니다 5 번째 관측은 더 이상 검열되지 않았습니다. 둘 다 최우도 함수에서 관찰의 치료법을 변경하므로 잘못된 결과로 회귀를 오염시킬 수 있다고 생각합니다.

누군가 이러한 오류 유형이 발생하는 이유를 진단하는 데 도움을 줄 수 있습니까?

+0

'minS = 0.75;와 같이 값을 반올림 했습니까? maxS = 1.83? –

답변

5

패키지 개발자가 실제로 버그였으며 다음번 반복에서 CRAN으로 업그레이드 될 예정인 사전 패키지 here에서 수정되었음을 알려주었습니다. 풀어 놓았다.