楼主: meihao2008
3437 9

[问答] Eviews 高手请进(找出1,0,-1的对应组合问题) [推广有奖]

  • 0关注
  • 0粉丝

已卖:63份资源

博士生

17%

还不是VIP/贵宾

-

威望
0
论坛币
21570 个
通用积分
8.7099
学术水平
-5 点
热心指数
5 点
信用等级
-5 点
经验
6646 点
帖子
246
精华
0
在线时间
124 小时
注册时间
2005-5-4
最后登录
2022-11-16

楼主
meihao2008 发表于 2005-7-8 15:11:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

Eviews 高手请进(找出1,0,-1的对应组合问题)

我用Eviews编写一段程序:

程序首先自动产生一个1,0,-1序列(共!t个1,0或-1,具体!t值在运行前给定, 因为每次运行时要设定不同的!t值).

然后我要找出所有的!t个1,0或-1组合 (共3的!t次方个) 中, 有至少M(M<!t, 通过!track的值设定)个1,0或-1与程序自动产生的那个序列中的1,0,-1一一对应的那些组合. 将这些组合放到一个group中.

我编写的程序如下, 用了!t个循环, 切实可行, 可是当我设定!t到20以上时, 这段代码的运行效率就太低. 计算机要很多天连续运行.

请高手指教, 如何编写当!t值大于20时效率高一点的程序? 如果有疑问之处, 敬请指出, 我再作解释. 谢谢!

!t = 10 !track = 0.90 create u 1 !t series markt = 2*@round(rnd) - 1 stom(markt,vecmarkt) group success !i = 0 !n = 0 for !v1 = -1 to 1 step 1 for !v2 = -1 to 1 step 1 for !v3 = -1 to 1 step 1 for !v4 = -1 to 1 step 1 for !v5 = -1 to 1 step 1 for !v6 = -1 to 1 step 1 for !v7 = -1 to 1 step 1 for !v8 = -1 to 1 step 1 for !v9 = -1 to 1 step 1 for !v10 = -1 to 1 step 1 !n = !n + 1 rowvector(!t) strat!n = na for !pos = 1 to !t strat!n(!pos) = !v{!pos} next scalar ergeb!n = @inner(strat!n,vecmarkt) if ergeb!n >= 2*!track*!t - !t then

(解释一下这里:在我的程序中, 我计算每一个组合和程序自动产生的那个序列的内积(ergeb!n), 然后判断ergeb!n是否大于或等于 2*!track*!t - !t. 当!track=0.90, !t=10时, 2*!track*!t - !t=8, 此时找出3的10次方个1,0或-1组合有至少有8个与程序自动产生的那个序列中的1或-1对应的那些组合) mtos(strat!n, res!n) success.add res!n !i = !i + 1 endif delete ergeb!n strat!n next next next next next next next next next next freeze(strattable) success.table

二维码

扫码加我 拉你入群

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

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

关键词:EVIEWS Views Eview view EWS EVIEWS 高手

沙发
meihao2008 发表于 2005-7-8 15:14:00

欢迎任何改进意见或提出全新方法! 谢谢!

藤椅
hgz2373294 发表于 2005-7-8 18:02:00

牛能编程我至少还要两年后才有这水平

大数据晓(小)众商!

板凳
meihao2008 发表于 2005-7-9 01:23:00

这里应该有不少Eviews的大牛们呀! 不要光看不回贴呀! 任何想法和建议都是好的! 在此谢过!

报纸
minixi 发表于 2005-7-10 02:50:00

受EViews内存空间的约束,!t增大,系统会到硬盘暂存数据,必然很慢。

楼主的程序很节省内存。下面是学习楼主程序的习作。用3个循环生成待评价的向量(序列)。

!t=10 !track = 0.90 create abc u 1 !t series markt = 2*@round(rnd) - 1 stom(markt,vecmarkt) scalar pb=2*!track*!t - !t !Q=3^(!t) matrix(!Q,!t) mm matrix(!t,!Q) m group success for !j=1 to !t for !i=1 to 3^(!j) for !k=1+(!i-1)*3^(!t-!j) to !i*3^(!t-!j) if @mod(!i,3)=1 then mm(!k,!j)=-1 endif if @mod(!i,3)=2 then mm(!k,!j)=0 endif if @mod(!i,3)=0 then mm(!k,!j)=1 endif next next next m=@transpose(mm) !k=0 for !j=1 to !Q vector v1=@columnextract(m, !j) scalar ergeb = @inner(v1,vecmarkt) if ergeb>=pb then !k=!k+1 series s!k mtos(v1,s{!k}) success.add s{!k} endif next freeze(strattable) success.table

在EViews4.1和EViews5.1(企业版)下都通过。

地板
minixi 发表于 2005-7-10 08:26:00

以下是对楼主程序的少许“改进”,在EViews5.1下通过。

'设定工作文件的区间长度,!t=10不到一分钟,!t=14约14分钟,!t增加1决不止增加一分钟 !t=14 !track = 0.90 create abc u 1 !t '为工作变量赋初始值 series markt = 2*@round(rnd) - 1 stom(markt,vecmarkt) scalar pb=2*!track*!t - !t group success rowvector(!t) strat !i=0 '设定循环 for !v1 = -1 to 1 step 1 for !v2 = -1 to 1 step 1 for !v3 = -1 to 1 step 1 for !v4 = -1 to 1 step 1 for !v5 = -1 to 1 step 1 for !v6 = -1 to 1 step 1 for !v7 = -1 to 1 step 1 for !v8 = -1 to 1 step 1 for !v9 = -1 to 1 step 1 for !v10 = -1 to 1 step 1 for !v11 = -1 to 1 step 1 for !v12 = -1 to 1 step 1 for !v13 = -1 to 1 step 1 for !v14 = -1 to 1 step 1 'for !v15 = -1 to 1 step 1 'for !v16 = -1 to 1 step 1 'for !v17 = -1 to 1 step 1 'for !v18 = -1 to 1 step 1 'for !v19 = -1 to 1 step 1 'for !v20 = -1 to 1 step 1

'循环体开始 for !pos = 1 to !t strat(!pos) = !v{!pos} next scalar ergeb = @inner(strat,vecmarkt)

if ergeb >= pb then !i = !i + 1 series s!i mtos(strat, s!i) success.add s!i endif '循环体结束

'next '20 'next '19 'next '18 'next '17 'next '16 'next '15 next '14 next '13 next '12 next '11 next '10 next '9 next '8 next '7 next '6 next '5 next '4 next '3 next '2 next '1 '展示处理结果 freeze(strattable) success.table

'save abc.wf1

7
gewuzhizhi 发表于 2005-7-10 10:39:00

谢谢呵!

======在 2005-2-11 22:12:29 您来信中写道:====== 世界银行给予所有用户200元奖励。奖励理由:过年压岁钱 ======================================

8
meihao2008 发表于 2005-7-10 15:13:00
谢谢minixi的程序和改进. 但当!t为24 (我要考虑的!t的一个重要取值, !t=10, !t=12时时间均不成问题), 运行时间将是几何级数上升. 如果!t=14需14分钟, !t为24 时将需要3的10次方乘以14分钟, 即59049*14分钟=826686分钟=13778小时=574天!

9
reconomics 发表于 2005-8-21 10:29:00
强![em17][em17][em17]

10
markwumu 在职认证  发表于 2005-8-24 05:04:00
呵呵,还没来得及细看,顶一下先.

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-30 09:52