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

课堂代码及注释

###第二章 随机向量
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()

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值