2017-01-19 3 views
0

최상의 하위 집합 선택을 위해 Leaps 패키지의 10 배 교차 유효성 검사 및 regsubsets 함수를 사용하고 있습니다. 내 모델에 맞는 RSS를 계산하고 싶습니다. 이 10 배 교차 유효성 검사에 패키지를 사용하고 싶지 않습니다. 우리는 rgsubsets의 객체에 대해 predict 함수를 사용할 수 없다고 가정합니다. 그래서 다음 코드를 사용하여 내 모델의 rss를 계산하려고 시도했지만 오류가 있습니다.패키지를 사용하지 않고 k 배 교차 유효성 검사를 사용하여 모델의 RSS 얻기

 mydata <- Hitters[sample(nrow(Hitters)),] 

     folds <- cut(seq(1, nrow(mydata)), breaks = 10, labels = F) 

     for (i in 1:10) { 

      testindex <- which(folds == i) 
      testdata <- mydata[testindex,] 
      traindata <- mydata[ - testindex,] 

    #there may be an error after this 


      best.fits11 <- regsubsets(Salary ~ ., data = traindata, nvmax=19) 
      test[i]<-coef(best.fits11, id = 19) * testdata 
      train[i]<-traindata 
      } 
    for (i in 1:10) { 
    err.rss <-mean((test[i]-train[i])^2) 
    } 

답변

0

이 오류가 발생하는 동안 작성한 것과 똑같은 코드를 표시했다고 간주하십시오.

코드에 약간의 버그가 있습니다.

  1. 무엇입니까 test[i] 무엇입니까? test[i]의 크기는
  2. 입니다.
  3. train[i]과 동일합니다.
  4. traintest은 모두 유사한 행렬입니다. 나는 당신의 신조에 따라 크게 의심합니다.
  5. 이제 RSS 계산에 대해 알아보십시오. 계산은 testtrain을 같은 길이의 벡터로 나타내는 경우에만 작동합니다. 따라서 정의에는 아무런 문제가 없습니다.

traintest 데이터의 치수에 대해 자세히 알려주십시오.

+0

안녕하세요. 도움을 제공해 주셔서 감사합니다. 나는 ISLR 패키지에서 Hitters를 사용하고있다. 데이터 세트에는 20 개의 열이 있으며 그 중 19 개가 예측 변수이고 급여는 응답입니다. 알고리즘은 10 번의 반복에 대해 실행되어야하며, 각 반복 열차 [i]와 test [i]에서 RSS를 계산할 수 있도록 계산되어야합니다. 각 반복마다 traindata의 견적을 사용하여 테스트 데이터를 채점하려고하지만 코드 테스트 [i] <- coef (best.fits11, id = 19) * testdata가 잘못되었습니다. – abhi