Kluczowe wskaźniki

Na podstawie dostępnych danych utworzono zestaw 5 wskaźników, które posłużą realizacji postawionych problemów analitycznych, a w konsekwencji celom biznesowym:

  • Atrakcyjność okolicy
  • Utracona wartość turystyczna
  • Poziom konkurencyjności
  • Dostęp do komunikacji Następnie, wskaźniki te były uwzględniane w różnych metrykach służących wyborze optymalnego wariantu. Szczegółowy opis metod w 5.2 Metody wyboru wariantu optymalnego (KPI).

Atrakcyjność okolicy i utracona wartość turystyczna

Aby oszacować atrakcyjność turystyczną okolicy, posłużono się trzema czynnikami:

  • Odległość - od atrakcji, im większa odległość tym mniejsza wartość turystyczna, dokładniejszy opis funkcji w sekcji 5.3 Miary pomocnicze. Zakres wartości 0-1
  • Liczba ocena w Google Places - im więcej, tym lepiej. Natomiast w celu wyłączenia możliwości zdominowania mapy turystycznej przez jeden rodzaj atrakcji, uwzględniono tę wartość w logarytmie. Zakres wartości do 150 tys.
  • Średnia ocena w Google Places - wypadkowa ocen użytkowników Google. Zakres od 1-5
Pop Places - Attractiveness =
    VAR R = CALCULATE(AVERAGE(_popular_google[rating]))
    VAR N = CALCULATE(SUM(_popular_google[user_ratings_total]))
    VAR D_Factor = [Pop Places - Distance Attractivnes]
RETURN
    CALCULATE(
        R * LOG(N + 1) * D_Factor /40 *100      
        // +1 to avoid log(0); log to smoothen; /40 * 100 to normalize
    )

W przypadku utraconej atrakcyjności, zamieniany jest czynnik D_Factor poprzez prostą transformację odwrócenia wartości.

Pop Places - Lost Attractivnes =
    VAR R = CALCULATE(AVERAGE(_popular_google[rating]))
    VAR N = CALCULATE(SUM(_popular_google[user_ratings_total]))
    VAR D_Factor = [Pop Places - Distance Attractivnes]
RETURN
    CALCULATE(
        R * LOG(N + 1) * (1 - D_Factor) * -1 /40 *100
    )

Tak prezentuje się zastosowanie tej metryki na wybranym obszarze Krakowa:

Poziom konkurencyjności

Miara konkurencyjności służy do oceny wpływu pobliskich firm w określonym promieniu od wybranego punktu odniesienia (bazującego na szerokości i długości geograficznej) z uwzględnieniem ich wielkości oraz kategorii. Miara dostarcza znormalizowany wskaźnik w zakresie od -100 do 0, który odzwierciedla siłę wpływu otoczenia biznesowego.

Business within range - rank =
VAR LatRef = SELECTEDVALUE(Lat[Lat])
VAR LonRef = SELECTEDVALUE(Lon[Lon])
VAR Radius = SELECTEDVALUE(Distance[Distance])
 
-- Businesses within the radius
VAR CloseBusinesses =
    FILTER(
        _map_data,
        [Businesses - acceptable range] <= Radius
        && NOT (_map_data[Category] = "Inwestycja")
    )
 
 
-- Quartiles
VAR Q1 =
    CALCULATE(
        PERCENTILEX.INC(
            FILTER(_map_data, NOT (_map_data[Category] = "Inwestycja")),
            _map_data[Size],
            0.25
        )
    )
 
VAR Q3 =
    CALCULATE(
        PERCENTILEX.INC(
            FILTER(_map_data, NOT (_map_data[Category] = "Inwestycja")),
            _map_data[Size],
            0.75
        )
    )
 
  
 
-- Weight assignment
VAR WeightedImpact =
    SUMX(
        CloseBusinesses,
        SWITCH(
            TRUE(),
            _map_data[Size] <= Q1, _map_data[Size] * 0.5,     -- Q1: low
            _map_data[Size] <= Q3, _map_data[Size] * 1,       -- Q2Q3: medium
            _map_data[Size] > Q3,  _map_data[Size] * 1.5      -- Q4: high
        )
    )
 
  
 
-- Weighted sum
VAR TotalWeightedImpact =
    CALCULATE(
        SUMX(
            FILTER(_map_data, NOT (_map_data[Category] = "Inwestycja")),
            SWITCH(
                TRUE(),
                _map_data[Size] <= Q1, _map_data[Size] * 0.5,
                _map_data[Size] <= Q3, _map_data[Size] * 1,
                _map_data[Size] > Q3,  _map_data[Size] * 1.5
            )
        ),
        ALL(_map_data)
    )
 
  
-- Result
RETURN
    IF(
        COUNTROWS(CloseBusinesses) > 0,
        MIN(
            DIVIDE(WeightedImpact, TotalWeightedImpact, 0),
            1
        ),
        0
    ) * -100

Dostęp do komunikacji

Dostęp do komunikacji jest obliczany na podstawie odległości od najbliższego punktu drogi na mapie w linii prostej. Oznacza to, że pomijane są odległości wynikające z trasy prowadzącej do tych punktów, czy też miejsc w których można się włączyć do ruchu na takiej drodze. Wartości istotności danego rodzaju drogi zostały wybrane heurystycznie - najbardziej promowane są drogi główne, szybkiego ruchu oraz autostrady. Dalej tzw. drogi dojazdowe. Im rzadszy rodzaj drogi, tym większa tolerancja na dystans prowadzący do niej.

Highway - access =
VAR LatRef = SELECTEDVALUE(Lat[Lat])
VAR LonRef = SELECTEDVALUE(Lon[Lon])
 
 
-- Odległości do najbliższej drogi dla każdej kategorii
VAR Odleglosc_Autostrada =
    CALCULATE(
        MINX(
            FILTER(_osm_road, _osm_road[highway] = "motorway"),
            [Highway - nearest point]
        )
    )
 
 
VAR Odleglosc_Ekspresowa =
    CALCULATE(
        MINX(
            FILTER(_osm_road, _osm_road[highway] = "trunk"),
            [Highway - nearest point]
        )
    )
 
  
VAR Odleglosc_Glowna =
    CALCULATE(
        MINX(
            FILTER(_osm_road, _osm_road[highway] = "primary"),
            [Highway - nearest point]
        )
    )
  
 
VAR Odleglosc_Drugorzedna =
    CALCULATE(
        MINX(
            FILTER(_osm_road, _osm_road[highway] = "secondary"),
            [Highway - nearest point]
        )
    )
  
 
VAR Odleglosc_Trzeciorzedna =
    CALCULATE(
        MINX(
            FILTER(_osm_road, _osm_road[highway] = "tertiary"),
            [Highway - nearest point]
        )
    )
 
 
-- Ocena odległości według progów (threshold)
VAR Ocena_Autostrada =
    SWITCH(
        TRUE(),
        Odleglosc_Autostrada <= 1000, 1,
        Odleglosc_Autostrada <= 3000, 0.75,
        Odleglosc_Autostrada <= 5000, 0.5,
        0.25
    )
 
  
VAR Ocena_Ekspresowa =
    SWITCH(
        TRUE(),
        Odleglosc_Ekspresowa <= 1000, 1,
        Odleglosc_Ekspresowa <= 3000, 0.75,
        Odleglosc_Ekspresowa <= 5000, 0.5,
        0.25
    )
 
  
VAR Ocena_Glowna =
    SWITCH(
        TRUE(),
        Odleglosc_Glowna <= 1000, 1,
        Odleglosc_Glowna <= 2000, 0.75,
        Odleglosc_Glowna <= 3000, 0.5,
        0.25
    )
  
 
VAR Ocena_Drugorzedna =
    SWITCH(
        TRUE(),
        Odleglosc_Drugorzedna <= 500, 1,
        Odleglosc_Drugorzedna <= 750, 0.75,
        Odleglosc_Drugorzedna <= 1000, 0.5,
        0.25
    )
  
 
VAR Ocena_Trzeciorzedna =
    SWITCH(
        TRUE(),
        Odleglosc_Trzeciorzedna <= 100, 1,
        Odleglosc_Trzeciorzedna <= 750, 0.75,
        Odleglosc_Trzeciorzedna <= 1000, 0.5,
        0.25
    )
 
 
-- Końcowy wskaźnik dostępności komunikacyjnej
RETURN
    ((0.2 * Ocena_Autostrada) +
    (0.2 * Ocena_Ekspresowa) +
    (0.5 * Ocena_Glowna) +
    (0.05 * Ocena_Drugorzedna) +
    (0.01 * Ocena_Trzeciorzedna)) * 100