# 1. Monte Carlo data
n = 1000
x <- runif(n,0,2*pi)
x <- sort(x)
ybase <- x - .1*(x^2) + sin(x) - cos(x) -.5*sin(2*x) + .5*cos(2*x)
sig = sd(ybase)/2
y <- ybase + rnorm(n,0,sig)
par(ask=TRUE)
plot(x,y)
lines(x,ybase,col="red")
fit <- lwr(y~x, window=.15)
# plot 95% confidence intervals for predicted y
predse <- sqrt(fit$sig2 + fit$yhat.se^2)
lower <- fit$yhat + qnorm(.025)*predse
upper <- fit$yhat + qnorm(.975)*predse
plot(x, ybase, type="l", ylim=c(min(lower), max(upper)),
main="Estimated Function", xlab="x", ylab="y")
lines(x, fit$yhat, col="red")
lines(x, lower, lty="dashed", col="red")
lines(x, upper, lty="dashed", col="red")
legend("topleft", c("Base", "Predicted", "95 Percent CI"),
col=c("black", "red", "red"), lty=c("solid", "solid", "dashed"), lwd=1)
# plot 95% confidence intervals for slopes
dxbase <- 1 - .2*x + cos(x) + sin(x) - cos(2*x) - sin(2*x)
lower <- fit$dhat1 + qnorm(.025)*fit$dhat1.se
upper <- fit$dhat1 + qnorm(.975)*fit$dhat1.se
plot(x, dxbase, type="l", ylim=c(min(lower), max(upper)),
main="Estimated Slopes", xlab="x", ylab="y")
lines(x, fit$dhat1, col="red")
lines(x, lower, lty="dashed", col="red")
lines(x, upper, lty="dashed", col="red")
legend("topright", c("Base", "Predicted", "95 Percent CI"),
col=c("black", "red", "red"),lty=c("solid", "solid", "dashed"), lwd=1)
# Derivative estimates with larger window size
fit <- lwr(y~x,window=.20)
lower <- fit$dhat1 + qnorm(.025)*fit$dhat1.se
upper <- fit$dhat1 + qnorm(.975)*fit$dhat1.se
plot(x, dxbase, type="l", ylim=c(min(lower), max(upper)),
main="Estimated Slopes", xlab="x", ylab="y")
lines(x, fit$dhat1, col="red")
lines(x, lower, lty="dashed", col="red")
lines(x, upper, lty="dashed", col="red")
legend("topright", c("Base", "Predicted", "95 Percent CI"),
col=c("black", "red", "red"), lty=c("solid", "solid", "dashed"), lwd=1)
## Not run:
# #2. Population density data
# library(RColorBrewer)
#
# cook <- readShapePoly(system.file("maps/CookCensusTracts.shp",
# package="McSpatial"))
# cook$obs <- seq(1:nrow(cook))
# # measure distance to Chicago city center
# lmat <- coordinates(cook)
# cook$LONGITUDE <- lmat[,1]
# cook$LATITUDE <- lmat[,2]
# cook$DCBD <- geodistance(longvar=cook$LONGITUDE,latvar=cook$LATITUDE,
# lotarget=-87.627800,latarget=41.881998,dcoor=FALSE)$dist
# # population density = population/acres, acres = square mile x 640
# cook$LNDENS <- log(cook$POPULATION/(cook$AREA*640))
# densdata <- data.frame(cook[cook$POPULATION>0,])
# par(ask=TRUE)
#
# # lndens = f(longitude, latitude), weights are function of straight-line distance
# fit <- lwr(LNDENS~LONGITUDE+LATITUDE, window=.10,
# distance="Latlong",data=densdata)
# c(fit$df1, fit$df2, 2*fit$df1-fit$df2)
# cook$lwrhat[densdata$obs] <- fit$yhat
# brks <- seq(min(cook$lwrhat,na.rm=TRUE),max(cook$lwrhat,na.rm=TRUE),length=9)
# spplot(cook,"lwrhat",at=brks,col.regions=rev(brewer.pal(9,"RdBu")),
# main="Log Density LWR Estimates")
#
# ## End(Not run)
Run the code above in your browser using DataLab