57 lines
1.9 KiB
R
57 lines
1.9 KiB
R
|
MobilityFeatures <-
|
||
|
function(locations_df,
|
||
|
ACCURACY_LIM=51, ### meters GPS accuracy
|
||
|
ITRVL=10, ### seconds (data concatenation)
|
||
|
nreps=1, ### simulate missing data numer of times
|
||
|
tz="", ### time zone of data, defaults to current time zone
|
||
|
CENTERRAD=200, ### meters radius from significant locations considered
|
||
|
wtype="GLR",
|
||
|
spread_pars=c(10,1),
|
||
|
minpausedur=300,
|
||
|
minpausedist=60,
|
||
|
rad_fp=NULL,
|
||
|
wid_fp=NULL
|
||
|
){
|
||
|
mobmatmiss=GPS2MobMat(locations_df,itrvl=ITRVL,accuracylim=ACCURACY_LIM,r=rad_fp,w=wid_fp)
|
||
|
mobmat = GuessPause(mobmatmiss,mindur=minpausedur,r=minpausedist)
|
||
|
obj=InitializeParams(mobmat)
|
||
|
qOKmsg=MobmatQualityOK(mobmat,obj)
|
||
|
if(qOKmsg!=""){
|
||
|
cat(qOKmsg,"\n")
|
||
|
return(NULL)
|
||
|
}
|
||
|
lsmf = list()
|
||
|
lssigloc = list()
|
||
|
for(repnum in 1:nreps){
|
||
|
if(repnum==1){
|
||
|
cat("Sim #: 1")
|
||
|
}else if(repnum<=nreps-1){
|
||
|
cat(paste(" ",repnum,sep=""))
|
||
|
}else{
|
||
|
cat(paste(" ",nreps,"\n",sep=""))
|
||
|
}
|
||
|
out3=SimulateMobilityGaps(mobmat,obj,wtype,spread_pars)
|
||
|
IDundef=which(out3[,1]==3)
|
||
|
if(length(IDundef)>0){
|
||
|
out3=out3[-IDundef,]
|
||
|
}
|
||
|
obj3=InitializeParams(out3)
|
||
|
out_GMFM=GetMobilityFeaturesMat(out3,obj3,mobmatmiss,tz,CENTERRAD,ITRVL)
|
||
|
lsmf[[repnum]]=out_GMFM[[1]]
|
||
|
lssigloc[[repnum]]=out_GMFM[[2]]
|
||
|
}
|
||
|
cat("\n\n")
|
||
|
if(length(lsmf)!=0){
|
||
|
featavg = lsmf[[1]]
|
||
|
if(nreps>1){
|
||
|
for(i in 2:nreps){
|
||
|
featavg=featavg+lsmf[[i]]
|
||
|
}
|
||
|
featavg=featavg/nreps
|
||
|
}
|
||
|
}else{
|
||
|
featavg=NULL
|
||
|
}
|
||
|
return(list('mobmat'=mobmat,'mobmatmiss'=mobmatmiss,'featsims'=lsmf,'siglocsims'=lssigloc,'featavg'=featavg))
|
||
|
}
|