Нужна помощь в исправлении кода r для перекрестной проверки - PullRequest
0 голосов
/ 26 сентября 2018

Мне нужна помощь в исправлении этого кода.Я пытаюсь провести перекрестную проверку.Сгенерированная ошибка:

'newdata' имеет 19 строк, но найденные переменные имеют 77 строк

Судя по предыдущим вопросам, проблема, похоже, заключается в том, как я ссылаюсь на свойtrain.exprs и train.d2r для строки кода pval.В случае train.d2r(is vector of num[1:77]) while train.exprs( is matrix num [1:12625, 1:77]).

set.seed(1234)
# calculate days-to-remission:
ALL.pdat <- pData(ALL)
date.cr.chr <- as.character(ALL.pdat$date.cr)
diag.chr <- as.character(ALL.pdat$diagnosis)
date.cr.t <- strptime(date.cr.chr,"%m/%d/%Y")
diag.t <- strptime(diag.chr,"%m/%d/%Y")
ALL.pdat$D2R <- as.numeric(date.cr.t - diag.t)
# prepare the data structures:
ALL.exprs <- exprs(ALL)[,!is.na(ALL.pdat$D2R)]
ALL.pdat <- ALL.pdat[!is.na(ALL.pdat$D2R),]
n.xval <- 5
s2.xval <- numeric()
xval.grps <- sample(1:dim(ALL.pdat)[1]%%n.xval+1)
# run over each cross-validation:
for ( i.xval in 1:n.xval ) {
min.pval <- 1.0
min.id <- NA
train.exprs <- ALL.exprs[,xval.grps!=i.xval]
train.d2r <- ALL.pdat[xval.grps!=i.xval,"D2R"]
# evaluate each gene in the training dataset to find the one
# most associated with the outcome:
for( i in 1:dim(train.exprs)[1]) {
###for( i in 1:100 ) {
p.val <- anova(lm(train.d2r~train.exprs[i,],))[1,"Pr(>F)"]
if ( p.val < min.pval ) {
min.pval <- p.val
min.id <- i
}
}
# print the gene found:
cat(rownames(train.exprs)[min.id],min.pval,fill=T)
# refit the model for best gene found on training dataset:
best.lm.xval <- lm(train.d2r~train.exprs[min.id,])
# calculate predictions on test dataset:
test.exprs <- ALL.exprs[,xval.grps==i.xval]
test.d2r <- ALL.pdat[xval.grps==i.xval,"D2R"]
test.pred <- predict(
best.lm.xval,data.frame(t(test.exprs),test.d2r)
)
# accumulate squared errors of prediction:
s2.xval <- c(s2.xval,(test.pred-test.d2r)^2)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...