Степени свободы модели GTWR в R

Разница между GWR, TWR и GTWR решается lamda в исследовании. https://www.tandfonline.com/doi/full/10.1080/13658810802672469

Если lamda=0, модель TWR, если lamda=1, модель - GWR, и 0<lamda<1 это GTWR.

Я достиг GWmodel пакет в R и вычислил Effective degrees of freedom в .

Мой набор данных одинаков в трех моделях (6312 выборок с 263 пространственными единицами и 24 часами), но (Эффективные степени свободы) имеют большую разницу при разных настройках ламд. Когда lamda=0 or lamda=1, примерно соответствует количеству отсчетов (6052 и 6090 соответственно), но когда edf намного больше, чем другие, достигают 2820246, а enp(эффективное количество параметров) отрицательно. Есть ошибки? Почему это происходит?

Модель TWR:

      library(GWmodel)
library(sp)

#import datasets
impact_factor <- read.table(file="data+acc/wkfinal_acc.csv",header = TRUE, sep=',')

#import distance matrix
ed_distance <- read.table(file = "ed_matrix.csv",header = TRUE, sep=',')
ed_distance <- ed_distance[,-1]

#datasets to sp dataframe
map = SpatialPointsDataFrame(data = impact_factor, 
                             coords=cbind(X=impact_factor$lon,Y=impact_factor$lat))

#time series
time <- as.numeric(impact_factor$time)

#time distance
uts.obv <- get.ts(time)
uts.obv <- uts.obv[[1]]
t.dMat <- ti.distm(uts.obv, units='hours')

#spatial coordinates
space_coords<- cbind(map$lon,map$lat)

#calculate spatial-temporal distance matrix
ed_stdis <- st.dist(dp.locat = space_coords, obs.tv = time, 
                    lamda = 0, t.units = "hours",
                    s.dMat = ed_distance, t.dMat = t.dMat)

#calculate bandwidth
ed_bandwidth <- bw.gtwr(num~public+leisure+shopping+tourism+education+health+accomodation+worship+
                          taxi+bus+railway+parking+bike+other+
                          road+signal+railway_network+
                          landuse+transport+bus_acc+wk_acc,
                        data = map,
                        obs.tv= time,
                        approach="CV", 
                        kernel='gaussian',
                        lamda = 0,
                        st.dMat = ed_stdis)

#twr model
twr_result <- gtwr(num~public+leisure+shopping+tourism+education+health+accomodation+worship+
                         taxi+bus+railway+parking+bike+other+
                         road+signal+railway_network+
                         landuse+transport+bus_acc+wk_acc,
                       data=map,
                       obs.tv= time, 
                       st.bw=ed_bandwidth, 
                       kernel='gaussian',
                       lamda = 0,
                       st.dMat = ed_stdis)

в twr_result:

      > twr_result[["GTW.diagnostic"]]
$RSS.gw
         [,1]
[1,] 41422998

$AIC
         [,1]
[1,] 73570.17

$AICc
         [,1]
[1,] 73763.41

$enp
[1] 222.0231

$edf
[1] 6089.977

$gw.R2
          [,1]
[1,] 0.7070079

$gwR2.adj
          [,1]
[1,] 0.6963244

Единственная разница lamda=0.5 в GTWR. GTW.diagnostic в gtwr_result:

      > gtwr_result[["GTW.diagnostic"]]
$RSS.gw
        [,1]
[1,] 1470040

$AIC
         [,1]
[1,] 53850.09

$AICc
         [,1]
[1,] 56371.62

$enp
[1] -2813934

$edf
[1] 2820246

$gw.R2
          [,1]
[1,] 0.9896021

$gwR2.adj
          [,1]
[1,] 0.9999767

0 ответов

Другие вопросы по тегам