楼主: 舟~翁
1158 7

[问答] 关于循环取数的疑问 [推广有奖]

  • 5关注
  • 0粉丝

博士生

26%

还不是VIP/贵宾

-

威望
0
论坛币
15 个
通用积分
7.0488
学术水平
1 点
热心指数
2 点
信用等级
0 点
经验
3110 点
帖子
221
精华
0
在线时间
145 小时
注册时间
2015-10-12
最后登录
2022-7-3

楼主
舟~翁 发表于 2016-1-10 16:53:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
下面这段代码,为什么运行不了呢
  1. c<-0.1
  2. r<-1
  3. set.seed(7)
  4. ut<-round(rnorm(101,0,1),4)   
  5. y<-0.6  #y[0]
  6. for(t in 2:101){
  7. y[t]=c+r*y[t-1]+ut[t]}

  8. x<-y[-length(y)]           #100个x
  9. y1<-y[-1]                           #100个y
  10. u1<-ut[-1]

  11. for(k in 1:16){

  12. x[k]<-cbind(rep(1,20+5*k),c(x[c(1:20+5*k)]))
  13. y[k]<-as.matrix(y1[c(1:20+5*k)],20+5*k,1)
  14. }                      #本想把这个矩阵每次都取20+5k的,但是运行不了
复制代码



二维码

扫码加我 拉你入群

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

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


沙发
jiangbeilu 学生认证  发表于 2016-1-10 19:02:43
你用list来存储你得到的结果吧。因为y[k]和x[k]都是存储的向量元素。
  1. x=list()
  2. y=list()
  3. for(k in 1:16){
  4. x[[k]]<-cbind(rep(1,20+5*k),c(x[c(1:20+5*k)]))
  5. y[[k]]<-as.matrix(y1[c(1:20+5*k)],20+5*k,1)   
  6. }
复制代码
已有 1 人评分热心指数 收起 理由
求证1加1 + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

藤椅
舟~翁 发表于 2016-1-10 22:50:09
jiangbeilu 发表于 2016-1-10 19:02
你用list来存储你得到的结果吧。因为y[k]和x[k]都是存储的向量元素。
你好,我可不可以问下这段代码的问题在哪里?  是上面代码改了下:
  1. x<-list(c(1:100))
  2. z<-seq(20,100,by=5)
  3. k<-1
  4. rufact<-function(){
  5. while(k<=17){
  6. num1[k]<-rep(1,z[k])
  7. num2[k]<-x[c(1:z[k])]
  8. num[k]<-cbind(num1[k],num2[k])
  9. k=k+1
  10. factdata<-list(num)
  11. return(factdata)
  12. }}
复制代码
输入rufact()后,没有任何数值,而是说找不到参数

板凳
jiangbeilu 学生认证  发表于 2016-1-11 08:32:06
建议你还是先说明一下,你的代码想要做什么。在你的代码不够准确的前提下,让别人通过你的代码来检查你要做什么,是一件比较费力而不讨好的事情。毕竟我不能完全明白你想要做什么。
一个好的办法是:在你写的代码上面,加一行注释,让自己清楚,也让别人明白代码的目的。

报纸
happyqj 学生认证  发表于 2016-1-11 17:26:36
同意楼上的说法,猜你的程序目的真的是挺困难的。最好问问题之前,把自己要实现什么结果说清楚,这样大家也能比较准确的帮忙
在你第一个帖子里面,y没有进行初始化,所以会有错误。下面是修改之后的代码:
  1. c<-0.1
  2. r<-1
  3. set.seed(7)
  4. ut<-round(rnorm(101,0,1),4)
  5. ######################################   
  6. y<-numeric(101); #应该先对y进行初始化
  7. #####################################
  8. y[1]<-0.6  #y[1]
  9. for(t in 2:101){
  10. y[t]=c+r*y[t-1]+ut[t]}
  11. x<-y[-length(y)]           #100个x
  12. y1<-y[-1]                           #100个y
  13. u1<-ut[-1]

  14. ########不明白下面这个要表达什么内容,实现什么功能,帮不了你啦
  15. for(k in 1:16){

  16. x[k]<-cbind(rep(1,20+5*k),c(x[c(1:20+5*k)]))
  17. y[k]<-as.matrix(y1[c(1:20+5*k)],20+5*k,1)
  18. }                      #本想把这个矩阵每次都取20+5k的,但是运行不了
复制代码

地板
舟~翁 发表于 2016-1-11 18:13:07
jiangbeilu 发表于 2016-1-11 08:32
建议你还是先说明一下,你的代码想要做什么。在你的代码不够准确的前提下,让别人通过你的代码来检查你要做 ...
好的。我是要做递归回归,我有200个样本(x,y),先取100个样本出来,再加入5个样本进去,每加入一次我都要做一次线性回归,测试y=a+bx+ut中b的t统计量。我试着用矩阵来求解。因此我需要每一次的循环中都能使矩阵增加一些样本数。
  1. c<-0.1
  2. r<-1
  3. set.seed(7)
  4. ut<-round(rnorm(101,0,1),4)    #产生随机数101个
  5. y<-0.6  #y[0]
  6. for(t in 2:101){
  7. y[t]=c+r*y[t-1]+ut[t]}

  8. x<-y[-length(y)]           #100个x
  9. y1<-y[-1]                           #100个y
  10. u1<-ut[-1]

  11. for(k in 1:16){

  12. ans[k]<-cbind(rep(1,20+5*k),c(x[c(1:20+5*k)]))    #这里是希望生成一个矩阵,矩阵的数是可以增加的
  13. ans[k]<-as.matrix(y1[c(1:20+5*k)],20+5*k,1)         #这也是生成矩阵,希望用for循环生成一系列的ans,ans,然后我再用这些矩阵分别来做线性回归
  14. }                     
复制代码

7
happyqj 学生认证  发表于 2016-1-12 11:34:48
舟~翁 发表于 2016-1-11 18:13
好的。我是要做递归回归,我有200个样本(x,y),先取100个样本出来,再加入5个样本进去,每加入一次我都 ...
下面的代码应该能实现你的目的
你最大的问题是没有对存储变量初始化
  1. #define the sample (x,y), total obs: 200

  2. x<-rnorm(200);
  3. y<-4*x+1+rnorm(200);

  4. # initiate the variable t_value to save the t value result

  5. t_v<-matrix(nc=2,nr=20);

  6. # use for loop to conduct the regression

  7. for (i in 1:20){
  8. tx<-x[1:(100+5*i)];
  9. ty<-y[1:(100+5*i)];
  10. fitxy<-lm(ty~tx);
  11. temp<-summary(fitxy)$coef
  12. t_v[i,2]<-temp[2,3];
  13. t_v[i,1]<-i
  14. }
  15. t_v
复制代码
已有 1 人评分热心指数 收起 理由
求证1加1 + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

8
舟~翁 发表于 2016-1-12 16:29:56
happyqj 发表于 2016-1-12 11:34
下面的代码应该能实现你的目的
你最大的问题是没有对存储变量初始化
非常感谢,问题解决了
额。。能不能问下,R软件中的t值和通常计算的t统计量是不是一样的?它们是不是都是标准化的呢

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

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