ehengirmen / rSDI

GNU General Public License v3.0
0 stars 0 forks source link

SDI fonsiyonu uzaklık hesaplaması #2

Closed mucahitzor closed 9 months ago

mucahitzor commented 10 months ago

load_SDI_data(flows.file.path, nodes.file.path, directed=TRUE)

fonksiyonundan sağlancak igraph objesinde nodeslardan gelecek objede konum bilgileri

hesaplaması yapılacak şekilde düzenlenecek ( SDI fonsksiyonunda)

mucahitzor commented 10 months ago

Bu entegrasyonu SDI fonksiyonunu kaybetmemek için SDI fonksiyonu üzerinde yapmadım. SDI fonksiyonunu SDI_MODIFIED adlı bir fonksiyon olarak kopyaladım ve onun içerisinde distance calculatinı koydum. Doğru çalıştığını teyit etmek için 1. yöntemde önce distanceları igraph objesini SDI fonksiyonuna koymadan hesaplıyorum, edge olarak kaydediyorum, SDI fonksiyonuna verince ig objesini elde ettiğim sonuç ile ig nesnesini (distance içermeyen) SDI_MODIFIED fonksiyonuna direkt koyduğum sonuç eşleşiyor.

Bu fonksiyon üzerinde testler yapacağım.

devtools::load_all()
require(igraph)
require(dplyr)

iedges <- TurkiyeMigration.flows
ivertices <- TurkiyeMigration.nodes

# convert to igraph object
ig <- graph_from_data_frame(iedges, directed = T, vertices = ivertices)
ig1 <- graph_from_data_frame(iedges, directed = T, vertices = ivertices)

# 1.yöntem: SDI a gelmeden önce hesaplama
E(ig)$distance <- dist_calc(ig)
SDI(ig)

# 2. yöntem: SDI fonksiyonu içerisinde hesaplama
SDI_MODIFIED(ig1, distance.calculation = 'Haversine')
mucahitzor commented 10 months ago

??

Bunun yerine load_SDI_data fonksiyonuna eklersek distance calculationı bu sorun ortadan kalkıyor.

Ya da SDI fonksiyonu içerisinde kullanılan fonksiyonları kullancıya tekil olarak kullanıma sunmayacağız. Sadece SDI içerisinden hesaplama yapmak durumunda kalacak. ancak bu durumda SDI fonksiyonu içerisinde hesaplanmayan weigtedSingleVertexSDI ve unweightedSingleVertexSDI fonksiyonları için içeride tekrar distance hesaplamanması gerekiyor. Bunları da SDI fonksiyonu içerisine bir argümanla yedirebiliriz.

devtools::load_all()
require(igraph)
require(dplyr)

iedges <- TurkiyeMigration.flows
ivertices <- TurkiyeMigration.nodes

names(ivertices) 
# convert to igraph object
ig <- graph_from_data_frame(iedges, directed = T, vertices = ivertices)
ig1 <- graph_from_data_frame(iedges, directed = T, vertices = ivertices)

# 1.yöntem: SDI a gelmeden önce hesaplama
E(ig)$distance <- dist_calc(ig)
SDI(ig, level = 'vertex', variant = 'unweighted')

# 2. yöntem: SDI fonksiyonu içerisinde hesaplama
SDI_MODIFIED(ig1, distance.calculation = 'Haversine', level = 'vertex', variant = 'unweighted')

unweightedAllVerticesSDI(ig) 
unweightedAllVerticesSDI(ig1) # yanlış hesap