24小时热门版块排行榜    

查看: 774  |  回复: 7
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

loappleve

金虫 (小有名气)

[交流] 求助 如何实现leava one out

用多元线性回归建模以后 如果做leave one out 检验
有什么软件可以实现 自己写的话 需要输出什么结果

[ Last edited by csfn on 2008-12-29 at 20:16 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

★ ★ ★ ★ ★
zzgyb(金币+5,VIP+0):谢谢您的参与,欢迎您常来计算模拟版。
两年前写的,仅供参考。
CODE:
cv.lm <- function(obj, loo = TRUE) {
#
# 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
#   loo: logic, if FALSE, do LGO CV
#
# Note:
#   the following two varible should be assigned according to the number of observation in the data set.
#   m: the number of loop when doing validation.
#   n: the number of removed observations.
#
# 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, loo = FALSE)
#
# Copyright (C) 2005
#
        data <- data.frame(y = obj$model[,1], x = obj$model[, -1])
        N <- nrow(data)
        if (loo == TRUE) {
                ytest <- data[, 1]
                newrsq <- numeric(N)
                ypred <- numeric(N)
                for(i in 1:N){
                        newtrain <- data[-i, ]
                        xtest <- data[i, -1]
                        newfm <- lm(y ~., data = newtrain)
                        newrsq[i] <- summary(newfm)$r.squared
                        ypred[i] <- predict(newfm, xtest)
                }
        }
        else {
                m <- 40
                n <- round(N / 10)
                newrsq <- numeric(m)
                ytest <- numeric(m*n)
                ypred <- numeric(m*n)
                for (i in 1:m) {
                        j <- sample(N, n, replace = FALSE)
                        newtrain <- data[-j, ]
                        xtest <- data[j, -1]
                        ytest[((i-1) * n + 1):(i * n)] <- data[j, 1]
                        newfm <- lm(y ~., data = newtrain)
                        ypred[((i-1) * n + 1):(i * n)] <- predict(newfm, xtest)
                }
        }
        q.squared <- 1 - sum((ytest - ypred)^2) / sum((ytest - mean(ytest))^2)
        if (loo == TRUE) {
                SDEP <- sqrt(sum((ytest - ypred)^2) / N)
        }
        else {
                SDEP <- sqrt(sum((ytest - ypred)^2) / (m * n))
        }
        if (loo == TRUE) {
                return(list(q.squared = q.squared, SDEP = SDEP, newrsq = newrsq))
        }
        else {
                return(list(q.squared = q.squared, SDEP = SDEP))
        }
}

4楼2008-01-12 10:09:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

snoopyzhao

至尊木虫 (职业作家)


spur(金币+1,VIP+0): 感谢参与!欢迎常来!
我以前在这里贴过一个用 R 语言写的 leave-one-out 的小程序,可以找找看,呵呵
2楼2008-01-11 14:19:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

2006Jerry

金虫 (正式写手)

没有搜到啊!
能否请snoopyzhao发一份啊!
谢谢!
gzg_123@tom.com
3楼2008-01-11 14:43:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

loappleve

金虫 (小有名气)

clc
clear
[filename, pathname]= uigetfile('*.xls');
file=[pathname filename];
a=xlsread(file);
[m,n]=size(a);
b=zeros(m-1,n);
c=zeros(m,n-1);
d=zeros(m,1);
k=1;
for i=1:m
    k=1;
    for j=1:m
        if j~=i
            b(k,=a(j,;
            k=k+1;
        end
    end
    c(i,=(b(:,1:n-1)\b(:,n))';
    d(i)=a(i,1:n-1)*(c(i,');
end
5楼2008-01-12 12:12:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[公派出国] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 wsYGJnURYvm6 2026-08-31 3/150 2026-09-01 01:52 by o3EMxHUAQDtS
[硕博家园] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 wsYGJnURYvm6 2026-08-31 3/150 2026-09-01 01:40 by o3EMxHUAQDtS
[基金申请] 国社科又开始会评了,不知道这次命运如何 +7 雨打竹帘 2026-08-30 11/550 2026-08-31 23:16 by hittle2008
[找工作] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 EZ67DG6CvcKL 2026-08-31 3/150 2026-08-31 22:23 by o3EMxHUAQDtS
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +6 yuleib84 2026-08-26 7/350 2026-08-31 19:46 by 鱼翔浅底1
[文学芳草园] 梦想 +5 myrtle 2026-08-26 5/250 2026-08-31 14:40 by hahaboy
[基金申请] 中青基了要发朋友圈吗? +7 349506619 2026-08-28 7/350 2026-08-31 13:39 by 冼亮淀粉酶
[基金申请] 有没有仍没收到信息的 +7 德尚中行 2026-08-27 8/400 2026-08-30 20:52 by purplejack
[考博] 找导师 +6 yuanjiabao 2026-08-29 7/350 2026-08-30 14:40 by 生科新手
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +6 gdd2018 2026-08-28 11/550 2026-08-30 08:58 by 超级无敌华子
[基金申请] 国自然面上复盘~欢迎讨论 (金币+15) +15 晴天加油 2026-08-26 16/800 2026-08-29 18:28 by symmetry
[基金申请] 国自然评审意见 +13 wangmingqi 2026-08-28 19/950 2026-08-29 10:22 by Poppy1104
[基金申请] 为什么资助数各大高校都创新高,自己申请怎么就这么难 +12 Kittylucky 2026-08-27 13/650 2026-08-29 00:04 by superceng
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 9/450 2026-08-28 11:06 by maolC
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 出来了 +9 trojank 2026-08-26 9/450 2026-08-26 14:25 by 宝贝虫子
[基金申请] 为什么国自然不能直接公布 +4 bjdxyxy 2026-08-26 4/200 2026-08-26 13:12 by qingmu1201
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 项目信息和经费信息在系统里都可以看到了 +6 wittyboy 2026-08-26 14/700 2026-08-26 10:55 by wittyboy
信息提示
请填处理意见