看来楼主需要先补补统计学,二元回归(x1,x2,y)已经要三维散点图,超过二元不知道楼主想怎么制图?
一元太简单了,网上都有,我不答。二元的话网上确实很少,最简单的办法是得到回归方程,利用回归方程来模拟点的坐标建立回归曲面。代码如下,我只是截取原来项目的一部分,懒得修改,给你了解思路,大概需要用到numpy(np),matplotlib.pyplot(plt),statsmodels.api(sm),pandas(pd)这么几个包。
from mpl_toolkits.mplot3d import Axes3D
r4=pd.concat([b2,c2,d2],axis=1)[1:] /b2,c2,d2是三个变量,b2是应变量
r4.columns=['MSFT','GOOGL','IBM']
r4.fillna(0,inplace=True)
r4['2016-06-23':'2017-06-21']
x4=sm.add_constant(r4[['GOOGL','IBM']]) /加上常数项
m4=sm.OLS(r4['MSFT'],x4).fit() /这里在做线性回归
print(m4.summary())
fig1=plt.figure()
ax=fig1.add_subplot(413,projection='3d')
ax.scatter(r4['GOOGL'],r4['IBM'],r4['MSFT'],c='y') /这里制作散点图,略过不看
fig2=plt.figure()
bx=fig2.add_subplot(414,projection='3d')
x=y=np.arange(-0.05, 0.05, 0.001) /对x和y坐标取等差数列,其实xy数值随机即可
def f(x,y):
return m4.params[0]+ x*m4.params[1]+y*m4.params[2] /定义求z坐标的函数,利用回归方程计算z坐标的取值
x,y= np.meshgrid(x, y)
zs = np.array([f(x,y) for x,y in zip(np.ravel(x), np.ravel(y))])
z=zs.reshape(x.shape)
bx.plot_surface(x,y,z,alpha=0.5) /利用回归方程计算的z坐标来画出回归曲面