用EXCEL进行马尔克夫预测
1.原始数据
以下我们以教材第3章第7节中的例子,进行分析计算。
例如,考虑某地区农业收成变化的三个状态,即“丰收”、“平收”和“欠收”。记E1为“丰收”状态,E2为“平收”状态,E3为“欠收”状态。表3.7.1给出了该地区1965~1999年期间农业收成的状态变化情况。试计算该地区农业收成变化的状态转移概率矩阵。
表3.7.1 某地区农业收成变化的状态转移情况
年份 | 1965 | 1966 | 1967 | 1968 | 1969 | 1970 | 1971 | 1972 | 1973 | 1974 |
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
状态 | E1 | E1 | E2 | E3 | E2 | E1 | E3 | E2 | E1 | E2 |
年份 | 1975 | 1976 | 1977 | 1978 | 1979 | 1980 | 1981 | 1982 | 1983 | 1984 |
序号 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
状态 | E3 | E1 | E2 | E3 | E1 | E2 | E1 | E3 | E3 | E1 |
年份 | 1985 | 1986 | 1987 | 1988 | 1989 | 1990 | 1991 | 1992 | 1993 | 1994 |
序号 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
状态 | E3 | E3 | E2 | E1 | E1 | E3 | E2 | E2 | E1 | E2 |
年份 | 1995 | 1996 | 1997 | 1998 | 1999 | |||||
序号 | 31 | 32 | 33 | 34 | 35 | |||||
状态 | E1 | E3 | E2 | E1 | E1 | |||||
从表3.7.1中可以知道,在15个从E1出发(转移出去)的状态中,有3个是从E1转移到E1的(即1→2,24→25,34→35),有7个是从E1转移到E2的(即2→3,9→10,12→13,15→16,29→30,35→36,39→40),有5个是从E1转移到E3的(即6→7,17→18,20→21,25→26,31→32)。
计算得到该地区农业收成变化的状态转移概率矩阵为
一、用EXCEL计算各年的农业收成状态概率
将1999年设为初始状态, =[0,1,0],将状态转移概率矩阵代入递推公式,其矩阵的计算可在EXCEL中实现。
函数MMULT(array1,array2)
返回两数组的矩阵乘积。结果矩阵的行数与 array1 的行数相同,矩阵的列数与 array2 的列数相同。
说明
∙ Array1 的列数必须与 array2 的行数相同,而且两个数组中都只能包含数值。
∙ Array1 和 array2 可以是单元格区域、数组常量或引用。
∙ 如果单元格是空白单元格或含有文本字符串,或是 array1 的行数与 array2 的列数不相等时,则函数 MMULT 返回错误值 #VALUE!。
公式输入后,选择以公式单元格开始的数据区域。按 F2,再按 Ctrl+Shift+Enter,即可得到矩阵的乘积。
注:如果公式不以数组公式的形式输入,则结果为单个结果值 。
例如:计算2000年的各收成出现的概率、
[0.2 0.4667 0.3333
[0,1,0]* 0.5385 0.1538 0.3077 = [0.5385 0.1538 0.3077]
0.3636 0.4545 0.1818]
同样,可以计算得到2001-2010年各年的概率状况。
作业:课后16题
二、附学习资料:
资料一:
矩阵转置
通常用复制-选择性粘贴-转置,或transpose( )可以实现转置功能!
通常用复制-选择性粘贴-转置,或transpose( )可以实现转置功能!
资料二:
矩阵运算函数
1.MDETERM
用途:返回一个数组的矩阵行列式的值。
语法:MDETERM(array)
参数:Array是一个行列数相等的数值数组。Array可以是单元格区域,例如A1:C3;或是一个数组常量,如{1,2,3;4,5,6;7,8,9};也可以是区域或数组常量的名称。矩阵行列式的值多用于求解多元联立方程。
实例:如果A1=1、A2=2、B1=3、B2=4,则公式“=MDETERM(A1:B2)”返回-2。
2.MINVERSE
用途:返回一个数组的矩阵行列式的值。
语法:MDETERM(array)
参数:Array是一个行列数相等的数值数组。Array可以是单元格区域,例如A1:C3;或是一个数组常量,如{1,2,3;4,5,6;7,8,9};也可以是区域或数组常量的名称。矩阵行列式的值多用于求解多元联立方程。
实例:如果A1=1、A2=2、B1=3、B2=4,则公式“=MDETERM(A1:B2)”返回-2。
2.MINVERSE
用途:返回数组矩阵的逆距阵。
语法:MINVERSE(array)
参数:Array是具有相等行列数的数值数组,它可以是单元格区域,例如A1:C3;也可以是常数数组如{1,2,3;4,5,6;7,8,9};或者是两者的名称。
实例:公式“=MINVERSE({4,-1;2,0})”返回{0,0.5;-1,2};=MINVERSE({1,2,1;3,4,-1;0,2,0})返回{0.25,0.25,-0.75;0,0,0.5;0.75,-0.25,-0.25}。
3.MMULT
用途:返回两数组的矩阵乘积。结果矩阵的行数与array1的行数相同,矩阵的列数与array2的列数相同。
语法:MMULT(array1,array2)
参数:Array1和array2是要进行矩阵乘法运算的两个数组。Array1的列数必须与array2的行数相同,而且两个数组中都只能包含数值。Array1和array2可以是单元格区域、数组常数或引用。
实例:公式“=MMULT({1,2;2,3},{3,4;4,5})”返回11。
语法:MINVERSE(array)
参数:Array是具有相等行列数的数值数组,它可以是单元格区域,例如A1:C3;也可以是常数数组如{1,2,3;4,5,6;7,8,9};或者是两者的名称。
实例:公式“=MINVERSE({4,-1;2,0})”返回{0,0.5;-1,2};=MINVERSE({1,2,1;3,4,-1;0,2,0})返回{0.25,0.25,-0.75;0,0,0.5;0.75,-0.25,-0.25}。
3.MMULT
用途:返回两数组的矩阵乘积。结果矩阵的行数与array1的行数相同,矩阵的列数与array2的列数相同。
语法:MMULT(array1,array2)
参数:Array1和array2是要进行矩阵乘法运算的两个数组。Array1的列数必须与array2的行数相同,而且两个数组中都只能包含数值。Array1和array2可以是单元格区域、数组常数或引用。
实例:公式“=MMULT({1,2;2,3},{3,4;4,5})”返回11。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论