[R] apply model predictions over larger area with predict()
K. Fleischer
K.Fleischer at student.uva.nl
Wed Oct 15 12:06:22 CEST 2008
Dear all,
thanx for the quick reply but your ideas have not gotten me further
unfortuantely..
after implementing the idea from Thierry my code looks like that now:
#b00all is the dataframe with only element used for model fitting
#variables .._zui contain the whole are over which to predict
veld<-b00all$veld00all_zui
water<-b00all$kmoi_water_zui
moeras<-b00all$kveg_moeras_zui
specvec<-b00all$specvec
mydata<-data.frame(specvec,veld,water,moeras)
b00all_mdl6<-glm(specvec~veld+water+moeras,
data=mydata, family=binomial(link=logit))
veld<-veld00all_zui
water<-kmoi_water_zui
moeras<-kveg_moeras_zui
areadata<-data.frame(as.vector(veld),as.vector(water),as.vector(moeras))
zuid<-predict(b00all_mdl6,newdata=areadata,type="response")
Error: variables ‘veld’, ‘water’, ‘moeras’ were specified with
different types from the fit
In addition: Warning message:
'newdata' had 7526 rows but variable(s) found have 106 rows
So again the problem is as follows:
I have a dataframe with each column representing one predictor, whereby
first columns contains species presence/absences and every row is one
observation.
now I want to take the model output and apply it over the whole area
for which I have predictor values for, which are stored in .asc maps.
That cannot be too difficult I am sure!!
thanx again,
Katrin
MSc student
Computational Geo-Ecology
University of Amsterdam
----- Original Message -----
From: "ONKELINX, Thierry" <Thierry.ONKELINX at inbo.be>
Date: Wednesday, October 15, 2008 9:56 am
Subject: RE: [R] apply model predictions over larger area with predict()
To: "K. Fleischer" <K.Fleischer at student.uva.nl>, r-help at r-project.org
> Dear Katrin,
>
> Store the "old" data in a dataframe instead of vectors and supply the
> name of that dataframe to your model. eg
> Model <- glm(species ~ temp + prec + elev, data = your.data.frame,
> family = binomial(link = logit))
>
> Notice that I've added some spaces which makes your code more easy to
> read.
>
> I think this will solve your problem.
>
> HTH,
>
> Thierry
>
>
> -------------------------------------------------------------------
> -----
> ----
> ir. Thierry Onkelinx
> Instituut voor natuur- en bosonderzoek / Research Institute for Nature
> and Forest
> Cel biometrie, methodologie en kwaliteitszorg / Section biometrics,
> methodology and quality assurance
> Gaverstraat 4
> 9500 Geraardsbergen
> Belgium
> tel. + 32 54/436 185
> Thierry.Onkelinx at inbo.be
> www.inbo.be
>
> To call in the statistician after the experiment is done may be no
> morethan asking him to perform a post-mortem examination: he may
> be able to
> say what the experiment died of.
> ~ Sir Ronald Aylmer Fisher
>
> The plural of anecdote is not data.
> ~ Roger Brinner
>
> The combination of some data and an aching desire for an answer
> does not
> ensure that a reasonable answer can be extracted from a given body of
> data.
> ~ John Tukey
>
> -----Oorspronkelijk bericht-----
> Van: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org]Namens K. Fleischer
> Verzonden: woensdag 15 oktober 2008 9:34
> Aan: r-help at r-project.org
> Onderwerp: [R] apply model predictions over larger area with predict()
>
> Dear all,
>
> I have built glm models based on presences/absences and a number
> of
> predictor maps and would like to compute habitat suitability based
> on
> the modelled coefficients.
>
> I thought this is pretty straight forward and wanted to use
> predict()
> and supply the new data in a data frame, with one column for each
> predictor.
>
> However, I do get an error msg warning me that the number of rows
> for
> old and new data do not match.
>
> the script looks like that:
>
> model<-glm(species~temp+prec+elev,family=binomial(link=logit))
> #whereby temp,prec,elev are in vector format and contain the
> elements
> on species presence/absence; species is vector of 0's and 1's
> (length=319)
>
> wholearea<-data.frame(cbind(as.vector(temperature),as.vector
> (precipitation),as.vector(elevation)) # (length=7526)
>
> predict(model, newdata=wholearea,type="response")
>
> Warning message: 'newdata' had 7526 rows but variable(s) found
> have
> 319 rows.
>
> Ive searched quite a while for the answer now, has anyone
> encountered
> that problem before?? thanx in advance.
>
> Katrin Fleischer
> MSc Student
> Computational Geo-ecology
> University of Amsterdam
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
> Dit bericht en eventuele bijlagen geven enkel de visie van de
> schrijver weer
> en binden het INBO onder geen enkel beding, zolang dit bericht
> niet bevestigd is
> door een geldig ondertekend document. The views expressed in this
> message
> and any annex are purely those of the writer and may not be
> regarded as stating
> an official position of INBO, as long as the message is not
> confirmed by a duly
> signed document.
>
More information about the R-help
mailing list