24小时热门版块排行榜    

查看: 1919  |  回复: 4
本帖产生 1 个 计算强帖 ,点击这里进行查看

songbin7957

木虫 (小有名气)

[交流] 【求助】逐一法交叉验证相关系数 已有1人参与

各位大侠,我再回归得到参数方程之后,为验证方程的稳定性,需要求一下交叉验证相关系数,该怎么求,请帮帮忙,先谢谢了
回复此楼
互相学习,共同进步
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

djl2008d

木虫 (文坛精英)


luoqiquan(金币+1):thank you 2010-11-05 20:30:15
用一个软件:Tsar可以计算出来,我也是一直没找到这个软件,问了好多人都没问到,后来就不做了
一定要坚持,坚持就是胜利
2楼2010-11-05 10:26:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

★ ★ ★ ★ ★
luoqiquan(金币+5, 计算强帖+1):thank you very much 2010-11-05 20:30:43
贴一个我用 R 语言写的 LOO-LGO CV 的程序,应该能够看得懂,至于其它语言如何实现,我就无能为力了……
CODE:
lmcv <- function(obj, ng = NULL, random = FALSE) {
#
# The Leave-One-Out (LOO) and/or Leave-Group-Out (LGO) Cross-Validation in R for (Multiple) Linear Regression.
#
# Input:
#   obj: the model of MLR
#   ng: number of group, if missing, do LOO
#   random: logical, if TRUE, do random CV
#
# Output:
#   q.squared: cross-validation relation coefficient.
#   SDEP: Standard Deviation of Error of Predictions
#   newsq: variance in Y explained only for LOO CV
#
# Usage:
#   loo <- cv.lm(obj)
#   lgo <- cv.lm(obj, ng = 5)
#
    data <- data.frame(y = obj$model[,1], x = obj$model[, -1])
    col.names <- colnames(data)
    N <- nrow(data)
    if (random == TRUE) data <- data[sample(1:N),]
    if (missing(ng)) ng <- N # LOO CV
    ytest <- numeric(N)
    ypred <- numeric(N)
    newrsq <- numeric(ng)
    g <- N %/% ng
    for (i in 1:ng) {
        if (g == 1) {
            index <- i
        }
        else {
            index <- c(i, ng * seq(1, (g - 1)) + i)
            if (N %% ng != 0 & i <= N %% ng) index <- c(index, (g * ng + i))
        }
        ytest[index] <- data[index,1]
        newtrain <- data[-index, ]
        xtest <- data.frame(x = data[index, -1])
        colnames(xtest) <- col.names[-1]
        newfm <- lm(y ~., data = newtrain)
        newrsq[i] <- summary(newfm)$r.squared
        ypred[index] <- predict(newfm, xtest)
    }
    q.squared <- 1 - sum((ytest - ypred)^2) / sum((ytest - mean(ytest))^2)
    SDEP <- sqrt(sum((ytest - ypred)^2) / N)
    return(list(q.squared = q.squared, SDEP = SDEP, newrsq = newrsq))
}

3楼2010-11-05 20:09:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

这个贴子很久以前我好象回复过,不是在这里……
4楼2010-11-05 20:11:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

vltava

木虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖
引用回帖:
3楼: Originally posted by snoopyzhao at 2010-11-05 20:09:14:
贴一个我用 R 语言写的 LOO-LGO CV 的程序,应该能够看得懂,至于其它语言如何实现,我就无能为力了……

[code]
lmcv <- function(obj, ng = NULL, random = FALSE) {
#
# The Leave-One-Out (LOO) and/ ...

楼主回的这个帖是说算RMSEC和RMSECV的吗?
人生本来就有很多事是徒劳无功的
5楼2011-11-07 19:29:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 songbin7957 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见