以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  [求助]Fun 对象中有无相关系数的函数  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=12404)

--  作者:yeyi
--  发布时间:2012/6/13 17:21:43
--  [求助]Fun 对象中有无相关系数的函数

两个品种收盘价数组

求这两个品种的相关系数

Fun 对象中有无相关系数的函数

如无

 

能否请老大编个简单函数示范一下,如何算相关系数

 

 

 r=\\frac{\\sigma{xy}}{\\sigma_x\\sigma_y}  (1)

  \\sigma{xy}=\\sigma^2{xy}=\\frac{\\sum(x-\\overline{x})(y-\\overline{y})}{n}

  \\sigma_x=\\sqrt{\\frac{\\sum(x-\\overline{x})^2}{n}}

  \\sigma_y=\\sqrt{\\frac{\\sum(y-\\overline{y}^2)}{n}}

  r=\\frac{\\sum(x-\\overline{x})(y-\\overline{y})}{\\sqrt{\\sum(x-\\overline{x})^2\\sum(y-\\overline{y})^2}}  (2)

  =\\frac{n\\sum xy-\\sum x\\sum y}{\\sqrt{n\\sum x^2-(\\sum x)^2}\\cdot\\sqrt{n\\sum y^2-(\\sum y)^2}}  (3)

  =\\frac{n^2[\\frac{\\sum xy}{n}-]}{\\frac{\\sum x}{n}-\\frac{\\sum y}{n}}{\\sqrt{n^2[\\frac{\\sum x^2}{n}-(\\frac{\\sum x}{n})^2]\\cdot\\sqrt n^2[\\frac{\\sum y^2}{n}-(\\frac{\\sum y}{n})^2]}}  (4)

  =\\frac{\\overline{xy}-\\overline{x}\\overline{y}}{\\sqrt{\\sum\\overline{x^2}-(\\overline{x})^2}\\cdot\\sqrt{\\sum\\overline{y^2}-(\\overline{y})^2}}  (5)


--  作者:王锋
--  发布时间:2012/6/13 17:53:03
--  
好像没有,后面准备增加
--  作者:王锋
--  发布时间:2012/6/26 11:40:48
--  
检查了下软件,目前VBA是自带相关系数的,请参考外部对象的Array 对象,Releate      计算该数组与其他Array对象之间的相关系数
--  作者:admin
--  发布时间:2012/6/28 12:34:50
--  

Sub Test()

Dim d1 \'创建一个变量
\'创建Array外部对象,将对象实例置变量d中
Set d1 = CreateObject("Stock.Array")

Set Data1 = MarketData.GetHistoryData("IF07","ZJ",5)
If Data1.Count < 10 Then
   Set d1 = nothing \'释放对象
   Exit Sub
End if

\'由于GetHistoryData只能返回一个HistoryData对象,因此需要这里读出一个保存一个到数组中

\'取最近10个交易日的数据做相关系数判断
\'将收盘价数据置数组中
For i =1 to 10
   d1.AddBack(Data1.Close(Data1.Count-i))
Next

Dim d2 \'创建一个变量
\'创建Array外部对象,将对象实例置变量d中
Set d2 = CreateObject("Stock.Array")

Set Data2 = MarketData.GetHistoryData("IF09","ZJ",5)
If Data2.Count < 10 Then
   Set d1 = nothing \'释放对象
   Set d2 = nothing
   Exit Sub
End if

For i =1 to 10
   d2.AddBack(Data2.Close(Data2.Count-i))
Next

Application.MsgOut d1.count

MsgBox d1.Releate(d2)

 

Set d1 = nothing \'释放对象
Set d2 = nothing

End Sub

[此贴子已经被作者于2012-6-28 12:39:26编辑过]