应用多元统计分析(3)第二章 随机向量

    科技2022-08-06  114

    第二章 随机向量

    课堂代码及注释其他笔记第三次作业

    课堂代码及注释

    ###第二章 随机向量 from scipy import stats import numpy as np import scipy.stats as stats import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import pandas as pd ### 一元正太分布密度曲线 rv=stats.norm(2,3)##生成随机变量 norm()函数为正态分布 dir(rv) rv.cdf(2) ##求负无限大到2的密度值 (积分) rv.pdf(2) ##求对应密度值 (函数值) rv.ppf(0.9) ##给定概率求值 x=np.linspace(-7,11,num=100)##均匀取点 rv.pdf(x) plt.plot(x,rv.pdf(x)) ### 二元正太分布密度曲线 x1=x2=np.linspace(0,4,21) ##定义二元正太分布密度曲线 def fx(x1, x2): return np.exp(-(x1+x2)) fx(1,2) np.meshgrid(x1,x2) X , Y = np.meshgrid(x1,x2)##了解学习 np.meshgrid()这个函数 #### 引入例子 a,b=np.meshgrid([1,2],[4,5,6]) np.ravel(a)##数组变成向量 np.ravel(a);np.ravel(b) fx(np.ravel(a),np.ravel(b)) fx(np.ravel(X),np.ravel(Y)) #### 例子画三维图形 c=np.array(fx(np.ravel(a),np.ravel(b))) C=c.reshape(a.shape)##将C的shape转化为和a,b的shape一样 fig=plt.figure()##生成画板 ax=fig.gca(projection="3d") ax.plot_surface(a,b,C) plt.show() #### 画二元正太分布密度曲线三维图形 z=np.array(fx(np.ravel(X),np.ravel(Y))) Z=z.reshape(X.shape)##将Z的shape转化为和X,Y的shape一样 fig=plt.figure()##生成画板 ax=fig.gca(projection="3d") ax.plot_surface(X,Y,Z) plt.show() ##注:需要在终端运行会有图片(可移动) ## 边缘密度函数曲线 def f1x(x1): return np.exp(-x1) pass x1=np.linspace(0,10,num=101) y=f1x(x1) plt.plot(x1,y) ## 均值向量与协方差矩阵 dat=np.random.randn(50,4);dat##随机生成矩阵(行,列) dat=pd.DataFrame(dat);dat####DataFrame() dat.mean() dat.cov() dat.corr() ##补充1:np.random.randn():在-1.96~+1.96范围内曲线下的面积等于0.9500(即取值在这个范围的概率为95%),在-2.58~+2.58范围内曲线下面积为0.9900(即取值在这个范围的概率为99%). ##因此,由 np.random.randn()函数所产生的随机样本基本上取值主要在-1.96~+1.96之间,当然也不排除存在较大值的情形,只是概率较小而已。 ##补充2:np.random.randn():生成“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1) ## 举例:均值向量与协方差矩阵 trees=pd.read_csv("F:\\基础数学课\\应用多元统计分析\\trees.csv") type(trees) trees.mean() trees.cov() trees.corr() trees.var() trees.std() trees.to_numpy() trees.to_numpy().mean() ## 中心化和标准化 trees.iloc[:,0] trees.mean()[0] (trees.iloc[:,0]-trees.mean()[0])/trees.std()[0]##将第一列标准化 D=np.diag(trees.std());D trees_change=np.ones((31,1)).dot(trees.mean().to_numpy().reshape((1,3))) (trees-trees_change).dot(np.linalg.inv(D))###全部标准化 D.dot(trees.corr()).dot(D)##验证公式

    其他笔记

    import numpy as np import scipy.stats as stats import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D ##一元正态概率密度函数图像 rv = stats.norm(2,3) dir(rv) rv.cdf(2) rv.pdf(2) rv.ppf(0.975) x=np.linspace(-7,11,100) y=rv.pdf(x) plt.plot(x,y) ##二元概率密度函数曲面 x=y=np.linspace(0,4,21) def fx(x1,x2): return np.exp(-(x1+x2)) #fx(1,2) X=np.meshgrid(x,y) X,Y= np.meshgrid(x,y) Z = fx(X,Y) ## np.meshgrid 笛卡尔积 x=([1,2]) y=([3,4,5]) X,Y = np.meshgrid(x,y) Z=fx(X,Y) ## ##生成一个画板 fig=plt.figure() ##生成一个坐标 ax=fig.gca(projection="3d") ax.plot_surface(X,Y,Z) plt.show() ##边缘密度函数曲线 def f1x(x1): return np.exp(-x1) x1=np.linspace(0,10,101) y=f1x(x1) plt.plot(x1,y) ##均值向量、方差协方差阵、相关阵 import pandas as pd import numpy as np dat=np.random.randn(50,4) #50*4的数据阵 dat=pd.DataFrame(dat) dat.mean() dat.cov() dat.corr()

    第三次作业

    #### 1 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D ##定义二元正太分布密度曲线 def fx(x1, x2): return (6/5*x1**2)*(4*x1*x2+1) ##画联合概率密度图 x1=x2=np.linspace(0,1,41) np.meshgrid(x1,x2) X , Y = np.meshgrid(x1,x2) z=np.array(fx(np.ravel(X),np.ravel(Y))) Z=z.reshape(X.shape) fig=plt.figure()##生成画板 ax=fig.gca(projection="3d") ax.plot_surface(X,Y,Z) plt.show() ##边际密度曲线 def f1x(x1): return 12/5*x1**3+6/5*x1**2 x1=np.linspace(0,1,num=101) y1=f1x(x1) plt.plot(x1,y1) def f2x(x2): return 6/5*x2**2+2/5 x1=np.linspace(0,1,num=101) y2=f2x(x2) plt.plot(x2,y2) ##条件密度曲线 def fx1_x2(x1,x2): return 3*x1**2*(4*x1*x2+1)/(3*x2+1) #以x2=0.5画图为例 x1=np.linspace(0,1,num=101) y3=fx1_x2(x1,0.5) plt.plot(x1,y3) def fx2_x1(x1,x2): return (4*x1*x2+1)/(2*x1+1) #同样,以x1=0.5画图为例 x2=np.linspace(0,1,num=101) y4=fx2_x1(0.5,x2) plt.plot(x2,y4) #### 2习题2.9 ##写出x的协方差矩阵 x_cov1=np.array([[9,1,-2],[1,20,3],[-2,3,12]]) type(x_cov1) ##写出矩阵A,使得 y=Ax A=np.array([[2,3,1],[1,-2,5],[0,1,-1]]) ##由公式得y的协方差矩为 y_cov=A.dot(x_cov1).dot(A.T);y_cov #### 3习题2.12 x_cov2=np.array([[16,-4,3],[-4,4,-2],[3,-2,9]]) D=np.diag([1/4,1/2,1/3]) R_x = D.dot(x_cov2).dot(D);R_x #### 4 import pandas as pd import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D trees = pd.read_csv("F:\\基础数学课\\应用多元统计分析\\trees.csv") #样本均值、协方差阵、相关阵 trees.mean() trees.cov() trees.corr() trees.var() trees.std()
    Processed: 0.011, SQL: 8