[R-sig-Geo] Calculating 95th percentile within polygons

Zia Ahmed zua3 at cornell.edu
Tue Oct 18 23:45:53 CEST 2011


  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.  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.
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)
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: zua3.vcf
Type: text/x-vcard
Size: 281 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20111018/1938ecdb/attachment.vcf>


More information about the R-sig-Geo mailing list