首页 > 解决方案 > 每个光栅像素的线性回归以预测未来月份(R语言)

问题描述

我已成功运行此代码。我读过它:

无法在 R 中有趣地计算光栅堆栈上的逐像素回归

library(raster)

# Example data
r <- raster(nrow=15, ncol=10)
set.seed(0) 

# Now I make 6 raster (1 raster/months), then assign each pixel's value randomly
s <- stack(lapply(1:6, function(i) setValues(r, rnorm(ncell(r), i, 3))))
names(s) <- paste0('Month', c(1,2,3,4,5,6))

# Extract each pixel values 
x <- values(s)

# Model with linreg
m <- lm(Month6 ~ ., data=data.frame(x))

# Prediction raster
p <- predict(s, m)

如果您运行该代码,则 p 将是一个栅格。但是,我还是一头雾水。以后怎么做光栅?例如,我想要基于 6 个先前栅格的“Month8”栅格?

我的意思是,每个像素都有不同的 linreg 方程(其中 X=Month1,...,Months6)。如果我输入 X=Month8,我将在第 8 个月有 150 个 Y 像元,它们代表光栅的每个像素。

我做了什么

# Lets try make a data frame for clear insight for my data
x <- values(s)
DF <- data.frame(x)

# Make X as month, and y is target.
library(data.table)
DF_T <- transpose(DF)
Month <- seq(1,nrow(DF_T))
DF_T <- cbind(Month, DF_T)

# Make prediction for first pixel
V1_lr <- lm(V1 ~ Month, data=DF_T)

# prediction for 8th Months in a pixel
V1_p <- predict(V1_lr, data.frame(Month=8))
V1_p

这只是一个像素。我想要 'Month8' 的整个栅格

标签: rloopslinear-regressionraster

解决方案


推荐阅读