关于本站
人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!
经管之家新媒体交易平台
提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】
论文
- 毕业论文 | 写毕业论文
- 毕业论文 | 为毕业论文找思路
- 毕业论文 | 可以有时间好好写 ...
- 毕业论文 | 毕业论文如何选较 ...
- 毕业论文 | 毕业论文选题通过 ...
- 毕业论文 | 还有三人的毕业论 ...
- 毕业论文 | 毕业论文答辩过程 ...
- 毕业论文 | 本科毕业论文,wi ...
考研考博
- 考博 | 南大考博经济类资 ...
- 考博 | 考博英语10000词汇 ...
- 考博 | 如果复旦、南大这 ...
- 考博 | 有谁知道春招秋季 ...
- 考博 | 工作与考博?到底 ...
- 考博 | 考博应该如何选择 ...
- 考博 | 考博失败了
- 考博 | 考博考研英语作文 ...
留学
- 日本留学 | 在日本留学心得
- 日本留学 | 日本留学生活必需 ...
- 日本留学 | 【留学日本】2015 ...
- 日本留学 | 日本海外留学8年来 ...
- 日本留学 | 日本留学费用_日本 ...
- 日本留学 | 求在日本留学的师 ...
- 日本留学 | 日本留学的有没有 ...
- 日本留学 | 日本留学
TOP热门关键词
扫码加入统计交流群 |
Sub Hurst()
'变量和数组的定义
Dim Data()
Dim Array1()
Dim Array2()
Dim R()
Dim S()
Dim Result()
DimNoOfDataPoints As Integer
DimNoOfPlottedPoints As Integer
Dim NoOfPeriods
Dim PeriodNo
Dim n As Integer
Dim A As Integer
Dim i As Integer
Dim m
Dim e
Dim RS
'验证A 列中是否输入数据
IfWorksheets("Sheet1").Range("A1").Value = 0 Then MsgBox("请在A 列输入数据!"): Exit Sub
'清空主要的单元格
Worksheets("Sheet1").Range("B3").Value= "Hurst = "
Worksheets("Sheet1").Range("C3").Value= Null
'统计数据的个数
i = 1
Do While i <10000
i = i + 1
If Worksheets("Sheet1").Cells(i,1).Value = 0 Then Exit Do
Loop
NoOfDataPoints =i - 1
ReDimData(NoOfDataPoints)
'验证A 列的数据后将其加载到数组中
i = 1
counter = 1
Do While counter<= NoOfDataPoints
Set curCell =Worksheets("Sheet1").Cells(i, 1)
If Application.WorksheetFunction.IsNumber(curCell.Value)Then
Data(counter) =curCell.Value
counter = counter+ 1
End If
i = i + 1
Loop
'运行以下代码则可以直接输入原数据
'i=2
'Do While i <=NoOfDataPoints
'Data(i - 1) =Log(Data(i) / Data(i - 1))
'i = i + 1
'Loop
ReDim Result(NoOfDataPoints/ 2, 2)
'进入主循环
A = 2
Do While A <=NoOfDataPoints / 2
'再次定义数组变量
NoOfPeriods =NoOfDataPoints / A
ReDimArray1(Int(NoOfPeriods))
ReDim Array2(A,NoOfPeriods)
ReDimS(Int(NoOfPeriods))
ReDimR(Int(NoOfPeriods))
RS = 0
'求得各个子区间均值
i = 1
Do While i <=NoOfPeriods
e = 0
For PeriodNo = 1To A
e = e +Data(PeriodNo + (i - 1) * A)
Next PeriodNo
Array1(i) = e / A
i = i + 1
Loop
'求得各个子区间的累积截距和极差
i = 1
Do While i <NoOfPeriods
m = 0
e = 0
For PeriodNo = 1To A
m = m +((Data(PeriodNo + (i - 1) * A) - Array1(i)) ^ 2)
e = e +(Data(PeriodNo + (i - 1) * A) - Array1(i))
Array2(PeriodNo,i) = e
Next PeriodNo
'比较最大值与最小值
Maxi = Array2(1,i)
Mini = Array2(1,i)
For n = 1 To A
If Array2(n, i)> Maxi Then Maxi = Array2(n, i)
If Array2(n, i)< Mini Then Mini = Array2(n, i)
Next n
'求得R/S 值
R(i) = Maxi -Mini
S(i) = Sqr(m / A)
RS = RS + R(i) /S(i)
i = i + 1
Loop
'将V 统计量表的数据输出到Excel表格中
Worksheets("sheet1").Cells(A+ 2, 5).Value = (RS / NoOfPeriods) / Sqr(A)
Worksheets("sheet1").Cells(A+ 2, 6).Value = Log(A)
'将计算结果装入Result()数组中
Result(A, 1) =Log(A)
Result(A, 2) =Log(RS / NoOfPeriods)
A = A + 1
Loop
'对方程Log(R/S)=Log(c)+ H·Log(n)+ε进行线性回归,估计出斜率H 就是Hurst 指数
sumx = 0
Sumy = 0
Sumxy = 0
Sumxx = 0
NoOfPlottedPoints= NoOfDataPoints / 2
For i = 2 ToNoOfPlottedPoints
sumx = sumx +Result(i, 1)
Sumy = Sumy +Result(i, 2)
Sumxy = Sumxy +(Result(i, 1)) * (Result(i, 2))
Sumxx = Sumxx +(Result(i, 1)) * (Result(i, 1))
Next i
H = (Sumxy -((sumx * Sumy) / NoOfPlottedPoints)) / (Sumxx - ((sumx * sumx) /NoOfPlottedPoints))
Worksheets("sheet1").Range("C3").Value= H
End Sub
这个程序是一篇论文的附录,应该没问题
我实验了,用excel的VBA运行后发现用整数得出的结果应该是正确的,而用我的数据(有很多位小数)就无法运行,总是提示溢出,求解,很急!!!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
您可能感兴趣的文章
本站推荐的文章
- 哲学名言 | 【独家发布】经典哲学名言
- 哲学书籍 | 求推荐一本讲人生目标的哲学书籍 ...
- 哲学书籍 | 20部必读的哲学书籍
- 哲学书籍 | 经济人,开拓你逻辑思维的哲学书 ...
- 哲学书籍 | 哲学书籍
- 哲学书籍 | 哲学书籍
- 哲学书籍 | 哲学书籍
- 哲学书籍 | 经典的哲学书籍
人气文章
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。