On 10/18/2011 11:45 PM, Zia Ahmed wrote:
Your are correct. Now, what I am going to do: first calculate 95th
percentile of all realizations at prediction grid and then calculate the
mean for each polygon.

this implies you end up with one single value per polygon. Call it A.

Is it possible to calculated weighted mean of the
this 95th percentile? weight may be area of polygon or any value, for
example population density for each polygon.

if this population density is in the polygon attributes, then this is trivial, as the number of records equals that of output A.

Thanks
Zia

On 10/18/2011 5:12 PM, Edzer Pebesma wrote:
Zia,

You may want to rethink the question. Each realization has a 95
percentile within a particular polygon. Over the set of realizations
of some aggregated value for a polygon, you can take a 95 percentile.

These are two different things. The first is a spatial aggregation,
the second an aggregation over the (sampled) probability distribution.

On 10/18/2011 11:07 PM, Zia Ahmed wrote:
I am trying to calculating 95th percentile within polygons from a of set
realizations - something like zonal statistics.
How do I calculate 95 th percentile for each polygon over all
realizations.
Thanks
Zia

For example:

data(meuse)
data(meuse.grid)
coordinates(meuse) <- ~x+y
coordinates(meuse.grid) <- ~x+y

# Simulation
nsim=10
x <- krige(log(zinc)~1, meuse, meuse.grid, model = vgm(.59, "Sph", 874,
.04), nmax=10, nsim=nsim)
over(sr, x[,1:4], fn = mean)

> over(sr, x[,1:4], fn = mean)
sim1 sim2 sim3 sim4
r1 5.858169 5.792870 5.855246 5.868499
r2 5.588570 5.452744 5.596648 5.516289
r3 5.798087 5.860750 5.784194 5.848194
r4 NA NA NA NA

# 95 th percentile at prediction grid:
x<-as.data.frame(x)
y95<-apply(x[3:nsim],1,stats::quantile,probs = 0.95,na.rm=TRUE) # 95 th
percentile at each prediction grid



On 10/18/2011 3:30 PM, Edzer Pebesma wrote:
require(sp)
r1 = cbind(c(180114, 180553, 181127, 181477, 181294, 181007, 180409,
180162, 180114), c(332349, 332057, 332342, 333250, 333558, 333676,
332618, 332413, 332349))
r2 = cbind(c(180042, 180545, 180553, 180314, 179955, 179142, 179437,
179524, 179979, 180042), c(332373, 332026, 331426, 330889, 330683,
331133, 331623, 332152, 332357, 332373))
r3 = cbind(c(179110, 179907, 180433, 180712, 180752, 180329, 179875,
179668, 179572, 179269, 178879, 178600, 178544, 179046, 179110),
c(331086, 330620, 330494, 330265, 330075, 330233, 330336, 330004,
329783, 329665, 329720, 329933, 330478, 331062, 331086))
r4 = cbind(c(180304, 180403,179632,179420,180304),
c(332791, 333204, 333635, 333058, 332791))

sr1=Polygons(list(Polygon(r1)),"r1")
sr2=Polygons(list(Polygon(r2)),"r2")
sr3=Polygons(list(Polygon(r3)),"r3")
sr4=Polygons(list(Polygon(r4)),"r4")
sr=SpatialPolygons(list(sr1,sr2,sr3,sr4))
srdf=SpatialPolygonsDataFrame(sr, data.frame(cbind(1:4,5:2),
row.names=c("r1","r2","r3","r4")))

data(meuse)
coordinates(meuse) = ~x+y

plot(meuse)
polygon(r1)
polygon(r2)
polygon(r3)
polygon(r4)
# retrieve mean heavy metal concentrations per polygon:
# attribute means over each polygon, NA for empty
over(sr, meuse[,1:4], fn = mean)

# return the number of points in each polygon:
sapply(over(sr, geometry(meuse), returnList = TRUE), length)


--
Edzer Pebesma
Institute for Geoinformatics (ifgi), University of Münster
Weseler Straße 253, 48151 Münster, Germany. Phone: +49 251
8333081, Fax: +49 251 8339763  http://ifgi.uni-muenster.de
http://www.52north.org/geostatistics      e.pebe...@wwu.de

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to