1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
* Тема: Совместный анализ в пакете SPSS. Пример анализа плана 2 x 2 с модулем Conjoint и без него.
* Ключевые слова: совместный анализ, коджойнт, conjoint, профиль, полезность, важность атрибутов.
* Авторы: Балабанов Антон (ННГУ), Владимир Караев (ЗАО Сибитек, г. Н.Новгород).
* Опубликован: 10.06.2008.
* Размещён: http://www.spsstools.ru/Syntax/Conjoint/Conjoint2By2Example.txt (.sps).
* Проверен: SPSS 15.0.1.1.

* Учебный пример оценки частных полезностей в совместном (conjoint) анализе в
  пакете SPSS стандартными средствами модуля SPSS Base и с привлечением
  функции CONJOINT дополнительного модуля SPSS Conjoint.

* Пример содержит упрощенную модель товара (автомобиль), состоящую из 2
  атрибутов (марка, цена) и двух уровней каждого атрибута (условные марки "R" и
  "H", цены: 32 0000 у.е. и 35 000 у.е.). Указанная модель допускает создание 4
  профилей, которые образуют ортогональный план минимального объёма,
  являющийся, в то же время, полным факторным планом.
* Общий случай   планирования экспериментов для проведения совместного анализа
  не разбирается.
* Дальнейший анализ результатов (прогноз рыночных долей, оценка ценовой
  эластичности и т.д.) не проводится.
* Синтаксис является приложением к методическому дополнению цикла статей авторов
  "Совместный анализ в практике исследования рынка" (журнал "Маркетинг в
  России и за рубежом", 2008 г.).
* См. страницу http://www.spsstools.ru/SampleSyntax.htm#Conjoint.
* В комментариях содержатся ссылки на номера СТРАНИЦ, ТАБЛИЦ и ФОРМУЛ в тексте
  http://analisi-dei-dati.narod.ru/ConjointSimple.pdf.


* 1. Установим рабочую директорию сессии SPSS (создайте указанную директорию,
либо укажите существующий путь).
CD 'D:\\conjoint\\'.

* 2. Создадим файл плана (ТАБЛ. 4) с перечнем профилей для опроса.

DATA LIST LIST /prof make price.
BEGIN DATA.
1 1 35000
2 1 32000
3 2 32000
4 2 35000
END DATA.

* Дадим пояснения к названиям переменных и меткам значений.
VAR LAB prof 'Номер профиля' /make 'Марка' /price 'Цена, у.е.'.
VAL LAB make
 1 'R'
 2 'H'.

* Выведем перечень профилей в таблицу (аналог ТАБЛ. 4) и сохраним файл плана.
SUMM prof make price /FORMAT VALIDLIST NOCASE /TITLE 'План опроса' /CELLS COUNT.
SAVE OUTFILE 'car_plan.sav'.



* 3. Создадим файл с результатами сымитированного опроса респондентов (ТАБЛ. 5).
* В переменной resp хранится номер респондента, переменные prof1-prof4 хранят
оценку респондента, данную им соответствующим профилям (из файла плана) по
шкале от 1 - "точно не куплю" до 10 - "точно куплю".
  
DATA LIST LIST /resp prof1 To prof4.
BEGIN DATA.
1 4 9 6 2
2 3 8 8 3
3 2 5 7 3
4 7 8 5 2
5 5 5 5 3
END DATA.

* Выведем ответы респондентов в таблицу (аналог ТАБЛ. 5) и сохраним файл данных.
SUMM resp prof1 To prof4 /FORMAT VALIDLIST NOCASE /TITLE 'Данные опроса' /CELLS COUNT .
SAVE OUTFILE 'car_data.sav'.

* Сопоставление средних значений оценок профилей по всем респондентам
  позволяет получить первое представление о совокупной полезности оценённых
  профилей: второй профиль можно признать более удачным с точки зрения
  покупателя, четвёртый - менее удачным.
DESCR prof1 To prof4.

* -----------------------------------------------------------------------------------------------.
* 4а. Оценка частных полезностей в модуле SPSS Base.
* Примеч.: данный раздел имеет целью полнее отразить этапы вычисления оценок
  частных полезностей в совместном анализе. Разобран наиболее простой пример.
* Для решения реальных задач удобнее пользоваться специальными средствами
  (например, модулем SPSS Conjoint, пример использования которого приведён в
  следующем разделе).
* -----------------------------------------------------------------------------------------------.


* Для оценки частных полезностей в процедуре SPSS REGRESSION необходимо
  представить исходные данные и файл плана в особом виде (см. СТР. 6-7). А именно, оценка
  каждого профиля каждым респондентом должна занимать отдельную строчку файла
  данных, кроме того, каждой оценке должна быть сопоставлена характеристика
  профиля. Осуществим такое представление данных, преобразовав и слив файл
  данных и файл плана.

* Загрузим файл данных опроса. 
GET FILE 'car_data.sav'.

* Преобразование данных от "широкого" к "узкому" формату. Каждый ответ - на
  отдельной строчке, переменная prof будет содержать номер профиля, переменная
  rate - оценку профиля респондентом.
VARSTOCASES
	/MAKE rate FROM prof1 prof2 prof3 prof4
	/INDEX prof(4)
	/KEEP resp.

* Присоединим к каждой оценке характеристики профиля.
SORT CASES BY prof.
MATCH FILES FILE *
	/TABLE 'car_plan.sav'
	/BY prof.
SORT CASES BY resp prof.

* Далее, для оценки частных полезностей в процедуре SPSS REGRESSION
  (множественная линейная регрессия) необходимо задать тем атрибутам,
  относительно которых предполагается дискретная функция полезности,
  соответствующую схему кодирования. Для атрибута "Марка" предполагается
  дискретная функция полезности, следовательно, зададим для него в новой
  переменной makex схему контрастного кодирования. Опционально можно ввести
  единичную константу const.
IF make=1 makex=1.
IF make=2 makex=-1.
COMPUTE const=1.


* Оценим модель для первого респондента (опция SELECT ограничивает
  массив данных строчками, которые относятся к первому респонденту).
* NB! Поскольку в данных присутствует единичная константа, следует заменить опцию
  по умолчанию NOORIGIN на опцию ORIGIN. В этом случае коэффициент перед
  переменной const будет обозначать константу регрессионного уравнения.
REGRESSION
  /SELECT resp EQ 1
  /STATISTICS COEFF
  /ORIGIN
  /DEPENDENT rate
  /METHOD ENTER const makex price.
* См. РИС. 2 и вектор b.
* Чтобы оценённые коэффициенты стали "частными полезностями", требуется их преобразование 
  по ФОРМУЛАМ 3 и 4 (здесь это не разбирается).

* Оценим модель для всех респондентов вместе.
REGRESSION
  /STATISTICS COEFF
  /ORIGIN
  /DEPENDENT rate
  /METHOD ENTER const makex price.
* После преобразований коэффициентов по ФОРМУЛАМ 3 и 4 результат аналогичен ТАБЛ. 6.

* Оценим модель для каждого респондента в отдельности, сохранив
  прогноз полезности (переоценку существующих профилей на основе оценённой
  модели), а также коэффициенты модели в отдельном файле.
SORT CASES BY resp.
SPLIT FILE BY resp.
REGRESSION
  /STATISTICS COEFF
  /ORIGIN
  /DEPENDENT rate
  /METHOD ENTER const makex price
  /SAVE PRED
  /OUTFILE COVB('car_coeff.sav').
SPLIT FILE OFF.
* После преобразований коэффициентов по ФОРМУЛАМ 3 и 4 результат аналогичен ТАБЛ. 6.
* Прогнозные значения в переменной PRE_1 аналогичны индивидуальным значениям из ТАБЛ. 8.

* Оценим важность атрибутов.
* Откроем файл с коэффициентами модели (оценёнными частными полезностями).
GET FILE='car_coeff.sav'.
* Удалим лишние строки, оставим только оценки коэффициентов модели.
SEL IF ROWTYPE_='EST'.

* Вычислим важность каждого из атрибутов (как абсолютную разность полезностей
их максимальных и минимальных значений).
* NB! Если вы внесёте изменения в файл плана, следует соответственно отразить
их и в формулах расчёта ниже.

COMPUTE imp_make=Abs(makex*1-makex*(-1)).
COMPUTE imp_price=Abs(price*35000 - price*32000).
* Вычислим совместную важность и важность атрибутов в процентах от совместной.
COMPUTE joint_imp=imp_make + imp_price.
COMPUTE imp_make_p= (imp_make / joint_imp) * 100.
COMPUTE imp_price_p= (imp_price / joint_imp) * 100.


* Выведем показатели важности в таблицу. Последняя строка (Mean) содержит
  усреднённые проценты важности, которые характеризуют выборку в целом.

SUMM resp imp_make imp_price joint_imp imp_make_p imp_price_p /FORMAT=VALIDLIST NOCASE TOTAL /TITLE 'План эксперимента' /CELLS=COUNT MEAN .

* Результат аналогичен ТАБЛ. 7.





* -----------------------------------------------------------------------------------------------.
* 4б. Оценка частных полезностей в модуле SPSS Conjoint.

* Примеч.: Модуль SPSS Conjoint приобретается отдельно от модуля Base. Список
  установленных на вашем компьютере модулей вы можете увидеть, запустив
  команду SHOW LIC:.
SHOW LIC.
* Если в списке модулей отсутствует запись "Conjoint", модуль не установлен и
  команда CONJOINT работать не будет.
* -----------------------------------------------------------------------------------------------.

* Загрузим файл с планом опроса. Для обработки файла командой CONJOINT номер
  профиля должен находиться в переменной CARD_.
GET FILE 'car_plan.sav'.
REN VARS (prof=CARD_).


CONJOINT PLAN *
	/DATA 'car_data.sav'
	/SCORE prof1 To prof4
	/FACTORS make (DISCRETE) price (LINEAR LESS)
	/SUBJECT resp
	/UTILITY 'car_util.sav'
	/PLOT SUMMARY.

* Будучи запущенной с такими параметрами, команда CONJOINT выведет оценки
  частных полезностей и важности каждого атрибута по каждому респонденту в
  отдельности, а также по всей выборке в целом, а также сохранит оценки во
  внешний файл.
* Результаты аналогичны ТАБЛ. 6 и 7.

* Файл "car_util.sav" содержит по каждому респонденту оценки частной
  полезности каждого уровня атрибута "Марка" и вектор полезности атрибута
  "Цена". Кроме того, он содержит переоценки полезностей четырёх профилей
  плана опроса на основе модели полезности:.
GET FILE 'car_util.sav'.

* Результаты аналогичны ТАБЛ. 6 и 8.