2014-11-15 4 views
0

데이터 프레임의 두 열에 로지스틱 회귀를 수행하는 함수를 작성하고 있습니다. 오류를 해결할 수는 없지만 ... 10 배 교차 유효성 검사를 사용하려고합니다. 여기에 내가 사용하고 코드는 다음과 같습니다교차 유효성 검사 코드의 문제점 - r -

SAdata = read.table("http://statweb.stanford.edu/~tibs/ElemStatLearn/datasets/SAheart.data", 
        sep=",",head=T,row.names=1) 

log.fun = function(x,y) { 

    prediction = data.frame() 
    tset = data.frame() 
    dframe = cbind(x,y) 
    dframe = as.data.frame(dframe) 
    dframe$fold = sample(1:10, nrow(data), replace = TRUE) 
    list = 1:10 

    for (i in 1:10) { 

     train = subset(dframe, fold %in% list[-i]) 
     test = subset(dframe, fold %in% c(i)) 
     model = glm(x~y, data=train, family=binomial) 
     pred = as.data.frame(predict(model, test[,-1])) 
     prediction <- rbind(prediction, pred) 

    } 
} 

log.fun(SAdata$chd,SAdata$obesity) 

내가 오류는 "sample.int 오류 (길이 (x)를, 크기, 교체, PROB) : 무효 '크기'인수"입니다

어떤 아이디어?

+0

을 도움이되기를 바랍니다. 어디서나 정의 된'data'가 없습니다. 그게 무엇을 기대 했습니까? – MrFlick

+0

고맙습니다. 나는 코드 대신에 ... 데이터 대신 dframe을 사용해야한다. – Brockagh

답변

0

이 차선 for 루프의 사용 및 일부 좋은 모델은 여전히 ​​여기에 함수가 사용하려는 경우 패키지 '캐럿'

을 시도 개발을 시도 할 경우 특별히 ... 모델링 좀입니다 당신이 데이터를 '해당 개체가 존재하지 않았다 지정 되었기 때문에이 기능을'샘플 '에 약간의 문제가 있었다 사실 해결

SAdata = read.table("http://statweb.stanford.edu/~tibs/ElemStatLearn/datasets/SAheart.data",sep=",",head=T,row.names=1) 

log.fun=function(x,y){ 

    prediction = data.frame() 
    tset=data.frame() 
    dframe=cbind(x,y) 
    dframe=as.data.frame(dframe) 
    dframe$fold = sample(1:10, nrow(dframe), replace = TRUE) 
    list = 1:10 

    results <- list() 
    for (i in 1:10) {  

    results[[paste0('Fold',i)]]$train <- subset(dframe, fold %in% list[-i]) 
    results[[paste0('Fold',i)]]$test <- subset(dframe, fold %in% c(i)) 
    results[[paste0('Fold',i)]]$model <- glm(x~y, data=results[[i]]$train, family=binomial) 
    results[[paste0('Fold',i)]]$pred <- as.data.frame(predict(results[[i]]$model, results[[i]]$test[,-1])) 
    results[[paste0('Fold',i)]]$prediction <- rbind(prediction, results[[i]]$pred) 

} 
results} 


your_results<-log.fun(SAdata$chd,SAdata$obesity) 

head(your_results$Fold1$prediction) 

... 난의 각 부분에 어떤 이름을 dframe에 대한 교체 및 추가하여 결과.

, 나는`(= TRUE를 대체 1:10, nrow (데이터)) 문제가`dframe의 $에 배 = 샘플입니다 라인을 추측에는 요는 오류에서