楼主: 风之将尽
6108 4

[问答] R语言实战回归部分交叉验证问题 [推广有奖]

  • 4关注
  • 0粉丝

已卖:2份资源

本科生

82%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0.0001
学术水平
0 点
热心指数
3 点
信用等级
0 点
经验
2058 点
帖子
96
精华
0
在线时间
57 小时
注册时间
2015-5-14
最后登录
2022-1-23

楼主
风之将尽 学生认证  发表于 2017-4-24 23:15:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
学习R语言实战,在回归的交叉验证部分遇到了问题。
shrinkage <- function(fit, k=10){
require(bootstrap)
theta.fit <- function(x,y){lsfit(x,y)}
theta.predict <- function(fit,x){cbind(1,x)%*%fit$coef}
x <- fit$model[,2:ncol(fit$model)]
y <- fit$model[,1]
results <- crossval(x, y, theta.fit, theta.predict, ngroup=k)
r2 <- cor(y, fit$fitted.values)^2
r2cv <- cor(y, results$cv.fit)^2
cat("Original R-square =", r2, "\n")
cat(k, "Fold Cross-Validated R-square =", r2cv, "\n")
cat("Change =", r2-r2cv, "\n")
}

states <- as.data.frame(state.x77[,c("Murder", "Population","Illiteracy", "Income", "Frost")])
fit <- lm(Murder ~ Population + Income + Illiteracy + Frost, data=states)
shrinkage(fit)

----------------------------------------------------------------
这里面主要是搞不懂在shrinkage函数中,x,y还没被定义出来呢就已经在theta.fit、theta.predict中用了,这样也可以吗?
此外cbind(1,x)%*%fit$coef这个语句应该是想计算预测的值,但是我不用函数的方式就是先回归再计算
states <- as.data.frame(state.x77[,c("Murder", "Population","Illiteracy", "Income", "Frost")])
fit <- lm(Murder ~ Population + Income + Illiteracy + Frost, data=states)
x <- fit$model[,2:ncol(fit$model)]
y <- fit$model[,1]
cbind(1,x)%*%fit$coef

就显示
> cbind(1,x)%*%fit$coef
Error in cbind(1, x) %*% fit$coef :
  requires numeric/complex matrix/vector arguments
好像cbind(1,x)莫名奇妙的就变成list了,为什按照原来的语句就能顺畅的执行了呢?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言实战 交叉验证 R语言 shrinkage Age

沙发
风之将尽 学生认证  发表于 2017-4-24 23:16:25
诶好像dollar号都没打出来

藤椅
风之将尽 学生认证  发表于 2017-4-24 23:18:16
states <- as.data.frame(state.x77[,c("Murder", "Population","Illiteracy", "Income", "Frost")])
fit <- lm(Murder ~ Population + Income + Illiteracy + Frost, data=states)
x <- fit$model[,2:ncol(fit$model)]
y <- fit$model[,1]
cbind(1,x)%*%fit$coef

板凳
风之将尽 学生认证  发表于 2017-4-24 23:19:45
代码贴上来有点问题,原代码在R in action 2的194页

报纸
张大猫123 发表于 2017-7-18 16:59:03
同问啊。cbind(1,x)这个应该是个data.frame,不能够用%*%,  但是为什么源代码就能够顺利执行。  是因为function有什么特殊功能吗

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-17 18:14