An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20121126/a5b57d98/attachment.pl>
calculate CRPS on rasters
7 messages · Etienne B. Racine, Robert J. Hijmans, Lorenzo Alfieri
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20121126/a6b3e187/attachment.pl>
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20121127/b5dee191/attachment.pl>
1 day later
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20121128/2ef36024/attachment.pl>
Hi Robert, I was hoping to use the overlay function too, but it seems it doesn't work in this case. See the result: CRPS? <- overlay(obs, pred, fun=function(x,y) crps(x,y)$crps) Error in function (x, fun, filename = "", recycle = TRUE, ...)? : ? cannot use this formula, probably because it is not vectorized Lorenzo Date: Wed, 28 Nov 2012 11:25:36 -0800 Subject: Re: [R-sig-Geo] calculate CRPS on rasters From: r.hijmans at gmail.com To: alfios17 at hotmail.com CC: etiennebr at gmail.com; r-sig-geo at r-project.org Lorenzo, Given that solution, I think you can also express this?(in a memory-safe fashion)?like this : CRPS??<- overlay(obs, pred, fun=function(x,y) crps(x, y)$crps) Robert
On Tue, Nov 27, 2012 at 3:11 AM, Lorenzo Alfieri <alfios17 at hotmail.com> wrote:
Etienne,
thank you for the tip
Now it runs trough, by using
CRPS <- raster(ncol=10, nrow=10)
CRPS[] <- crps(obs[],pred[])$crps
Lorenzo
Date: Mon, 26 Nov 2012 21:37:13 -0500
Subject: Re: [R-sig-Geo] calculate CRPS on rasters
From: etiennebr at gmail.com
To: alfios17 at hotmail.com
CC: r-sig-geo at r-project.org
Lorenzo,
I don't know about your specific function, but you can access matrix using the []'s. So maybe something like :
CRPS <- raster(ncol=10, nrow=10)
CRPS[] <- crps(obs[],pred[])
Etienne
2012/11/26 Lorenzo Alfieri <alfios17 at hotmail.com>
CRPS <- raster(ncol=10, nrow=10)
for (i in 1:length(obs)){
? CRPS[i] <- crps(obs[i],pred[i])$CRPS
? ? ? ? [[alternative HTML version deleted]]
_______________________________________________
R-sig-Geo mailing list
R-sig-Geo at r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20121129/3d307c7c/attachment.pl>
Robert, you're right, it works. I must have done something wrong yesterday I'm trying to optimize the computation time I've tested the two alternatives on a predictor of 51 layers of 680x810 pixels CRPS[] <- crps(obs[],pred[])$crps ? ? ? ? ? ? ? ? took 0.98 second CRPS <- overlay(obs, pred, fun=function(x,y) crps(x,y)$crps)????????? took 1.45 seconds anyway, thank you all! Lorenzo ________________________________
Date: Thu, 29 Nov 2012 10:34:36 -0800 Subject: Re: [R-sig-Geo] calculate CRPS on rasters From: r.hijmans at gmail.com To: alfios17 at hotmail.com CC: r-sig-geo at r-project.org Lorenzo, The below (your example) works for me, using the overlay as I suggested. Perhaps you did not load the verification package? Robert library(verification) #includes function crps library(raster) set.seed(1) r <- raster(ncol=10, nrow=10) pred1 <- init(r, fun=runif) pred2 <- init(r, fun=runif) pred3 <- init(r, fun=runif) pred <- stack(pred1, pred2, pred3) obs <- init(r, fun=runif) CRPS <- overlay(obs, pred, fun=function(x,y) crps(x,y)$crps)
> CRPS
class : RasterLayer
dimensions : 10, 10, 100 (nrow, ncol, ncell)
resolution : 36, 18 (x, y)
extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84
data source : in memory
names : layer
values : 0.003277372, 0.7726679 (min, max)
# More fancy, to get all the crps output:
x <- overlay(obs, pred, fun=function(x,y) as.matrix(data.frame(crps(x,y))))
On Thu, Nov 29, 2012 at 1:15 AM, Lorenzo Alfieri
<alfios17 at hotmail.com<mailto:alfios17 at hotmail.com>> wrote:
Hi Robert,
I was hoping to use the overlay function too, but it seems it doesn't
work in this case. See the result:
CRPS <- overlay(obs, pred, fun=function(x,y) crps(x,y)$crps)
Error in function (x, fun, filename = "", recycle = TRUE, ...) :
cannot use this formula, probably because it is not vectorized
Lorenzo
Date: Wed, 28 Nov 2012 11:25:36 -0800
Subject: Re: [R-sig-Geo] calculate CRPS on rasters
From: r.hijmans at gmail.com<mailto:r.hijmans at gmail.com>
To: alfios17 at hotmail.com<mailto:alfios17 at hotmail.com>
CC: etiennebr at gmail.com<mailto:etiennebr at gmail.com>;
r-sig-geo at r-project.org<mailto:r-sig-geo at r-project.org>
Lorenzo,
Given that solution, I think you can also express this (in a
memory-safe fashion) like this :
CRPS <- overlay(obs, pred, fun=function(x,y) crps(x, y)$crps)
Robert
On Tue, Nov 27, 2012 at 3:11 AM, Lorenzo Alfieri
<alfios17 at hotmail.com<mailto:alfios17 at hotmail.com>> wrote:
Etienne,
thank you for the tip
Now it runs trough, by using
CRPS <- raster(ncol=10, nrow=10)
CRPS[] <- crps(obs[],pred[])$crps
Lorenzo
Date: Mon, 26 Nov 2012 21:37:13 -0500
Subject: Re: [R-sig-Geo] calculate CRPS on rasters
From: etiennebr at gmail.com<mailto:etiennebr at gmail.com>
To: alfios17 at hotmail.com<mailto:alfios17 at hotmail.com>
CC: r-sig-geo at r-project.org<mailto:r-sig-geo at r-project.org>
Lorenzo,
I don't know about your specific function, but you can access matrix
using the []'s. So maybe something like :
CRPS <- raster(ncol=10, nrow=10)
CRPS[] <- crps(obs[],pred[])
Etienne
2012/11/26 Lorenzo Alfieri
<alfios17 at hotmail.com<mailto:alfios17 at hotmail.com>>
CRPS <- raster(ncol=10, nrow=10)
for (i in 1:length(obs)){
CRPS[i] <- crps(obs[i],pred[i])$CRPS
[[alternative HTML version deleted]]
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at r-project.org<mailto:R-sig-Geo at r-project.org> https://stat.ethz.ch/mailman/listinfo/r-sig-geo