【问题标题】:How to extract regression coefficients from rasterstack in R?如何从R中的rasterstack中提取回归系数?
【发布时间】:2013-11-12 22:05:32
【问题描述】:

我正在尝试将正弦曲线拟合到数据集并导出系数。由于这是我第一次处理 rasterstack,我不确定如何打印系数。是否可以用栅格层来表示系数?

library(raster)
r <- raster(nrow=5, ncol=5) 
s <- stack( sapply(1:20, function(i) setValues(r, rnorm(ncell(r), i, 3) )) ) 
s[1] <- NA 

time <- 1:nlayers(s) 

fun1 <- function(x) {
if (is.na(x[1])) {
NA
} else {
xcost<-cos(2*pi*time/24)
xsine<-sin(2*pi*time/24)
m = lm(x~xcost+xsine)
m$coefficients[2]
}
}

e1 <- calc(s, fun1)

提前致谢。

【问题讨论】:

    标签: r raster r-raster


    【解决方案1】:
    > e1[1,1]
    
    NA 
    > e1[1,2]
    
    -1.810707 
    > as.matrix(e1)
               [,1]      [,2]      [,3]      [,4]       [,5]
    [1,]         NA -1.810707 -1.619409 -1.862829 -0.8928249
    [2,] -4.4466952 -2.763915 -1.095858 -1.513916 -3.2462229
    [3,] -0.5758164 -5.258762 -3.567696 -3.051799 -2.6290404
    [4,] -2.9026886 -3.929019 -1.832168 -1.308834 -3.4590392
    [5,] -3.6900736 -1.223912 -4.581699 -2.188620 -3.8804321
    

    【讨论】:

    • @Sofea 请注意,这只会得到第二个系数,即与余弦项相关的系数。这不是因为答案有什么问题,只是您只在函数中返回了余弦项。
    • 我认为 Sofea 知道这一点,因为该函数旨在仅返回第二个(总共三个)系数。
    • 非常感谢@DWin 的回答。我从来不知道 as.matrix(e1) 实际上类似于 e1[]。为了绘制它,我使用了 plot(e1)。正如 nograpes 指出的那样,这仅适用于余弦项。我怎样才能产生所有三个系数?是否可以对拟合进行总结, xcosttime/24) xsinetime/24) m
    猜你喜欢
    • 2019-08-08
    • 2018-05-03
    • 1970-01-01
    • 2012-02-19
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    相关资源
    最近更新 更多