hello,大家好
这里是第七期概率论与数理统计的学习,我将用这篇博客去总结知识点以及用C语言实现案例的过程。
本期知识点:
- 二维连续型随机向量
- 均匀分布
- 二维正态分布
- 边缘分布
- 边缘分布函数
- 二维离散型随机向量的边缘概率分布
- 二维连续型随机向量的边缘概率密度
上一期我们学习了二维离散型随机向量,那么这期就轮到连续型的啦。上一期
总所周知啊,连续型是一个区间的概率,离散型是一个一个点的概率~~那么先给出二维连续型随机向量的定义:
定义:
对于二维随机向量 ( X , Y ) (X,Y) (X,Y), F ( x , y ) F(x,y) F(x,y)是它的分布函数,若存在非负函数 f ( x , y ) f(x,y) f(x,y),使得对任意实数 x , y x,y x,y,总有 F ( x , y ) = ∫ − ∞ y ∫ − ∞ x f ( u , v ) d u d v F(x,y)=\int_{-\infty}^y\int_{-\infty}^xf(u,v)dudv F(x,y)=∫−∞y∫−∞xf(u,v)dudv
则称 ( X , Y ) (X,Y) (X,Y)是二维连续型随机向量,称 f ( x , y ) f(x,y) f(x,y)为二维连续型随机向量 ( X , Y ) (X,Y) (X,Y)的概率密度函数,简称概率密度。
咦,等等,提问:为啥上式后面是 u , v u,v u,v的函数???
一般来说肯定是这样的: ∫ − ∞ y ∫ − ∞ x f ( x , y ) d x d y \int_{-\infty}^y\int_{-\infty}^xf(x,y)dxdy ∫−∞y∫−∞xf(x,y)dxdy,前面积分上限的 x , y x,y x,y表示的是一个具体的值,后面的 f ( x , y ) d x d y f(x,y)dxdy f(x,y)dxdy中的 x , y x,y x,y则是一个变量,所以为了更好地区别它们,所以把后面的 x , y x,y x,y用 u , v u,v u,v来替代。
f ( x , y ) ≥ 0 , − ∞ < x < + ∞ , − ∞ < y < + ∞ f(x,y)\geq0,-\infty
∫ − ∞ + ∞ ∫ − ∞ + ∞ f ( x , y ) d x d y = 1 \int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}f(x,y)dxdy=1 ∫−∞+∞∫−∞+∞f(x,y)dxdy=1
若 f ( x , y ) f(x,y) f(x,y)在点 ( x , y ) (x,y) (x,y)处连续,则有 ∂ 2 F ( x , y ) ∂ x ∂ y = f ( x , y ) \frac{∂^2F(x,y)}{∂x∂y}=f(x,y) ∂x∂y∂2F(x,y)=f(x,y)
设平面 D D D是平面上的任意区域,则点 ( X , Y ) (X,Y) (X,Y)落在 D D D内的概率 P { ( X , Y ) ∈ D } = ∫ ∫ D f ( x , y ) d x d y P\{(X,Y)\in D\}=\int\int_Df(x,y)dxdy P{(X,Y)∈D}=∫∫Df(x,y)dxdy
最后一条性质很重要噢,它将二维连续型随机向量 ( X , Y ) (X,Y) (X,Y)在平面区域 D D D内取值的概率问题转化为一个二重积分的计算。从二重积分的几何意义可知,该概率在数值上等于以 D D D为底,以曲面 z = f ( x , y ) z=f(x,y) z=f(x,y)为顶面的曲顶柱体的体积。
不过忘了也不用太着急,在题中大多数也只是转化成在平面上的积分。
定义:
设 D D D是平面上的有界区域,其面积为 d d d,若二维随机向量 ( X , Y ) (X,Y) (X,Y)的概率密度函数为 f ( x , y ) = { 1 d , ( x , y ) ∈ D 0 , 其它 f(x,y)=\begin{cases} \frac{1}{d}~~~,(x,y)\in D\\ 0~~~,其它\\ \end{cases} f(x,y)={d1 ,(x,y)∈D0 ,其它
则称 ( X , Y ) (X,Y) (X,Y)服从 D D D上的均匀分布,这个跟随机变量服从的均匀分布类似,用所占面积除以总面积即可。
定义:
设二维随机向量 ( X , Y ) (X,Y) (X,Y)的概率密度函数为 f ( x , y ) = 1 2 π σ 1 σ 2 1 − ρ 2 e − 1 2 ( 1 − ρ ) 2 [ ( x − μ 1 ) 2 σ 1 2 − 2 ρ ( x − μ 1 ) ( y − μ 2 ) ρ 1 ρ 2 + ( y − μ 2 ) 2 σ 2 2 ] , − ∞ < x < + ∞ , − ∞ < y < + ∞ f(x,y)=\frac{1}{2\pi\sigma_{1}\sigma_{2}\sqrt{1-\rho^2}}e^{-\frac{1}{2(1-\rho)^2}[\frac{(x-\mu_{1})^2}{\sigma_{1}^2}-2\rho\frac{(x-\mu_{1})(y-\mu_{2})}{\rho_{1}\rho_{2}}+\frac{(y-\mu_{2})^2}{\sigma_{2}^2}]},-\infty
式中 μ 1 , μ 2 \mu_{1},\mu_{2} μ1,μ2为实数, σ 1 > 0 , σ 2 > 0 , ∣ ρ ∣ < 1 \sigma_{1}>0,\sigma_{2}>0,|\rho|<1 σ1>0,σ2>0,∣ρ∣<1,则称 ( X , Y ) (X,Y) (X,Y)服从参数为 μ 1 , μ 2 , σ 1 , σ 2 , ρ \mu_{1},\mu_{2},\sigma_{1},\sigma_{2},\rho μ1,μ2,σ1,σ2,ρ的二维正态分布,记作 ( X , Y ) (X,Y) (X,Y)~ N ( μ 1 , μ 2 , σ 1 2 , σ 2 2 , ρ ) N(\mu_{1},\mu_{2},\sigma_{1}^2,\sigma_{2}^2,\rho) N(μ1,μ2,σ12,σ22,ρ),同时称 ( X , Y ) (X,Y) (X,Y)是二维正态随机向量。
二维随机向量 ( X , Y ) (X,Y) (X,Y)作为一个整体,具有分布函数 F ( x , y ) F(x,y) F(x,y),它们的分量 X X X和 Y Y Y都是随机变量,也有自己的分布函数,将它们分别记为 F ( x ) F(x) F(x)和 F ( y ) F(y) F(y),依次称为 X X X和 Y Y Y的边缘分布函数。那么 F ( x , y ) F(x,y) F(x,y)就称为 X X X和 Y Y Y的联合分布函数。
别太在意这个边缘与联合,它们都只是相对于彼此的一个名称而已。
边缘分布函数 F ( x ) F(x) F(x)和 F ( y ) F(y) F(y)都可以由 F ( x , y ) F(x,y) F(x,y)确定:
F ( x ) = P { X ≤ x } = P { X ≤ x , Y ≤ + ∞ } = F ( x , + ∞ ) F(x)=P\{X\leq x\}=P\{X\leq x,Y\leq +\infty\}=F(x,+\infty) F(x)=P{X≤x}=P{X≤x,Y≤+∞}=F(x,+∞)
F ( y ) = P { Y ≤ y } = P { X ≤ + ∞ , Y ≤ y } = F ( + ∞ , y ) F(y)=P\{Y\leq y\}=P\{X\leq +\infty,Y\leq y\}=F(+\infty,y) F(y)=P{Y≤y}=P{X≤+∞,Y≤y}=F(+∞,y)
离散型离散型,它表示一个一个点的概率,着重强调这个“点”嗷。
那么它的边缘概率分布是啥形式呢?
相当于先确定一个 X X X,然后 P { X = x i } P\{X=x_{i}\} P{X=xi}就表示它的概率,注意这里没有限制 Y Y Y的取值,也就是说要把所有 Y Y Y的全部取值都考虑进去。
也许结合一下“官方”知识更好理解一点呢:
设 ( x , y ) (x,y) (x,y)是二维离散型随机向量,其概率分布为 P { X = x i , Y = y i } = p i j P\{X=x_{i},Y=y_{i}\}=p_{ij} P{X=xi,Y=yi}=pij
那么 P { X = x i } = p i 1 + p i 2 + . . . + p i j P\{X=x_{i}\}=p_{i1}+p_{i2}+...+p_{ij} P{X=xi}=pi1+pi2+...+pij
同理, P { Y = y j } = p 1 j + p 2 j + . . . + p i j P\{Y=y_{j}\}=p_{1j}+p_{2j}+...+p_{ij} P{Y=yj}=p1j+p2j+...+pij
定义:
p i ⋅ = P { X = x i } = ∑ j p i j , i = 1 , 2 , . . . p_{i·}=P\{X=x_{i}\}=\sum_{j}p_{ij},i=1,2,... pi⋅=P{X=xi}=j∑pij,i=1,2,...
p ⋅ j = P { Y = y j } = ∑ i p i j , j = 1 , 2 , . . . p_{·j}=P\{Y=y_{j}\}=\sum_{i}p_{ij},j=1,2,... p⋅j=P{Y=yj}=i∑pij,j=1,2,...
分别称 p i ⋅ p_{i·} pi⋅和 p ⋅ j p_{·j} p⋅j为 X X X和 Y Y Y的边缘概率分布。bin~
别着急,还有一个小节的知识点!!
这个有了前面的基础,我相信你们能够理解的
设 ( X , Y ) (X,Y) (X,Y)是二维连续型随机向量,其概率密度函数为 f ( x , y ) f(x,y) f(x,y),由上一节可知
F ( x ) = F ( x , + ∞ ) = ∫ − ∞ + ∞ ∫ − ∞ x f ( u , v ) d u d v = ∫ − ∞ x [ ∫ − ∞ + ∞ f ( u , v ) d v ] d u F(x)=F(x,+\infty)=\int_{-\infty}^{+\infty}\int_{-\infty}^xf(u,v)dudv=\int_{-\infty}^x[\int_{-\infty}^{+\infty}f(u,v)dv]du F(x)=F(x,+∞)=∫−∞+∞∫−∞xf(u,v)dudv=∫−∞x[∫−∞+∞f(u,v)dv]du
注意了噢(因为我在学的时候就没注意)
记 f ( u ) = ∫ − ∞ + ∞ f ( u , v ) d v ( 1 ) f(u)=\int_{-\infty}^{+\infty}f(u,v)dv~~~(1) f(u)=∫−∞+∞f(u,v)dv (1)
(上式右边部分就是上上式那个 [ ] [] []中的那部分,需要跟上上式连起来一起思考!下式也一样!)
那么有 F ( x ) = ∫ − ∞ x f ( u ) d u ( 2 ) F(x)=\int_{-\infty}^xf(u)du~~~(2) F(x)=∫−∞xf(u)du (2)
那么此时此刻,恰如彼时彼刻,上式中的 f ( u ) f(u) f(u)不就是 F ( x ) F(x) F(x)的概率密度函数吗? f ( u ) f(u) f(u)的表达式如 ( 1 ) (1) (1),这样,我们就得到了二维连续型随机向量的概率密度。
好!又来一个定义
定义:
f ( x ) = ∫ − ∞ + ∞ f ( x , y ) d y f(x)=\int_{-\infty}^{+\infty}f(x,y)dy f(x)=∫−∞+∞f(x,y)dy
f ( y ) = ∫ − ∞ + ∞ f ( x , y ) d x f(y)=\int_{-\infty}^{+\infty}f(x,y)dx f(y)=∫−∞+∞f(x,y)dx
分别为 X X X和 Y Y Y的概率密度函数,!!!前提: X , Y X,Y X,Y都是连续型的随机变量。
真的真的只有最后一点了…
通过上面的内容,我们可以得到,对于服从矩形区域 D = { ( x , y ) : a ≤ x ≤ b , c ≤ y ≤ d } D=\{(x,y):a\leq x\leq b,c\leq y\leq d\} D={(x,y):a≤x≤b,c≤y≤d}上均匀分布的 ( X , Y ) (X,Y) (X,Y),两个边缘概率密度分别为:
f ( x ) = { 1 b − a , a ≤ x ≤ b 0 , 其它 f(x)=\begin{cases} \frac{1}{b-a}~~,a\leq x\leq b\\ 0~~~~~~,其它\\ \end{cases} f(x)={b−a1 ,a≤x≤b0 ,其它
f ( y ) = { 1 d − c , c ≤ y ≤ d 0 , 其它 f(y)=\begin{cases} \frac{1}{d-c}~~,c\leq y\leq d\\ 0~~~~~~,其它\\ \end{cases} f(y)={d−c1 ,c≤y≤d0 ,其它
注意噢,这是对于矩形区域而言,对于其它区域上的均匀分布,不一定有上述结论!!
分析:首先,做题是非常简单的,由二维连续型随机向量的概率密度函数的性质可知, ∫ − ∞ + ∞ ∫ − ∞ + ∞ f ( x , y ) d x d y = 1 \int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}f(x,y)dxdy=1 ∫−∞+∞∫−∞+∞f(x,y)dxdy=1。凭此就可求出 a a a的值,然后第二问就是简单的换一下积分上下限即可。然而用代码实现起来却别有一番难度。下面先给出我自己写的代码,再做一些分析。
1):
#include
#include
typedef struct
{
int coe[2]; // coefficient of each item ——每一项的系数
int X; // the power of x of each item ——每一项中x的幂
int Y; // the power of t of each item ——每一项中y的幂
}Expre;
// Reduction of a fraction function ——约分函数
void Abbreviation(int *a)
{
while(a[0] % 2 == 0 && a[1] % 2 == 0)
{
a[0] /= 2;
a[1] /= 2;
}
for(int i = 3 ;i < a[1] / 2 ; i += 2)
{
while(a[0] % i == 0 && a[1] % i == 0)
{
a[0] /= i;
a[1] /= i;
}
}
}
// The difference of fraction a and fraction b ——两个分数a、b的差
int* Differ(int* a,int* b)
{
if(a[0] == 0)
{
b[0] *= -1;
return b;
}
else if(b[0] == 0)
{
return a;
}
int t;
t = a[1];
a[1] *= b[1];
a[0] *= b[1];
b[1] *= t;
b[0] *= t;
a[0] -= b[0];
Abbreviation(a);
return a;
}
// The integral function ——积分函数
void Integral(Expre* ex,int* floor,int* ceil,char pos)
{
if(pos == 'x') // integrate x ——对x进行积分
{
printf("Please input the value of ceil:"); // 输入积分上限
scanf("%d,%d",ceil,ceil + 1);
printf("Please input the value of floor:"); //输入积分下限
scanf("%d,%d",floor,floor + 1);
for(int i = 0 ; i < 3 ; i++)
{
ex[i].X += 1; // the power of x +1 ——x的幂加1
ex[i].coe[1] *= ex[i].X; // the coefficient divide the power of x ——系数再除以x的幂
for(int j = 0 ; j < 2 ; j++)
ceil[j] = pow(ceil[j],ex[i].X); // put ceilling into the x ——将积分上限带入x
for(int j = 0 ; j < 2 ; j++)
floor[j] = pow(floor[j],ex[i].X); // put floor into the x ——将积分下限带入x
int* a = Differ(ceil,floor); // calculate the difference of the values after we put ceil and floor into x ——计算带入值后积分上下限的差
// then multiply the differenve with the coefficient of the item ——然后将这个差乘原来的系数
ex[i].coe[1] *= a[1];
ex[i].coe[0] *= a[0];
Abbreviation(ex[i].coe);
// we have embodied x,so we need to eliminate it ——因为我们已经对x进行积分了,所以后面的式子就没有x了
ex[i].X = 0;
}
}
else // integrate y ——对y进行积分
{
printf("Please input the value of ceil:");
scanf("%d,%d",ceil,ceil + 1);
printf("Please input the value of floor:");
scanf("%d,%d",floor,floor + 1);
for(int i = 0 ; i < 3 ; i++)
{
ex[i].Y += 1;
ex[i].coe[1] *= ex[i].Y;
for(int j = 0 ; j < 2 ; j++)
ceil[j] = pow(ceil[j],ex[i].Y);
for(int j = 0 ; j < 2 ; j++)
floor[j] = pow(floor[j],ex[i].Y);
int* a = Differ(ceil,floor);
ex[i].coe[1] *= a[1];
ex[i].coe[0] *= a[0];
Abbreviation(ex[i].coe);
ex[i].Y = 0;
}
}
}
// calculate a,the function changes with different conditions ——计算a,这个函数随着情况的不同而不同
void Calculate(Expre* ex)
{
int a[2] = {12,1};
for(int i = 1 ; i < 3 ; i++)
{
int t = a[1];
a[1] *= ex[i].coe[1];
a[0] *= ex[i].coe[1];
ex[i].coe[1] *= t;
ex[i].coe[0] *= t;
a[0] -= ex[i].coe[0];
}
a[1] = a[0];
a[0] = 1;
Abbreviation(a);
printf("The result is: a=%d/%d",a[0],a[1]);
}
int main()
{
Expre ex[3];
printf("Please input the values of coefficient and power of each item.\n"); // ——输入每一项的系数和x、y的幂
for(int i = 0 ; i < 3 ; i++)
{
printf("The NO.%d set of data is:",i + 1);
scanf("%d,%d,%d,%d",&ex[i].coe[0],&ex[i].coe[1],&ex[i].X,&ex[i].Y);
}
printf("\n");
printf("The polynomial is :\n");
for(int i = 0 ; i < 3 ; i++)
{
printf("%d/%d*a*x^%d*y^%d\n",ex[i].coe[0],ex[i].coe[1],ex[i].X,ex[i].Y);
}
printf("\n");
int floor[2],ceil[2];
char pos[2] = {'x','y'}; // pos denotes the one that you want to integrate ——pos表示你要对哪个变量积分
Integral(ex,floor,ceil,pos[0]); // the first integration ——第一次积分
Integral(ex,floor,ceil,pos[1]); // the second integration ——第二次积分
printf("\n");
printf("After the second integration,the polynimial is:\n");
for(int i = 0 ; i < 3 ; i++)
{
printf("%d/%d*a*x^%d*y^%d\n",ex[i].coe[0],ex[i].coe[1],ex[i].X,ex[i].Y);
}
printf("\n");
Calculate(ex);
return 0;
}
分析:
2):
#include
#include
typedef struct
{
int coe[2];
int X;
int Y;
}Expre;
void Abbreviation(int *a)
{
while(a[0] % 2 == 0 && a[1] % 2 == 0)
{
a[0] /= 2;
a[1] /= 2;
}
for(int i = 3 ;i <= a[1] / 2 ; i += 2)
{
while(a[0] % i == 0 && a[1] % i == 0)
{
a[0] /= i;
a[1] /= i;
}
}
}
int* Differ(int* a,int* b)
{
if(a[0] == 0)
{
b[0] *= -1;
return b;
}
else if(b[0] == 0)
{
return a;
}
int t;
t = a[1];
a[1] *= b[1];
a[0] *= b[1];
b[1] *= t;
b[0] *= t;
a[0] -= b[0];
Abbreviation(a);
return a;
}
void Integral(Expre* ex,int* floor,int* ceil,char pos)
{
if(pos == 'x')
{
printf("Please input the value of ceil:");
scanf("%d,%d",ceil,ceil + 1);
printf("Please input the value of floor:");
scanf("%d,%d",floor,floor + 1);
for(int i = 0 ; i < 3 ; i++)
{
int a[2];
int b[2];
ex[i].X += 1;
ex[i].coe[1] *= ex[i].X;
for(int j = 0 ; j < 2 ; j++)
a[j] = pow(ceil[j],ex[i].X);
for(int j = 0 ; j < 2 ; j++)
b[j] = pow(floor[j],ex[i].X);
int* t = Differ(a,b);
ex[i].coe[1] *= t[1];
ex[i].coe[0] *= t[0];
Abbreviation(ex[i].coe);
ex[i].X = 0;
}
}
else
{
printf("Please input the value of ceil:");
scanf("%d,%d",ceil,ceil + 1);
printf("Please input the value of floor:");
scanf("%d,%d",floor,floor + 1);
for(int i = 0 ; i < 3 ; i++)
{
ex[i].Y += 1;
ex[i].coe[1] *= ex[i].Y;
for(int j = 0 ; j < 2 ; j++)
ceil[j] = pow(ceil[j],ex[i].Y);
for(int j = 0 ; j < 2 ; j++)
floor[j] = pow(floor[j],ex[i].Y);
int* a = Differ(ceil,floor);
ex[i].coe[1] *= a[1];
ex[i].coe[0] *= a[0];
Abbreviation(ex[i].coe);
ex[i].Y = 0;
}
}
}
int main()
{
Expre ex[3];
printf("Please input the data of each item:\n");
for(int i = 0 ; i < 3 ; i++)
{
printf("input the data of the No.%d item:",i + 1);
scanf("%d,%d,%d,%d",&ex[i].coe[0],&ex[i].coe[1],&ex[i].X,&ex[i].Y);
}
printf("The initital polynomial is:\n");
for(int i = 0 ; i < 3 ; i++)
{
printf("%d/%d*x^%d*y^%d\n",ex[i].coe[0],ex[i].coe[1],ex[i].X,ex[i].Y);
}
int ceil[2],floor[2];
char pos[2] = {'x','y'};
Integral(ex,ceil,floor,pos[0]);
printf("\n");
printf("The result of the first integration.\n");
for(int i = 0 ; i < 3 ; i++)
{
printf("%d/%d*x^%d*y^%d\n",ex[i].coe[0],ex[i].coe[1],ex[i].X,ex[i].Y);
}
Integral(ex,ceil,floor,pos[1]);
printf("\n");
printf("The result of the second integration.\n");
for(int i = 0 ; i < 3 ; i++)
{
printf("%d/%d*x^%d*y^%d\n",ex[i].coe[0],ex[i].coe[1],ex[i].X,ex[i].Y);
}
printf("\n");
int* a = Differ(ex[0].coe,ex[1].coe);
a = Differ(a,ex[2].coe);
printf("The result is: %d/%d",a[0],a[1]);
return 0;
}
第二问的代码大致一样,与第一问的差别也只是主函数上的一些差别。
这期主要是拓展了一下实现积分的思路,但仍有一下的局限性:
若大家有什么意见,欢迎前来指正~
这期就到这里了,下期再见!
PS:这期案例为啥只有一个题?害,这一个题我可用代码写了好几天呢,咱就是说,够用就行!而且主要是锻炼咱写代码的思路,而不是非要每个题都用C去实现。