楼主: 小甲克虫
1474 9

[问答] 请教大神下列程序有何错误? [推广有奖]

  • 9关注
  • 12粉丝

已卖:3份资源

教授

12%

还不是VIP/贵宾

-

威望
0
论坛币
8155 个
通用积分
114.7411
学术水平
10 点
热心指数
20 点
信用等级
8 点
经验
66643 点
帖子
698
精华
0
在线时间
1457 小时
注册时间
2005-9-20
最后登录
2023-6-16
毕业学校
中南财经政法大学

楼主
小甲克虫 在职认证  发表于 2013-12-30 21:40:04 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
chouyang<-function(x) {data1<-list(matrix(rep(0,3000),1000,3));
  for(i in 1:50)
  {xx<-x[sample(1:nrow(x),5),];hgfx<-lm(xx$V1~xx$V2+xx$V3);
   data1[i]<-hgfx$coefficients }
}
我的目的是要创建一个名为chouyang的函数,作用是从数据框x中抽取5行记录,然后对变量V1和V2,V3做回归分析,结果保存在hgfx中,然后只要回归分析的三个估计系数。这样做50次,每次结果保存在事先创建好的一个列表矩阵中,但是运行老不成功,请教大神,希望不吝赐教,谢谢。
二维码

扫码加我 拉你入群

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

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

关键词:yang CHO Yan 程序

沙发
nuomin 发表于 2013-12-30 22:13:49
试出来了,改动一个地方就行
data1[[1]][i,] <- hgfx$coefficients
其实楼主的问题可以用一句来完成
  1. sapply(1:50,function(y) coefficients(lm(V1~V2+V3,data=x[sample(1:nrow(x),5),])))
复制代码


已有 2 人评分学术水平 热心指数 信用等级 收起 理由
qoiqpwqr + 1 + 1 热心帮助其他会员
jmpamao + 1 + 1 + 1 压缩到这么极致,少了一个套t :D

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 1   查看全部评分

藤椅
jmpamao 发表于 2013-12-30 22:15:00
感觉易出的地方:
1、data1<-list(matrix(rep(0,3000),1000,3)) 不好
2、data1【i】有问题,且没有返回值
3、lm(xx$V1~xx$V2+xx$V3) 可能会出现名字不同,特别是 大小写
  1. chouyang<-function(x) {
  2.   data1<-matrix(rep(0,300),100,3)
  3.                        for(i in 1:50)
  4.                        {xx<-x[sample(1:nrow(x),5),]
  5.                         hgfx<-lm(xx$V1~xx$V2+xx$V3)
  6.                         data1[i,]<-hgfx$coefficients                        
  7.                        }
  8.   data1
  9. }

  10. data <- data.frame(V1=1:1000,V2=sample(500,1000,replace=T),V3=sample(500,1000,replace=T))
复制代码
chouyang(data) 你看看如何

板凳
yywan0913 在职认证  发表于 2013-12-30 22:17:41
  1. chouyang<-function(x) {data1<-matrix(rep(0,3000),1000,3);
  2.   for(i in 1:50)
  3.   {xx<-x[sample(1:nrow(x),5),];hgfx<-lm(xx$V1~xx$V2+xx$V3);
  4.    data1[i,]<-hgfx$coefficients }
复制代码
稍微改了下  ,应该可以了吧,前提是你的x是数据框,且含有变量V1,V2,V3,否则得定义
是什么给了你自信

报纸
yywan0913 在职认证  发表于 2013-12-30 22:24:17
yywan0913 发表于 2013-12-30 22:17
稍微改了下  ,应该可以了吧,前提是你的x是数据框,且含有变量V1,V2,V3,否则得定义
  1. chouyang<-function(x) {data1<-matrix(rep(0,3000),1000,3);
  2.   for(i in 1:50)
  3.   {xx<-x[sample(1:nrow(x),5),];hgfx<-lm(xx$V1~xx$V2+xx$V3);
  4.    data1[i,]<-hgfx$coefficients }
  5. data1[1:50,]
  6. }
复制代码
是什么给了你自信

地板
jmpamao 发表于 2013-12-30 22:45:33
我也要修改,
保留 (Intercept)  v2, v3

  1. data <- data.frame(V1=1:1000,V2=sample(500,1000,replace=T),V3=sample(500,1000,replace=T))

  2. chouyang <- function(x,n=50,m=5){
  3.   hg=function(x){
  4.     xx <- x[sample(1:nrow(x),m),]
  5.     hgfx<-lm(V1~V2+V3,data=xx)
  6.     hgfx$coefficients
  7.   }
  8. data1= replicate(n,expr=hg(x))
  9. t(data1)
  10. }
  11. chouyang(data,50,5)
复制代码


7
nuomin 发表于 2013-12-30 23:03:47
jmpamao 发表于 2013-12-30 22:45
我也要修改,
保留 (Intercept)  v2, v3
修改要先站住沙发,啊哈哈

8
jmpamao 发表于 2013-12-30 23:11:19
nuomin 发表于 2013-12-30 23:03
修改要先站住沙发,啊哈哈
更爱藤椅~

  1. data <- data.frame(V1=1:1000,V2=sample(500,1000,replace=T),V3=sample(500,1000,replace=T))
复制代码

  1. t(replicate(50, lm(V1~V2+V3,data=data[sample(1:nrow(data),5),])$coefficients))
复制代码

9
小甲克虫 在职认证  发表于 2014-1-1 19:36:09
nuomin 发表于 2013-12-30 22:13
试出来了,改动一个地方就行
data1[[1]]
谢谢。问题找来了。

10
小甲克虫 在职认证  发表于 2014-1-1 19:37:25
jmpamao 发表于 2013-12-30 22:15
感觉易出的地方:
1、data1
谢谢,我少了最后一个data1语句,没有输出语句。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 05:25