楼主: 王新军
1494 7

[问答] 有关R语言for循环问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

58%

还不是VIP/贵宾

-

威望
0
论坛币
9 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3705 点
帖子
19
精华
0
在线时间
151 小时
注册时间
2015-11-24
最后登录
2017-12-26

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
> p=8
> n=200
> tbeta=c(3,1.5,2,rep(0,p-3))
> Sig=matrix(rep(1,p*p),p)
> for (ii in 1:p) for (jj in 1:p) if (ii!=jj) Sig[ii,jj] = 0.5^(abs(ii-jj))
> x = mvrnorm(n, rep(0,p), Sig)
> y = x%*%tbeta + rnorm(n,0,3)
> cv.out<-cv.glmnet(x,y,nfolds=5)
> tbetahat<-coef(cv.out)[2:9]
> yhat = x%*%tbetahat + rnorm(n,0,3)
> a = y-yhat
> pse=sum(a^2)/n
> pse
[1] 17.4298
我想把这段代码重复50次,得到50个这个值,该怎么用for语句,尝试过很多次,总是不行

二维码

扫码加我 拉你入群

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

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

关键词:for循环 For R语言 matrix beta matrix

沙发
cbq95229 发表于 2016-8-29 17:05:43 |只看作者 |坛友微信交流群
all_data=c()
for(k in 1:50)
{
p=8
n=200
tbeta=c(3,1.5,2,rep(0,p-3))
Sig=matrix(rep(1,p*p),p)
for (ii in 1:p) for (jj in 1:p) if (ii!=jj) Sig[ii,jj] = 0.5^(abs(ii-jj))
x = mvrnorm(n, rep(0,p), Sig)
y = x%*%tbeta + rnorm(n,0,3)
cv.out<-cv.glmnet(x,y,nfolds=5)
tbetahat<-coef(cv.out)[2:9]
yhat = x%*%tbetahat + rnorm(n,0,3)
a = y-yhat
pse=sum(a^2)/n
all_data=c(all_data,pes)

}
all_data
已有 1 人评分经验 论坛币 收起 理由
李会超 + 60 + 10 热心帮助其他会员

总评分: 经验 + 60  论坛币 + 10   查看全部评分

使用道具

藤椅
cbq95229 发表于 2016-8-29 17:06:19 |只看作者 |坛友微信交流群
不知道是不是您想要的结果

使用道具

板凳
王新军 发表于 2016-8-29 18:27:13 |只看作者 |坛友微信交流群
cbq95229 发表于 2016-8-29 17:06
不知道是不是您想要的结果
是的,谢谢大神

使用道具

报纸
王新军 发表于 2016-8-29 18:43:14 |只看作者 |坛友微信交流群
王新军 发表于 2016-8-29 18:27
是的,谢谢大神
> s$coef[4,2:9]
                 b.1                  b.2                  b.3                  b.4                  b.5                  b.6                  b.7
   "Mean   :3.556  "   "Mean   :1.2632  "   "Mean   :1.6506  "  "Mean   : 0.1332  " "Mean   : 0.06361  " "Mean   : 0.03635  " "Mean   :-0.01616  "
                 b.8
"Mean   :-0.1406  "
我再问一下,我想把这里面的数据拿出来,不想要Mean:,该怎么弄

使用道具

地板
王新军 发表于 2016-8-29 18:44:09 |只看作者 |坛友微信交流群
cbq95229 发表于 2016-8-29 17:06
不知道是不是您想要的结果
> s$coef[4,2:9]
                 b.1                  b.2                  b.3                  b.4                  b.5                  b.6                  b.7
   "Mean   :3.556  "   "Mean   :1.2632  "   "Mean   :1.6506  "  "Mean   : 0.1332  " "Mean   : 0.06361  " "Mean   : 0.03635  " "Mean   :-0.01616  "
                 b.8
"Mean   :-0.1406  "
我再问一下,我想把这里面的数据拿出来,不想要Mean:,该怎么弄

使用道具

7
violinj 发表于 2016-8-29 23:08:36 |只看作者 |坛友微信交流群
王新军 发表于 2016-8-29 18:44
> s$coef[4,2:9]
                 b.1                  b.2                  b.3                  b ...
try this:

x<-s$coef[4,2:9]
z<-sapply(x,function(y) as.numeric(unlist(strsplit(y,":"))[2]))
z

使用道具

8
pkl 在职认证  发表于 2016-8-30 10:18:33 |只看作者 |坛友微信交流群
都很厉害,学习了!

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 11:03