Dear Roger,

Thank you for your mail. I tried lm() and it doesn't resulted with negative values. Also gwr() doesn't give negative values if I don't use fit.points.

bw1=gwr.sel(PREC~Z+V1+V2,station,adapt=T)
xx1<-gwr(PREC~Z+V1+V2,station,adapt=bw1,se.fit=T,hatmatrix=TRUE)
gwrx<-xx1$SDF
min(gwrx$pred)
[1] 311.189
max(gwrx$pred)
[1] 1700.559

But if I use fit.points to predict precipitation on a grid, then it gave negative values.

x1 <-gwr(PREC~Z+V1+V2,station,adapt=bw1, fit.points = dem, predict=T, se.fit=T, fittedGWRobject=xx1)
gwrres<-x1$SDF
min(gwrres$pred)
[1] -1126.052
max(gwrres$pred)
[1] 2104.136

You mentioned about limiting the design of the model, so that it doesn't give negative values. Do you have any idea about that, how can I perform this?

Best regards,
Pinar




Alinti Roger Bivand <roger.biv...@nhh.no>

On Mon, 21 Jun 2010, Pinar Aslantas Bostan wrote:

Dear Roger,

Maybe you can remember, last week I asked some questions about gwr analysis and you helped me. In order to make refresh, I want to summarize my problem. I am trying to make gwr analysis to predict precipitation distribution on a DEM. I have two datasets; first one is 'station' consists of 225 prec. measurements and 3 independent variables (Z, V1, V2). The second one is 'DEM' dataset which has 31203 # of pixels. Firstly I tried with using SPDF (SpatialPointsDataFrame) and obtained predicted precipitations on DEM. But when I plot the predicted precipitation values, I saw a lot of negative values which is impossible to get such a values.

No, this is just a weighted linear model. Unless you limit it by design, all such linear models will happily predict out of domain. Consider how you might by design limit the response to non-negative values.

I thought that this was caused because I used point data sets (SPDF) for grid.

Why would you think that? All you need to provoke this is a slightly unfortunate placing of the met stations (all in west and falling trend eastwards beyond the observed stations). Did the regular lm() fit also predict negative values (very likely yes).

This isn't a GWR problem, it's more general. Fix it for lm() first.

Roger

Then I tried with using SGDF (SpatialGridDataFrame). At this time, gwr() resulted with an error message "new data matrix rows mismatch". You told me that 'The error message is generated when the number of columns in the matrix of X variables is not the same in data and and fit.points.' I gave some information about datasets below.

class(station)
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"
names(station)
[1] "PREC" "Z"    "V1"   "V2"
class(dem)
[1] "SpatialGridDataFrame"
attr(,"package")
[1] "sp"
names(dem)
[1] "Z"  "V1" "V2"

'PREC' is the observations and I want to get predictions of them on 'dem'.

I checked the str() and variables are stored in the same way.

bw=gwr.sel(PREC~Z+V1+V2,data=station,adapt=T)
xx1<-gwr(PREC~Z+V1+V2,station,adapt=bw,hatmatrix=TRUE)
x1 <-gwr(PREC~Z+V1+V2,data=station,adapt=bw, fit.points = dem, predict=T, se.fit=T, fittedGWRobject=xx1)
Error in gwr(PREC ~ Z + V1 + V2, data = station, adapt = bw, fit.points = dem, :
new data matrix rows mismatch


If I wrote 'predict=F' then gwr() works but gives only sum.w, coefficients and localR2.

I tried to run gwr() under debug but I didn't understand the output.

I really don't understand the problem and need help.

Best regards,
Pinar


----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.



--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: roger.biv...@nhh.no



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

Reply via email to