## Gravitationsgesetz nach Huff ## Interaktives Skript fuer R ## ## (c) Detlev Reymann 2007 ## detlev@reymann.eu ## Letzte Bearbeitung 11.06.2006 ## Funktion ZahlInteraktivEinlesen ## Hilfsfunktion fuer die interaktive Eingabe ZahlInteraktivEinlesen <- function() { Eingabe <- NA; while (is.na(Eingabe)) { cat("Bitte Wert eingeben: "); (Eingabe <- as.numeric(readLines(stdin(), 1))); } return(Eingabe); } ## ## Abfrage der noetigen Parameter ## cat("\n"); cat("========================================================"); cat("\n"); cat("Berechnung der Wahrscheinlichkeit mit der Kunden den Standort aufsuchen nach Gravitationsgesetz von Huff.\n"); cat("========================================================"); cat("\n"); cat("\n"); cat("Bitte geben Sie nachfolgend die Werte fuer die notwendigen Parameter ein.\n") cat("\n"); cat("Allgemeine Angaben\n"); cat("------------------------------------"); cat("\n"); cat("Der Distanzparameter gibt die Bedeutung an, die die Distanz fuer die Konsumenten hat. Dieser Parameter ist produktspezifisch und muss eigentlich empirisch erhoben werden.\n"); cat("\n"); cat("Der Distanzparameter betraegt:\n"); Lambda <- ZahlInteraktivEinlesen(); cat("\n"); cat("Angaben zum untersuchten Einkaufsort\n"); cat("------------------------------------"); cat("\n"); cat("Die Standortattraktivitaet wird meistens mit der Einkaufsflaeche\noperationalisiert.\n"); cat("\n"); cat("Attraktivitaetsfaktor fuer den Untersuchungsstandort:\n"); A <- ZahlInteraktivEinlesen(); array(A); cat("Angaben zur Distanz, zumeist durch die Zeitdistanz operationalisiert.\n"); cat("Distanz zum Untersuchungsstandort:\n"); D <- ZahlInteraktivEinlesen(); array(D); cat("\n"); cat("Angaben zu konkurrierenden Einkaufsorten\n"); cat("----------------------------------------"); cat("\n"); Zaehler <- 2; cat("\n"); cat("Bitte machen Sie jetzt Angaben fuer die Konkurrenzstandorte:\n"); cat("Wenn Sie mit der Eingabe fertig sind, geben Sie bitte den Wert -1 ein"); cat("\n"); ## Eingabeschleife while(TRUE) { cat("\n"); cat("Attraktivitaetsfaktor fuer den Konkurrenzstandort:\n"); cat("oder -1 zum Beenden der Eingabe...\n"); A[Zaehler] <- ZahlInteraktivEinlesen(); ## das ist zwar wenig elegant, funktioniert aber. :-) if (A[Zaehler] == -1) break; cat("Distanz zum Untersuchungsstandort:\n"); D[Zaehler] <- ZahlInteraktivEinlesen(); Zaehler <- Zaehler + 1; } ## Ende der Schleife A[Zaehler] <- NA; ## ## Hier die eigentliche Berechnung ## j <- 1; SummeP <- 0; while(length(A) > j) { SummeP <- SummeP + A[j]/(D[j])^Lambda; ## cat("Durchgang: ");print(j); ## cat("SummeP: ");print(SummeP); j <- j+1; } P <- (A[1]/(D[1]^Lambda))/SummeP ## ## Ausgabe des Ergebnisses ## cat("\n"); cat("Berechnung der Einkaufswahrscheinlichkeit nach Huffs Gravitationsgesetz;"); cat("\n"); cat("es wurden folgende Ausgangswerte verwendet:"); cat("\n"); cat("-----------------------------------------------------------------------"); cat("\n"); cat("Gewichtungsfaktor der Distanzen - Lambda: ");print(Lambda); cat("\n"); cat("Angaben zum Untersuchungsstandort:\n"); cat("Attraktivitaetsfaktor Standort 1: ");print(A[1]); cat("Distanz zu Standort 1: ");print(D[1]); cat("\n"); cat("Angaben zu den Konkurrenzstandorten:\n"); j <- 2; ## da im Index 1 der Untersuchungsstandort gespeichert ist. while(length(A) > j) { cat("Standort:");print(j); cat("Attraktivitaetsfaktor Standort: ");print(A[j]); cat("Distanz zu Standort: ");print(D[j]); j <- j+1; } cat("\n"); cat("Die Einkaufswahrscheinlichkeit fuer Standort 1 betraegt: \n"); print(P);