[R-sig-Geo] Fwd: dimensions do not match
Jon Olav Skoien
j.skoien at geo.uu.nl
Thu Apr 10 10:41:42 CEST 2008
Hi,
I think Mathieu wanted to know how to create formula strings from
variable names. The function "as.formula" should be able to do what he
is looking for.
as.formula(paste(names(meuse)[4],"~",names(meuse)[6]) )
is an alternative way of calling a function with the formula zinc~dist,
knowing that these are the 4th and 6th column respectively:
library(automap)
data(meuse)
coordinates(meuse) =~ x+y
names(meuse)
v1 =
autofitVariogram(as.formula(paste(names(meuse)[4],"~",names(meuse)[6])
), meuse)
v1
v2 = autofitVariogram(zinc~dist,meuse)
v2
Cheers,
Jon
Paul Hiemstra wrote:
> Hi mathieu,
>
> I'm not sure if I understand what your last question is. Why do you want
> to modify "z~1" if z is your data column name? If you want "variable~1"
> to work you need to change your column name to variable.
>
> cheers,
> Paul
>
> mathieu grelier wrote:
>
>> Hi,
>> Yes, autokrige deals with duplicates.
>> But I found there were two problems, and the first come from the way
>> autokrige calls the krige function from gstat.
>> Edzer, you gave the answer : it was necessary to specify "nmax=30" in the call.
>> Automap doesn't do it and adding this argument to the call remove the
>> "memory.c" problem.
>>
>> The second problem (dimensions do not match) comes from the formula
>> parameter for the krige function.
>> If your data column is z, and you want to perform ordinary kriging,
>> you have to specify z~1.
>> In my case, I only know the data column name at execution time as it
>> is a parameter in my script.
>> And I must admit that I didn't achieve to find the right code to pass
>> this parameter to the formula argument.
>> Basically "variable~1" doesn't work and I don't know why exactly.
>> It was my code that was wrong and if I use hard code to give the
>> formula argument to the autokrige call, it works fine.
>>
>> So last question is :
>> -how can I modify "z~1" in the krige formula to be able to use my data
>> column parameter??
>>
>> Thanks
>> Mathieu
>>
>>
>>
>>
>>
>> 2008/4/7, Edzer Pebesma <edzer.pebesma at uni-muenster.de>:
>>
>>
>>> The following worked for me, although I didn't understand the result:
>>>
>>> > zd = zerodist(sitesR)
>>> > kriging_result = krige(valeur~1, sitesR[-zd[,1],], mask_SG, vgm(1, "Exp",
>>> 300), nmax = 30)
>>>
>>> of course arbitrarily throwing away the first of each location-paired
>>> point, choosing an nmax, and some nonsense variogram.
>>>
>>> Please keep r-sig-geo in the mail loop.
>>>
>>> --
>>> Edzer
>>>
>>> mathieu grelier wrote:
>>>
>>>
>>>
>>>> Ok,
>>>> I've just tried to use zerodist before calling the autoKrige function
>>>> but the error remains the same (memory_c...).
>>>> Did you manage to perform the local kriging? You said there was still an
>>>>
>>>>
>>> error.
>>>
>>>
>>>> I forward this message to the author of automap.
>>>> I don't know if automap can handle this situation.
>>>> Paul, please could you give us an answer about last question from edzer?
>>>>
>>>> Thanks
>>>> Mathieu
>>>>
>>>> ---------- Forwarded message ----------
>>>> From: Edzer Pebesma <edzer.pebesma at uni-muenster.de>
>>>> Date: 7 avr. 2008 12:42
>>>> Subject: Re: [R-sig-Geo] dimensions do not match
>>>> To: mathieu grelier <greliermathieu at gmail.com>,
>>>>
>>>>
>>> r-sig-geo at stat.math.ethz.ch
>>>
>>>
>>>> Thanks Mathieu, for sending me the data off-line.
>>>>
>>>> If you have a massive data set, you should use kriging within a local
>>>> neighbourhood to prevent forming and inverting a covariance matrix of
>>>> 4.3 Gb (24067 records, squared, times 8 bytes per double). You may try
>>>> to convince the author of automap to take care of this, automatically.
>>>>
>>>> When applying local kriging to your data set, I get the error message:
>>>>
>>>> > k = krige(valeur~1,sitesR,mask_SG,vgm(1, "Exp",300),
>>>>
>>>>
>>> nmax=30)
>>>
>>>
>>>> [using ordinary kriging]
>>>>
>>>> "chfactor.c", line 130: singular matrix in function LDLfactor()
>>>> Error in predict.gstat(g, newdata = newdata, block = block, nsim = nsim,
>>>>
>>>>
>>> :
>>>
>>>
>>>> LDLfactor
>>>>
>>>> which is usually, and in this case as well, due to duplicate
>>>>
>>>>
>>> observations, try
>>>
>>>
>>>> > zerodist(sitesR)
>>>>
>>>> Does automap take care of them, and if yes how?
>>>> --
>>>> Edzer
>>>>
>>>>
>>>>
>>>>
>>>> mathieu grelier wrote:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>> Ok, this is the data I use and the commands.
>>>>> It is really weird because I use R CMD within grass and I can't
>>>>> reproduce exactly the same error message when I follow the commands
>>>>> directly in R.
>>>>> This is the message I get now :
>>>>>
>>>>> "memory.c", line 57: can't allocate memory in function m_get()
>>>>> Error in predict.gstat(g, newdata = newdata, block = block, nsim = nsim,
>>>>>
>>>>>
>>> :
>>>
>>>
>>>>> m_get
>>>>>
>>>>> But, I already had this memory error when working on big datasets.
>>>>> In the same way, I looked on the archives to see if this memory
>>>>> problem could be solved and I didn't find anything.
>>>>>
>>>>> Do you know it?
>>>>> Thanks.
>>>>>
>>>>> Mathieu
>>>>>
>>>>>
>>>>> 2008/4/6, Edzer Pebesma <edzer.pebesma at uni-muenster.de>:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> Please send me the data as a .RData R data file, along with the steps
>>>>>>
>>>>>>
>>> that
>>>
>>>
>>>>>> led to the error message.
>>>>>> --
>>>>>> Edzer
>>>>>>
>>>>>> mathieu grelier wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> A question about a problem already described in this list (
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>> https://stat.ethz.ch/pipermail/r-sig-geo/2006-July/001160.html),
>>>
>>>
>>>>>> but I
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> didn't find any answer.
>>>>>>> I am trying to achieve ordinary kriging using gstat (via the
>>>>>>>
>>>>>>>
>>> autokrige
>>>
>>>
>>>>>>> package) in GRASS with a big dataset (24067 points).
>>>>>>>
>>>>>>> After the program removes duplicate data, I get the following same
>>>>>>>
>>>>>>>
>>> error :
>>>
>>>
>>>>>>> "Error : dimensions do not match: locations 39916 and data 24067"
>>>>>>> I don't have any NAs apparently.
>>>>>>> Checking logfile, I could see that the error is occurring in the
>>>>>>>
>>>>>>>
>>> krige
>>>
>>>
>>>>>>> function.
>>>>>>>
>>>>>>> Is there a known way to fix this problem?
>>>>>>> Maybe I can send my data, but I don't send it for now to the list as
>>>>>>>
>>>>>>>
>>> its
>>>
>>>
>>>>>>> weight is ~1Mo.
>>>>>>>
>>>>>>> Thanks
>>>>>>> Mathieu
>>>>>>>
>>>>>>> [[alternative HTML version deleted]]
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> R-sig-Geo mailing list
>>>>>>> R-sig-Geo at stat.math.ethz.ch
>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>
>>>
>
>
>
More information about the R-sig-Geo
mailing list