使用Python进行GARCH建模时出错
我有一个用于GARCH建模的示例python代码,它创建了随机生成的数字数据。我想用我自己的csv文件替换这些数字,该文件包含一个列向量,但这根本不起作用使用Python进行GARCH建模时出错,python,numpy,model,scipy,Python,Numpy,Model,Scipy,我有一个用于GARCH建模的示例python代码,它创建了随机生成的数字数据。我想用我自己的csv文件替换这些数字,该文件包含一个列向量,但这根本不起作用 import numpy as np from scipy import optimize r=np.array([0.945532630498276, 0.614772790142383, 0.834417758890680, 0.862344782601800, 0.555858715401929, 0.641058419842652,
import numpy as np
from scipy import optimize
r=np.array([0.945532630498276,
0.614772790142383,
0.834417758890680,
0.862344782601800,
0.555858715401929,
0.641058419842652,
0.720118656981704,
0.643948007732270,
0.138790608092353,
0.279264178231250,
0.993836948076485,
0.531967023876420,
0.964455754192395,
0.873171802181126,
0.937828816793698])
print r
f=open('main_ax.csv')
b=f.read()
r=np.array(b)
print r
def GARCH11_logL(param, r):
omega, alpha, beta = param
n = len(r)
s = np.ones(n)
for i in range(3,n):
s[i] = omega + alpha*r[i-1]**2 + beta*(s[i-1]) # GARCH(1,1) model
logL = -( (-np.log(s) - r**2/s).sum() ) # calculate the sum
return logL
R = optimize.fmin(GARCH11_logL,np.array([.1,.1,.1]),args=(r,),full_output=1)
print R
print
print("omega = %.6f\nbeta = %.6f\nalpha = %.6f\n") % (R[0][0],R[0][2],R[0][1])
此程序向我抛出以下错误:
Traceback (most recent call last):
File "C:\Users\Gaurav\Desktop\Ram\garch_model.py", line 35, in <module>
R = optimize.fmin(GARCH11_logL,np.array([.1,.1,.1]),args=(r,),full_output=1)
File "C:\Python27\lib\site-packages\scipy\optimize\optimize.py", line 377, in fmin
res = _minimize_neldermead(func, x0, args, callback=callback, **opts)
File "C:\Python27\lib\site-packages\scipy\optimize\optimize.py", line 435, in _minimize_neldermead
fsim[0] = func(x0)
File "C:\Python27\lib\site-packages\scipy\optimize\optimize.py", line 285, in function_wrapper
return function(*(wrapper_args + args))
File "C:\Users\Gaurav\Desktop\Ram\garch_model.py", line 32, in GARCH11_logL
s[i] = omega + alpha*r[i-1]**2 + beta*(s[i-1]) # GARCH(1,1) model
TypeError: unsupported operand type(s) for ** or pow(): 'numpy.string_' and 'int'
回溯(最近一次呼叫最后一次):
文件“C:\Users\Gaurav\Desktop\Ram\garch\u model.py”,第35行,在
R=optimize.fmin(GARCH11_logL,np.array([1,1,1]),args=(R,),full_输出=1)
文件“C:\Python27\lib\site packages\scipy\optimize\optimize.py”,第377行,在fmin中
res=\u最小化\u neldermead(func,x0,args,callback=callback,**选项)
文件“C:\Python27\lib\site packages\scipy\optimize\optimize.py”,第435行,在neldermead中
fsim[0]=func(x0)
文件“C:\Python27\lib\site packages\scipy\optimize\optimize.py”,第285行,在函数包装器中
返回函数(*(包装器参数+参数))
文件“C:\Users\Gaurav\Desktop\Ram\garch_model.py”,第32行,在GARCH11_logL中
s[i]=omega+alpha*r[i-1]**2+beta*(s[i-1])#GARCH(1,1)模型
TypeError:不支持**或pow()的操作数类型:'numpy.string_'和'int'
任何有关修复此代码的帮助都将非常有用。行
f=open('main_ax.csv')
b=f.read()
r=np.array(b)
使用单个字符串元素创建数组。您尚未将文件内容转换为数字数组
您可以将该代码替换为调用:
r = np.loadtxt('main_ax.csv')