####################################### # # Raeumliche Statistik WS 2010 / 2011 # Blatt 7, Aufgabe 1 # ####################################### # Benutze die Prozeduren von Blatt 1 & Blatt 3 & Blatt 4 source("~/RSBlatt1.r") source("~/RSBlatt3.r") source("~/RSBlatt4.r") # Funktion zur Berechnung von Abständen distance<-function(x_1, y_1, x_2, y_2) { d<-sqrt((x_1-x_2)^2 + (y_1 - y_2)^2) return(d) } # Erzeuge eine Realisierung eines Matern-Cluster-Prozesses im vorgegebenen # Fenster mit Elternintensitaet lambda_0, Clusterintensitaet lambda_1, und # Clusterradius R getMaternClusterPP<-function(window_x_lim, window_y_lim, lambda_0, lambda_1, R) { # vergroessere das Fenster in jede Richtung um Radius R, um # keine Randeffekte entstehen zu lassen. plusWindow_x_lim<-c(window_x_lim[1]-R, window_x_lim[2]+R) plusWindow_y_lim<-c(window_y_lim[1]-R, window_y_lim[2]+R) # Simuliere den Eltern-Prozess parentPoints<-getPoissonPP(plusWindow_x_lim,plusWindow_y_lim, lambda_0) allPoints<-c() # Fuer jeden Elternpunkt... for(i in 1:(dim(parentPoints)[1])) { # ... bestimme das ein Fenster um den Elternpunkt mit Kantenlänge 2R ... localWindow_x_lim<-c(parentPoints[i,1]-R , parentPoints[i,1]+R) localWindow_y_lim<-c(parentPoints[i,2]-R , parentPoints[i,2]+R) # ... und simuliere in diesem Fenster den Cluster. daughterPoints<-getPoissonPP(localWindow_x_lim, localWindow_y_lim, lambda_1) # Die Tochterpunkte werden nur dann als Teil der Realisierung des Cluster-Prozesses # uebernommen, wenn sie sowohl naeher als R am Elternprozess liegen als auch innerhalb # des urspruenglich vorgegebenen Fensters. for(j in 1:(dim(daughterPoints)[1])) { if(distance(daughterPoints[j,1],daughterPoints[j,2],parentPoints[i,1],parentPoints[i,2])=window_x_lim[1]) && (daughterPoints[j,1]<=window_x_lim[2]) && (daughterPoints[j,2]>=window_y_lim[1]) && (daughterPoints[j,2]<=window_y_lim[2])) { allPoints<-rbind(allPoints, daughterPoints[j,]) } } } } return(allPoints) } # Berechne fuer eine Matern-Cluster-Realisierung die auf dem Blatt # definierte Statistik calculateMaternClusterStatistic<-function(window_x_lim, window_y_lim, clusterPoints, lambda_0, lambda_1, R) { windowSize<-abs(window_x_lim[2]-window_x_lim[1])*abs(window_y_lim[2]-window_y_lim[1]) noOfPoints<-dim(clusterPoints)[1] value<-(noOfPoints/windowSize - lambda_0 * lambda_1 * pi* R * R) value<- sqrt( windowSize / (lambda_0 * lambda_1 * pi * R * R * (1 + lambda_1 * pi * R * R) ) ) * value return(value) } # Simuliere und visualisiere eine Realisierung # eines Matern-Cluster-Prozesses Aufgabe1b<-function() { clusterPoints<-getMaternClusterPP(c(0,100),c(0,100), 0.002, 0.05, 10) print(clusterPoints) result<-visualizePoints(c(0,100),c(0,100),clusterPoints,"~/Blatt7.png") } Aufgabe1cd<-function() { lambda_0<-0.002 lambda_1<-0.05 R<-10 alpha<-0.05 n<-100 M<-c(40,50,60,70,80,90,100,110,120,130,140,150) matern_cluster_rejections<-rep(0,length(M)) for(m in 1:length(M)) { no_of_rejections<-0 for(i in 1:n) { t<-c() for(j in 1:50) { points<-getMaternClusterPP(c(0,M[m]),c(0,M[m]), lambda_0, lambda_1, R) stat<-calculateMaternClusterStatistic(c(0,M[m]),c(0,M[m]),points,lambda_0,lambda_1,R) t<-c(t,stat) } testResult<-shapiro.test(t) if(testResult$p.value