一般来讲,每种产品(如某种品牌的小汽车)都有不同方面的属性,例如价格、安 全性、外观、保质期等。在设计和销售新产品之前,了解顾客对每种属性的各个选项的 偏好程度非常重要。偏好程度可以用效用函数来表示,即某种属性的不同选项对顾客的 价值(效用)。不幸的是,让顾客直接精确地给出每个属性的效用函数一般是困难的, 例如对于价格,一般的顾客当然会说越便宜越好,但很难确定10万元的价格和15万元 的价格的效用具体是多少。但是,对于具体的产品,产品的各个属性的具体选项配置都 已经确定下来了,所以如果我们把一些具体的产品让顾客进行评估打分,顾客通常能比 较容易地给出具体产品的效用。那么,从这些具体产品的效用信息中,我们能否反过来 估计每个属性中各个选项的效用呢?这种方法通常称为联合分析(conjoint analysis)。下面通过一个例子来说明。
例11 对某种牌号的小汽车,假设只考虑两种属性:价格和安全气囊。价格分为 12.9万元、9.9万元、7.9万元;安全气囊的配置为两个、一个、没有。经过市场调查, 顾客对该产品的不同配置的偏好程度(效用)如表9所示(表中的值(权重)越大表示 顾客越喜欢)。那么,价格和安全气囊的效用函数如何?
(1)模型建立
记价格选项分别为H(高),M(中),L(低),对应的效用为 ( j= H,M,L);安全气囊选项分别为0,1,2,对应的效用为
( i=0,1,2)。我们的目的实际上就是要求出
和
。 假设价格和安全气囊的效用是线性可加的,即当价格选项为 j 、安全气囊选项为i时,具体产品的效用
应该可以用价格的和安全气囊的效用之和来估计
(1)
那么,如何比较不同的估计的好坏呢?一种简单的想法是针对6个待定参数 和
。表中给出了9组数据,因此可以用小二乘法确定
和
。也就是说,此时的目标为
其中 是表中的数据(安全气囊选项为i、价格选项为 j 时具体产品的效用)。
因为做效用分析的主要目的是将来用于把不同配置的具体产品的优劣次序排出来,所以另一种方法是希望 和
保持同样的顺序:即对任意的
和
,当
时,也尽量有
(这里“+1”表示
严格小于
,且至少相差1)。于是,可以考虑如下目标函数
(3)
式中的求和只是对满足 的
和
求和。在LINGO中由于所
有的变量默认的都为非负变量,程序中式(3 )可以改写为
(2)模型求解
LINGO程序如下:
MODEL:
TITLE 产品属性的效用函数;
SETS:
PRICE/H,M,L/:P;
SAFETY/2,1,0/:Q;
M(safety,PRICE):CI;
MM(M,M)|CI(&1,&2)+1 #LE# CI(&3,&4):ERROR;
ENDSETS
DATA:
CI=7 8 9 3 4 6 1 2 5;
ENDDATA
@FOR(MM(i,j,k,l):ERROR(i,j,k,l)>1+P(j)+Q(i)-(P(l)+Q(k)));
[obj] MIN = @SUM(mm: ERROR);
END
求解这个模型,得到
此时模型的最优值(误差和)为0,所以说明在这个效用函数下,虽然得到的产品 权重(效用)与问题中给出的数据不完全相同,但产品的相对偏好顺序是完全一致的。
(3)模型的讨论
下面我们看看用小二乘法确定 和
的结果是否与此相同。此时的模型实际上就是一个简单的二次规划模型。LINGO程序为
MODEL:
TITLE 小二乘法计算产品属性的效用函数;
SETS:
PRICE/H,M,L/:P;
SAFETY/2,1,0/:Q;
M(safety,PRICE):CI,ERROR,sort;
ENDSETS
DATA:
CI =7 8 9 3 4 6 1 2 5;
ENDDATA
@FOR(M(i,j):sort(i,j)=p(j)+q(i);ERROR(i,j)= sort(i,j)-CI(i,j) );
MIN=@SUM(M:@sqr(ERROR));
@FOR(M(i,j): @FREE(ERROR) );
!@FOR(price:@gin(P));
!@FOR(safety:@gin(Q));
END
上面模型中的sort变量表示的就是按照这里新计算的效用函数得到的不同配置下 的产品的效用。 通过运行LINGO程序,可以看到,此时的效用函数的结果与前面得到的结果不同, 但仔细察看SORT的结果可以发现,不同配置产品之间的相对顺序仍然是保持的。 不过,小二乘法得到的产品的效用是一些带有小数的数,实际中使用不太方便。 如果希望得到整数解,只需要在模型中“END”语句前增加下面两行语句: @FOR(price:@gin(P)); @FOR(safety:@gin(Q)); 求解结果中,SORT(1,M)=SORT(0,L)=4,这两个配置没能分辨出来。
综合这些讨论,结论还是我们在基本模型中给出的结果比较令人满意。请读者思考 一下:基本模型中并没有要求决策变量取整数,为什么正好是整数?这是偶然的,还是 必然的?