이전에 R에서 작성한 일부 glm 모델에 대해 10 배 교차 유효성 검사를 수행하려고합니다. boot
패키지의 cv.glm()
기능에 대해 약간 혼란 스럽습니다. 나는 많은 도움말 파일을 읽었습니다. 다음 공식을 제공 할 때 :glm() 모델에 대한 교차 검증
library(boot)
cv.glm(data, glmfit, K=10)
여기서 "데이터"인수는 전체 데이터 집합 또는 테스트 집합만을 의미합니까?
필자가 지금까지 본 예제는 "데이터"인수를 테스트 집합으로 제공하지만 실제로 같은 테스트 집합에서 10 배가되는 이유는 실제로 이해가되지 않았습니다. 그들은 모두 똑같은 결과를 줄 것입니다 (나는 추측합니다!).
불행히도 ?cv.glm
안개 방법을 설명한다 :
데이터 : 매트릭스 형상 또는 데이터를 포함하는 데이터 프레임. 행은 경우해야하며 열 중 하나가
내 다른 질문이 $delta[1]
결과에 대해 할 것 반응이다 변수에 해당합니다. 이것은 10 가지 시도에 대한 평균 예측 오차입니까? 각 폴드에 대해 오류를 표시하려면 어떻게해야합니까? 난 항상 다양한 패키지를 10 배 교차 검증 방법을 사용하는 방법에 대한 약간의주의입니다
##data partitioning
sub <- sample(nrow(data), floor(nrow(x) * 0.9))
training <- data[sub, ]
testing <- data[-sub, ]
##model building
model <- glm(formula = groupcol ~ var1 + var2 + var3,
family = "binomial", data = training)
##cross-validation
cv.glm(testing, model, K=10)
봐. glm'. CV의 전체 데이터, 모델 및 폴드를 입력해야합니다. –
reply @ RomanLuštrik에 감사드립니다. 훌륭해. 나는 아직도 두 가지 일에 대해 궁금해합니다. 이 기능은 교차 검증에서 제공된 모든 데이터를 사용합니까? 'cv.glm (data, glm, K = 10)에 1000 행의 데이터 프레임을 제공한다고 가정합니다. 데이터의 10 개 파티션을 만들고, 각각을 100 개 만들고 교차 검증을합니까? 미안 해요? cv.glm 그러나 나는 거기에서 그것을 발견하지 않았다. – Error404
2 배 CV를 수행하는 경우이 함수는 데이터의 50 %를 차지하고 모델에 적합합니다. 모델이 데이터를 얼마나 잘 설명하는지 보려면 데이터의 나머지 50 %를 사용합니다. 또는 leave-one-out CV에서 하나의 데이터 "지점"을 제외한 모든 모델에 모델을 적용하고 "지점"을 얼마나 잘 선택했는지 확인할 수 있습니다. N 번 반복하면 결과를 얻을 수 있습니다. –