Степени свободы модели 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