conjoint R – pakiet oprogramowania statystycznego dla programu GNU R. Zawiera implementację tradycyjnej metody conjoint analysis. Jest napisany w języku programowania R jako rozwinięcie (moduł) popularnego oprogramowania statystycznego w postaci programu GNU R, współpracuje także z programami dedykowanymi dla środowiska R takimi jak: RStudio oraz Microsoft R Application Network.

Pakiet conjoint obejmuje zbiór funkcji, które umożliwiają analizę preferencji wyrażonych na podstawie danych empirycznych reprezentujących oceny konsumentów profilów produktów lub usług (tzw. użyteczności całkowite, użyteczności empiryczne). Użyteczności całkowite są przedmiotem dekompozycji na tzw. użyteczności cząstkowe, które w dalszej analizie wykorzystywane są do określenia ważności produktu lub usługi, zdefiniowania produktu o optymalnych cechach, wyodrębnienia segmentów nabywców o zbliżonych preferencjach, itp. Dekompozycja jest przeprowadzana na podstawie modelu regresji wielorakiej ze zmiennymi sztucznymi (funkcja lm z pakietu stats [R Core Team 2018]). W szczególności, pakiet conjoint programu GNU R umożliwia: estymację parametrów modelu conjoint analysis (użyteczności cząstkowych) w przekroju respondentów (modele indywidualne) i całej próby (model zagregowany), estymację ważności atrybutów (cech opisujących profile produktów lub usług), estymację teoretycznych użyteczności całkowitych profilów produktów lub usług, szacowanie udziału w rynku profilów symulacyjnych, segmentację respondentów.

W pakiecie dostępne są również funkcje generujące pełny i cząstkowy (w tym ortogonalny i efektywny) układ czynnikowy niezbędny do przygotowania odpowiedniego kwestionariusza ankietowego, który jest narzędziem gromadzenia danych o preferencjach wyrażonych respondentów z wykorzystaniem metody conjoint analysis.

Kod źródłowy pakietu conjoint opublikowany jest na zasadach licencji GNU GPL. Dostępne są wersje binarne dla systemów Windows, Macintosh oraz systemów uniksowych (w tym systemu Linux, który jest naturalnym środowiskiem projektu GNU R).

mały|550px|Rys. 1. Wykres miesięcznej liczby pobrań pakietu conjoint przez użytkowników programu RStudio

Wymagania Poprawne działanie pakietu conjoint wymaga zainstalowania wersji bazowej programu GNU R oraz dodatkowych pakietów (m.in. AlgDesign [Wheeler 2015] i innych), które począwszy od wersji 3.3.2 programu GNU R są pobierane i instalowane automatycznie wraz z pakietem conjoint. Pakiet można pobrać oraz zainstalować ze strony internetowej repozytorium CRAN R (CRAN.R-project.org) oraz strony WWW Katedry Ekonometrii i Informatyki Uniwersytetu Ekonomicznego we Wrocławiu (keii.ue.wroc.pl). Łączna liczba instalacji pakietu conjoint (stan na 21 czerwca 2018) przez użytkowników programu RStudio przekroczyła 35000 pobrań (statystyka nie uwzględnia użytkowników korzystających z innych wersji programów dla R, w tym przede wszystkim oryginalnej wersji środowiska R). Miesięczną liczbę pobrań pakietu conjoint oszacowaną z wykorzystaniem pakietu dlstats [Yu 2017] oraz zaprezentowaną na wykresie za pomocą pakietu ggplot2 [Wickham i in. 2018] (odpowiedni kod R poniżej) przedstawia rys. 1.

library("ggplot2") library("dlstats") x<-cran_stats("conjoint") ggplot(x,aes(end,downloads,group=package,color=package))+geom_line() + geom_point(aes(shape=package))+scale_x_date(date_breaks="1 year",date_labels="%Y")

Historia i wersje Pierwsza wersja pakietu conjoint na serwerze CRAN pojawiła się 2 października 2011 roku. Pakiet może być zainstalowany na komputerze z procesorem 32-bitowym lub 64-bitowym. Funkcjonalność pakietu jest taka sama w obu przypadkach, z wyłączeniem cząstkowych układów czynnikowych. W systemach 32-bitowych istnieje możliwość otrzymania innego cząstkowego układ czynnikowego niż w przypadku systemów 64-bitowych (wynika to z uwarunkowań numerycznych dotyczących długości słowa maszynowego i jego wpływu na ziarno generatora liczb pseudolosowych, które jest wykorzystywane w procedurze generowania układów cząstkowych). Zaprezentowane w artykule przykłady zostały opracowane z wykorzystaniem procesorów 64-bitowych pracujących pod kontrolą systemu operacyjnego Windows 10.

Funkcje pakietu W wersji bieżącej pakietu conjoint (1.41) oferowanych jest 16 funkcji, które umożliwiają: estymację parametrów modelu conjoint analysis oraz segmentację respondentów (funkcje: caModel, caSegmentation), estymację teoretycznych użyteczności cząstkowych i użyteczności całkowitych w przekroju respondentów (funkcje: caPartUtilities, caTotalUtilities), szacowanie ważności atrybutów oraz użyteczności cząstkowych poziomów atrybutów na poziomie zagregowanym (funkcje: caImportance, caUtilities), a także – w ramach analizy symulacyjnej – szacowanie udziału w rynku profilów symulacyjnych (funkcje: caBTL, caLogit, caMaxUtility). Do funkcji specjalnego przeznaczenia zaliczyć należy funkcję konwertującą zbiór danych o preferencjach empirycznych (funkcja caRankToScore) oraz funkcje umożliwiające uzyskanie zbiorczych wyników wybranych pomiarów oraz symulacji (funkcje: Conjoint, ShowAllSimulations oraz ShowAllUtilities). Ponadto, w pakiecie dostępne są narzędzia wspomagające projektowanie badania ankietowego tj. konstrukcję odpowiednich układów czynnikowych, w szczególności umożliwiające redukcję pełnego zbioru profilów do postaci układów cząstkowych (ortogonalnych i efektywnych). Pakiet conjoint wykorzystuje w tym celu funkcje pakietu AlgDesign [Wheeler 2015] programu GNU R. Zastosowanie funkcji pakietu AlgDesign w pakiecie conjoint realizowane jest w postaci funkcji, które umożliwiają generowanie ortogonalnych i efektywnych cząstkowych układów czynnikowych oraz ich kodowanie za pomocą zmiennych sztucznych (funkcje: caFactorialDesign, caEncodedDesign oraz caRecreatedDesign). Do wygenerowania odpowiedniego układu czynnikowego (pełnego i cząstkowego) wystarczające są dane dotyczące liczby branych pod uwagę atrybutów (zmiennych, cech, czynników) oraz ich poziomów (realizacji, wartości, obserwacji) oraz nazw atrybutów i poziomów. Szczegółowa charakterystyka wszystkich dostępnych funkcji dostępna jest w oficjalnej dokumentacji pakietu conjoint programu R oraz na innych nieoficjalnych stronach internetowych,,, prezentujących zastosowanie pakietu. W tabeli zestawiono zwięzły opis przeznaczenia funkcji pakietu conjoint.

Generowanie układów czynnikowych oraz konwersja danych caFactorialDesign(data, type="null", cards=NA, seed=123) – funkcja wyznacza (pełny lub cząstkowy) układ czynnikowy z zachowaniem nazw zmiennych oraz ich poziomów caEncodedDesign(design) – funkcja koduje układ czynnikowy uzyskany za pomocą funkcji caFactorialDesign na potrzeby działania modułu conjoint caRecreatedDesign(attr.names, lev.numbers, z, prof.numbers) – funkcja odtwarza cząstkowy układ czynnikowy na podstawie numerów profilów z pełnego układu czynnikowego caRankToScore(y.rank) – funkcja przekształca dane o preferencjach empirycznych mierzonych na skali rang w zbiór danych w postaci ocen punktowych (na skali pozycyjnej) Szacowanie indywidualnych użyteczności cząstkowych oraz teoretycznych użyteczności całkowitych (w przekroju respondentów) caPartUtilities(y, x, z) – funkcja oblicza macierz użyteczności cząstkowych poziomów atrybutów w przekroju respondentów (wraz z wyrazem wolnym) caTotalUtilities(y, x) – funkcja oblicza macierz teoretycznych użyteczności całkowitych profilów w przekroju respondentów Szacowanie użyteczności cząstkowych poziomów atrybutów (na poziomie zagregowanym) oraz pomiar ważności atrybutów caUtilities(y, x, z) – funkcja oblicza użyteczności cząstkowe poziomów atrybutów na poziomie zagregowanym caImportance(y, x) – funkcja oblicza przeciętną relatywną „ważność” wszystkich atrybutów (w ujęciu procentowym) na poziomie zagregowanym Analiza symulacyjna udziałów w rynku caBTL(sym, y, x) – funkcja szacuje udziały w rynku profilów symulacyjnych na podstawie modelu probabilistycznego BTL (Bradleya-Terry’ego-Luce’a) caLogit(sym, y, x) – funkcja szacuje udziały w rynku profilów symulacyjnych na podstawie modelu logitowego caMaxUtility(sym, y, x) – funkcja szacuje udziały w rynku profilów symulacyjnych na podstawie modelu maksymalnej użyteczności Estymacja parametrów modelu conjoint analysis oraz segmentacja respondentów caModel(y, x) – funkcja szacuje parametry modelu conjoint analysis dla pojedynczego respondenta caSegmentation(y, x, c=2) – funkcja przeprowadza segmentację respondentów metodą k-średnich za pomocą funkcji kmeans() Główne wyniki conjoint analysis i analizy symulacyjnej Conjoint(y, x, z, y.type=”score”) – funkcja oblicza podstawowe wyniki conjoint analysis na poziomie zagregowanym ShowAllUtilities(y, x, z) – funkcja oblicza wszystkie dostępne w pakiecie conjoint użyteczności (cząstkowe oraz całkowite) ShowAllSimulations(sym, y, x) – funkcja szacuje udziały profilów symulacyjnych w rynku na podstawie wszystkich dostępnych w pakiecie modeli symulacyjnych Argumenty funkcji data dane opisujące przedmiot eksperymentu (produkt, usługę) – zbiór atrybutów (czynników) oraz ich poziomów w postaci funkcji expand.grid type parametr opcjonalny określający rodzaj generowanego układu czynnikowego (domyślnie type="null" – generowany jest układ cząstkowy bez określonych kryteriów) cards parametr opcjonalny określający liczbę generowanych profilów (domyślnie cards=NA – liczba profilów wynika z rodzaju generowanego układu czynnikowego) seed parametr opcjonalny określający wartość ziarna generatora liczb pseudolosowych (domyślnie seed=123) design układ eksperymentu czynnikowego (cząstkowy lub pełny) attr.names wektor reprezentujący nazwy atrybutów (czynników) lev.numbers wektor reprezentujący liczby poziomów atrybutów (czynników) prof.numbers wektor reprezentujący numery odtwarzanych profilów z wektor reprezentujący nazwy poziomów atrybutów (czynników) y.rank macierz (wektor) preferencji empirycznych w postaci rankingowej (dane rankingowe wymagają przekształcenia na dane ratingowe za pomocą funkcji caRankToScore) y macierz (wektor) preferencji empirycznych (w postaci ocen ważności na skali ratingowej lub rankingowej) x macierz reprezentująca profile (wraz z nazwami atrybutów) y.type typ danych o preferencjach – dane w postaci ocen ważności profilów na skali ratingowej lub rankingowej (domyślnie przyjęty jest rating) sym macierz reprezentująca profile symulacyjne (wraz z nazwami atrybutów) c parametr opcjonalny określający liczbę segmentów (domyślnie c=2 – podział na 2 segmenty)

Zbiory danych W wersji 1.41 pakietu znajduje się 9 zbiorów danych, które umożliwiają prezentację działania poszczególnych funkcji pakietu conjoint. W każdym ze zbiorów zawarte są przykładowe dane opisujące: preferencje respondentów (w postaci macierzy i/lub wektora danych), układ badania w postaci cząstkowego układu eksperymentu (w postaci macierzy danych) oraz nazwy poziomów poszczególnych zmiennych (w postaci wektora danych). W niektórych zbiorach danych znajduje się dodatkowo układ badania z profilami symulacyjnymi (w postaci macierzy danych), który umożliwia analizę udziału w rynku profilów (produktów lub usług), które pierwotnie nie zostały uwzględnione w cząstkowych układzie eksperymentu. Szczegółowa charakterystyka wszystkich zbiorów danych dostępna jest w oficjalnej dokumentacji pakietu conjoint programu R. W tabeli zestawiono zwięzły opis zawartości wybranych zbiorów danych pakietu conjoint.