2014-03-29 3 views
0

오늘, 다음 코드를 사용하여 비모수 적 밀도 추정과 함께 데이터의 정규성을 확인합니다. 그러나, 나는 오류가있어 :width.SJ()를 실행하는 중에 오류가 발생했습니다.

width.SJ(bc.mdat[, 2]) : 
    no solution in the specified range of bandwidths 

그래서, 나는이 오류가 일어날 이유를 모른다. 왜냐하면 내가 다른 데이터로 완벽하게 처리하기 때문이다. 몇 가지 간단한 디버깅을 적용 당신의 도움이

library(car) 
library(MASS) 
library(graphics) 
Q=read.table(text=' 
12.5 13.7 
14.5 16.5 
8.0 17.4 
9.0 11.0 
19.5 23.6 
8.0 13.2 
9.0 32.1 
7.0 12.3 
7.0 11.8 
9.0 24.4 
6.5 18.2 
10.5 22.0 
10.0 32.5 
4.5 18.7 
7.0 15.8 
8.5 15.6 
6.5 12.0 
8.0 12.8 
3.5 26.1 
8.0 14.5 
17.5 42.3 
10.5 17.5 
12.0 21.8 
6.0 10.4 
13.0 25.6 
') 
bc=powerTransform(as.matrix(Q)~1) 
summary(bc) 
bc.mdat<-bcPower(Q,bc$lambda) 
f2=kde2d(bc.mdat[,1],bc.mdat[,2],h=c(width.SJ(bc.mdat[,1]),width.SJ(bc.mdat[,2]))) 
persp(f2,phi=30,theta=20,d=5) 

답변

1

주셔서 감사

> width.SJ(bc.mdat[,2]) 
Error in width.SJ(bc.mdat[, 2]) : 
    no solution in the specified range of bandwidths 

문제는, 문제가 즉 두 번째 열, 함께 보여줍니다 다음과 같습니다 mc.mdat[,2]에 대한 :

[1] 1.267853 1.300541 1.309183 1.223900 1.353462 1.260837 1.390182 1.247041 1.238636 1.357801 1.316270 1.344016 1.391514 1.320446 1.293266 1.291090 1.242067 1.254902 1.366288 1.278246 1.417488 1.310098 
[23] 1.342756 1.211639 1.363888 

width.SJ 함수에서 계산 된 값 (width.SJ을 입력하고 Enter 키를 누르면 함수 본문이 표시됨), 즉

> fSD(lower, cnt, alph2, c1, n, d) 
[1] 0.003946731 
> fSD(upper, cnt, alph2, c1, n, d) 
[1] 0.002883121 

곱셈 이상의 0 수, 그리고 아마도이 특이점 조건의 일종이다. 여기

if (fSD(lower, cnt, alph2, c1, n, d) * fSD(upper, cnt, alph2, 
    c1, n, d) > 0) 
    stop("no solution in the specified range of bandwidths") 

, fSDfunction (h, x, alph2, c1, n, d) (c1/SDh(x, alph2 * h^(5/7), n, d))^(1/5) - h는 주어진 기능이다.

수학에 깊이 파고 들지 않으면 무슨 뜻인지 잘 모르겠지만 잘하면이 간단한 디버그 세션으로 시작할 수 있습니다. 이 솔루션은 데이터 세트를 수정하거나 그것이 왜 단 하나인지 이해하는 데서 의심의 여지가 없습니다. 이미 combn을 사용하여 최대 4 개의 데이터 포인트를 제거하려고했지만 동일한 문제가있어 근본적인 무결성 문제입니다.

관련 문제