Полиномиальная логистика c регрессия растительного покрова в r (растровые данные) - PullRequest
0 голосов
/ 19 марта 2020

Я классифицировал растры изменения земного покрова в тематическом исследовании для (1970-1977, 1977-2000,2000-2008), изменения в земном покрове делятся на пять групп (я хочу предсказать вероятность изменения для 3 из них ). Я хочу предсказать изменение земного покрова, подгоняя регрессионную модель логистики c, используя две независимые переменные, которые являются расстоянием и LST (все они в растре). Я попытался подогнать регрессию logisti c между изменением площади земной поверхности от (1970-1977) и (LST, расстояние):

raster1970to1977=list.files("C:/My Data/phd/data/paper1/landcover_modeling/model_onevariable/1970-1977",pattern = "*.tif$",all.files=FALSE, full.names=TRUE,recursive=TRUE)

    #model variable
distancetra1970to1977 <- raster("distance1970.tif", values=TRUE)
transitiontra1970to1977<- raster("transition.tif",values=TRUE)
lst1970to1977<- raster("lst1970.tif",values=TRUE)

extend1970=extent(590318, 591223,6797968, 6799086)
resamplextend1970=raster(extend1970,nrow=390,ncol=250)

distance1970multi<-resample(distancetra1970to1977, resamplextend1970, method="ngb")
transition1970to1977multi<-resample(transitiontra1970to1977, resamplextend1970, method="ngb")
lst1970to1977multi<-resample(lst1970to1977, resamplextend1970, method="ngb")
r_dummymulti=layerize(transition1970to1977multi)
multi1970to1977=stack(distance1970multi,lst1970to1977multi,r_dummymulti)
vmulti<- data.frame(na.omit(values(multi1970to1977)))
vmulti$X1=as.factor(vmulti$X1)
vmulti$X2=as.factor(vmulti$X2)
vmulti$X3=as.factor(vmulti$X3)
vmulti$X4=as.factor(vmulti$X4)
vmulti$X5=as.factor(vmulti$X5)
str(vmulti)

# binomial 
mpp <- glm(vmulti$X2~vmulti$distance1970+vmulti$lst1970, family = binomial(link = "logit"), data=vmulti)
mpb <- glm(vmulti$X3~vmulti$distance1970+vmulti$lst1970, family = binomial(link = "logit"), data=vmulti)
mpf <- glm(vmulti$X5~vmulti$distance1970+vmulti$lst1970, family = binomial(link = "logit"), data=vmulti)

summary(mpf)$coef
summary(mpb)$coef
summary(mpp)$coef

после подгонки модели я сложил два растра независимых переменных для следующего шага времени использовать стек в качестве предикторов для прогнозирования изменения земного покрова:

 #predictors
    predictors1977=list.files("C:/My Data/phd/data/paper1/landcover_modeling/model_onevariable/1970-1977/predictors/1977",pattern = "*.tif$",all.files=FALSE, full.names=TRUE,recursive=TRUE)
    p1977dis <- raster("1977_2000.tif", values=TRUE)
    p1977lst<- raster("lst1977.tif",values=TRUE)
    p1977disre<-resample(p1977dis, resamplextend1970, method="ngb")
    p1977lstre<-resample(p1977lst, resamplextend1970, method="ngb")
    pred1977=stack(p1977disre,p1977lstre)
    names(pred1977) <- c("distance1970", "lst1970")
    prediction = raster::predict(model=mpb, object=pred1977, type="response")

Я сталкиваюсь с этой ошибкой: Ошибка в p [-naind,] <- predv: количество заменяемых элементов не кратно замене длина Дополнительно: предупреждающее сообщение: «newdata» имеет 14678 строк, но найденные переменные имеют 60554 строк </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...