2016-10-05 10 views
0

일련의 부트 스트랩 된 복제본에 GBM 알고리즘을 적용해야하는 경우 분석을 수행해야합니다. 또 하나의 주름은 각 복제물이 양자화 된 정규화 된 결과를 가져야한다는 것입니다. 내가 달성하고자하는 것은 입니다. 으로 설정된 메인 데이터로 시작하십시오. 200 개의 리샘플링을 포함하는 3 차원 배열을 만듭니다. 3. 각 리샘플링 내에서 결과 변수를 정규화합니다. 4. GBM을 모두 실행하십시오 샘플서브 샘플링 및 양자화 정규화 R

지금 리샘플링 단계에 도달 할 수 없습니다.

#generating some data  
main<-matrix(
    replicate(52,rnorm(1132)), 
    ncol=52, 
    nrow=1132, 
    dimnames = list(
    1:1132, 
    1:52) 
) 

colnames(main)[1]<-"outcome" 

#trying to create 200 resampled replicates 
resampled = array (
    rep(NA), 
    dim= c(1000, ncol(main), 200), 
    dimnames= list(
     1:1000, 
     colnames(main), 
     1:200 
    ) 
    ) 


    for (i in 1:dim(resampled)[1]) { 
    for (j in 1:dim(resampled)[2]) { 
     for (k in 1:dim(resampled)[3]) { 
     resampled[i,j,k]= main[sample(nrow(main), size=1000, replace=TRUE),] 

    } 
}} 

루프를 올바르게 지정하지 않았기 때문에 확신 할 수 있습니다.하지만 수 주 동안 검색을 한 후에는 도움이 될만한 예제 코드를 찾을 수 없습니다.

I은 ​​에러 메시지 얻을

: 리샘플링 [I, J, K = 주 [샘플 오류 (nrow) (주 크기 = 1000, = TRUE 교환) : 교체 항목 수가 없다 대체 길이의 배수

+2

작은 데이터 세트와 예상되는 결과로 최소한의 재현 가능한 질문을 할 수 있습니까? – shayaa

+0

최소한의 재현 가능한 예를 만들면 기대되는 결과와 실제 결과를 얻을 수 있습니다. – pdb

+0

나는 그것에있다. 이것은 나에게 아주 새로운 것입니다. 오늘 밤 재현 가능한 예제를 얻는 방법을 알아 내면 나중에 업데이트 될 것입니다. – BobaAddict

답변

0

루프의 문제는 resampled[i,j,k]이 하나의 단일 요소를 수신하지만 main[sample(nrow(main), size=1000, replace=TRUE),]은 1000x52 매트릭스를 반환한다는 점입니다.

나는 당신을 기반으로 좀 더 작은 예제를 만들었습니다. 다음 코드를 사용하여 결과로 얻을 수있는 결과인지 확인하십시오.

ncol = 3 
nrow = 10 
sample.size = 5 
sample.rep = 4 

#generating some data  
main<-matrix(
    replicate(ncol,rnorm(nrow)), 
    ncol=ncol, 
    nrow=nrow, 
    dimnames = list(
    1:nrow, 
    1:ncol) 
) 

colnames(main)[1]<-"outcome" 

#trying to create 'sample.rep' resampled replicates 
resampled = array (
    rep(as.numeric(NA)), 
    dim= c(sample.size, ncol(main), sample.rep), 
    dimnames= list(
    1:sample.size, 
    colnames(main), 
    1:sample.rep 
) 
) 

for (k in 1:dim(resampled)[3]) { 
    resampled[,,k]= main[sample(nrow(main), size=sample.size, replace=TRUE),] 
} 
print(resampled) 
+0

이제는 올바른 수의 첨자가 없다는 메시지를 전하 고 있지만, 배열도 어리석은 큰 개체로 변했습니다. 거대한 객체를 어레이로 분할하는 방법을 찾기 위해 약간 노력했습니다. 나는 또 다른 접근법을 시도 할 것인데, 왜냐하면 배열을 생성 한 이후에 더 많은 단계가 있기 때문이다. 당신의 도움을 주셔서 감사합니다! – BobaAddict