[R-sig-Geo] Indicator kriging map creation

Edzer Pebesma edzer.pebesma at uni-muenster.de
Sun Jul 24 21:30:45 CEST 2011


You have to dive a little bit into what factor() does. One or more of
your classes never has the highest probability, it seems:

> factor(c(1,2,3,5))
[1] 1 2 3 5
Levels: 1 2 3 5
> factor(c(1,2,3,5), labels = c("1", "2", "3", "4", "5"))
Error in factor(c(1, 2, 3, 5), labels = c("1", "2", "3", "4", "5")) :
  invalid labels; length 5 should be 1 or 4
> levels(factor(c(1,2,3,5)))
[1] "1" "2" "3" "5"
> factor(c(1,2,3,5), levels=1:5, labels = c("1", "2", "3", "4", "5"))
[1] 1 2 3 5
Levels: 1 2 3 4 5
> factor(c(1,2,3,5), levels=1:5, labels = c("a", "b", "c", "d", "e"))
[1] a b c e
Levels: a b c d e


On 07/24/2011 08:52 PM, Matevž Pavlič wrote:
> Hi Edzer, 
> 
> thanks for the help. It works ok on the sampleI provided, even if I enlarge the number of classes to 10. But when i try to use it on my dataset which has identical names of predictions and number of predisctions and covarinaces I get an error :
> 
> Error in factor(apply(cbind(z$nic.pred, z$ena.pred, z$dva.pred, z$tri.pred,  : 
>   invalid labels; length 10 should be 1 or 8
> 
> This is the oputput of the prediction whit
> 
>> str(z):
> Formal class 'SpatialPixelsDataFrame' [package "sp"] with 7 slots
>   ..@ data       :'data.frame':	8736 obs. of  65 variables:
>   .. ..$ devet.pred     : num [1:8736] 0.001153 0.000876 0.100325 0.101093 0.102047 ...
>   .. ..$ devet.var      : num [1:8736] 0.00548 0.00548 0.00549 0.0055 0.00551 ...
>   .. ..$ dva.pred       : num [1:8736] 0.182 0.185 0.177 0.194 0.191 ...
>   .. ..$ dva.var        : num [1:8736] 0.0744 0.0744 0.0745 0.0752 0.0753 ...
>   .. ..$ ena.pred       : num [1:8736] 0.2009 0.1895 0.0476 0.0522 0.0482 ...
>   .. ..$ ena.var        : num [1:8736] 0.149 0.149 0.15 0.155 0.155 ...
>   .. ..$ nic.pred       : num [1:8736] 0.139 0.142 0.206 0.0252 0.0234 ...
>   .. ..$ nic.var        : num [1:8736] 0.258 0.259 0.26 0.267 0.268 ...
>   .. ..$ osem.pred      : num [1:8736] 9.15e-05 0.00 5.56e-05 6.82e-04 1.13e-03 ...
>   .. ..$ osem.var       : num [1:8736] 0.00381 0.00382 0.00382 0.00386 0.00386 ...
>   .. ..$ pet.pred       : num [1:8736] 0.000115 0.000303 0.000875 0.000423 0.000345 ...
>   .. ..$ pet.var        : num [1:8736] 0.0126 0.0126 0.0126 0.0133 0.0133 ...
>   .. ..$ sedem.pred     : num [1:8736] 0.0934 0.0924 0.0756 0.1084 0.1157 ...
>   .. ..$ sedem.var      : num [1:8736] 0.0848 0.085 0.0852 0.0874 0.0877 ...
>   .. ..$ set.pred       : num [1:8736] 0.271 0.278 0.27 0.395 0.389 ...
>   .. ..$ set.var        : num [1:8736] 0.0881 0.0882 0.0885 0.0902 0.0904 ...
>   .. ..$ stiri.pred     : num [1:8736] 0.001931 0.000777 0.0046 0 0 ...
>   .. ..$ stiri.var      : num [1:8736] 0.101 0.101 0.101 0.106 0.106 ...
>   .. ..$ tri.pred       : num [1:8736] 0.11 0.111 0.118 0.123 0.129 ...
>   .. ..$ tri.var        : num [1:8736] 0.134 0.134 0.134 0.136 0.136 ...
> 
> I would like to create a map from predictions of course. 
> 
> What i found out is that your latest code works until labels line gets called.But funny thing is , when  I use this line :
> z$class = factor(apply(cbind(z$nic.pred,z$ena.pred, z$dva.pred, z$tri.pred, z$stiri.pred,   z$pet.pred, z$set.pred, z$sedem.pred, z$osem.pred, z$devet.pred), 1, which.max))
> 
> i get :
> 
>> levels(z$class)
> [1] "1" "2" "3" "4" "5" "6" "7" "8"
> 
> Any ideas? 
> 
> tnx, m
> -----Original Message-----
> From: r-sig-geo-bounces at r-project.org [mailto:r-sig-geo-bounces at r-project.org] On Behalf Of Edzer Pebesma
> Sent: Sunday, July 24, 2011 8:04 PM
> To: r-sig-geo at r-project.org
> Subject: Re: [R-sig-Geo] Indicator kriging map creation
> 
> Matevz, try
> 
> z$class = factor(apply(cbind(z$dva.pred, z$ena.pred, z$nic.pred,
> 	z$stiri.pred, z$tri.pred), 1, which.max),
> 	labels=c("dva", "ena", "nic", "stiri", "tri"))
> spplot(z["class"])
> 
> 
> On 07/24/2011 06:22 PM, Matevž Pavlič wrote:
>> Hi list users,
>>
>>  
>>
>> i am trying to do indicator kriging on a set of soild samples. 
>>
>>  
>>
>> I manage to do the predction of several classes  into a  "SpatialPixelsDataFrame" using the gstat object and predict() function. First a created a  gstat object of several soil classes which I later fitted with a linear model of coregonalization. 
>>
>>  
>>
>> After that i used predict() to generate a SpatialPixelsDataFrame which hold information about predictions, variance and covariances. 
>>
>>  
>>
>> I am mostly interested in predoctions of each class. I know how to create a spplot or levelplot of each of the predicted classes on its own, but what i would like to achieve is to create a map of this predictions, so that the class with highest value (from 0-1) would prevail on each of the grid cell. In this way i would get a map of soil classes. 
>>
>>  
>>
>> Attached is the reproducible sample and a picture of prediction that i would like covert to a map of Soil classes (SoilFactor). But i get stuck when i try to create a actual map. That means getting the max value of each pixels and assign a name to that pixel.
>>
>>  
>>
>> I hope i explained ok, if not i'll try again. 
>>
>>  
>>
>> Thanks for any ideas or help, m
>>
>>
>>
>>
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> 
> --
> 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.pebesma at wwu.de
> 
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo

-- 
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.pebesma at wwu.de



More information about the R-sig-Geo mailing list