前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python金融大数据分析-回归分析

Python金融大数据分析-回归分析

作者头像
钱塘小甲子
发布2019-01-29 09:37:20
1.5K0
发布2019-01-29 09:37:20
举报

1.pandas的线性回归        

回归分析是金融中一个绕不过的话题,其实最好的工具应该是R语言,但是pandas其实也是能够胜任绝大部分工作的。

        这里我们就简单介绍一下。

代码语言:javascript
复制
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
noise = np.random.normal(0,12,100)
x= np.array(range(100))
y = 0.7*x + noise
pp = pd.DataFrame({'xvalue':x,'yvalue':y})
model = pd.ols(y=pp['yvalue'],x=pp['xvalue'])
print model
plt.plot(x,y,'r.')
plt.plot(x,model.beta[1]+model.beta[0]*x,'b')

        代码很简单,不用做过多的解释

         我们可以看一下程序的输出,以及图形上的表示。

        这里,pandas的回归给出了上图的分析。决策系数是0.7621,调整后的是0.7597,不过笔者这里有一个疑问,一元线性回归的调整系数有意义吗?

        p-value很小,越小越拒绝,所以,我们拒绝原假设,换句话说,这里的水平是显著的。我们可以看到,我们程序中x和y的关系是没有intercept项的,但是在回归的时候却产生了。但是我们可以看到,他的p-value是很大的,所以,讲道理我们是可以拒绝原假设,换句话说,截距项是不显著的,也就是说,我们不能承认这一截距项是对的。

        然后绘制一个图,直观的看一下回归的过程,总的来说,效果还是很好的。当然,如果我们用的是真实世界的数据,恐怕就不会那么好了吧。

2.numpy的回归拟合

代码语言:javascript
复制
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#定义一个函数,用于回归
def f(x):
    return np.sin(x) + 0.5*x
#对x抽样
x = np.linspace(-2*np.pi,2*np.pi,50)
#利用一阶线性进行回归
reg = np.polyfit(x,f(x),deg = 1)
#rg就是回归之后的y的取值
ry = np.polyval(reg,x)
plt.plot(x,f(x),'b')
plt.plot(x,ry,'r.')

        numpy中的拟合更加具有实用意义,其实我们可以改变deg来进行不同阶的多项式的拟合。 既然我们可以进行多项式拟合,那么也就可以给出不同的拟合基函数。

        上面的例子中,我们的曲线实际上是由sin函数和x组合的,所以,假设我们知道了这样的情况,然后,选好这样的两个基,然后进行回归拟合,应该会得到更加好的效果,而实际上也确实是这样的。

代码语言:javascript
复制
matrix = np.zeros((2,len(x)))
matrix[1,:] = np.sin(x)
matrix[0,:] = x
reg = np.linalg.lstsq(matrix.T,f(x))[0]
print reg
ry = np.dot(reg,matrix)
plt.plot(x,f(x),'b')
plt.plot(x,ry,'r.')

        在上面的代码中,我们首先初始化了一个matrix,这个matrix就是用来存储我们的基的。一个是sin一个是x。然后用linalg,线性模拟函数,最小化平方和的方法获取reg,然后用dot方法或者拟合后的y值,如果对矩阵或者线性代数很了解的话,这一过程应该是可以很容易就理解的。

         我们绘制出来后是这样的结果。

        发现拟合的非常完美,然后拟合系数打印出来后时候0.5与1,这和我们设置的完全一样。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年12月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.pandas的线性回归        
  • 2.numpy的回归拟合
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档