diff --git a/.gitignore b/.gitignore index fbe569c350276836b1bd0131523f413eb6d16968..71283b03bcdf9fdf8dce0f393ebc1c299ef5e45c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ .Ruserdata dce_simulation_tool.Rproj modeloutput/ +*.html \ No newline at end of file diff --git a/Designs/designjeem.ngd b/Designs/designjeem.ngd new file mode 100644 index 0000000000000000000000000000000000000000..44bc543fe9b9b7a33dce265c4f87912026749f39 --- /dev/null +++ b/Designs/designjeem.ngd @@ -0,0 +1,33 @@ +Choice situation alt1.groesse alt1.entfernung alt1.gemeinschaft alt1.kultur alt1.umweltbildung alt1.gestaltung alt1.zugang alt1.beitrag Block alt2.groesse alt2.entfernung alt2.gemeinschaft alt2.kultur alt2.umweltbildung alt2.gestaltung alt2.zugang alt2.beitrag alt3.groesse alt3.entfernung alt3.gemeinschaft alt3.kultur alt3.umweltbildung alt3.gestaltung alt3.zugang alt3.beitrag Design +1 0.05 1 0 1 0 0 0 0.36 3 1 0.3 1 0 1 1 -2 0.9 0 0 0 0 0 0 0 0 1 +2 0.2 3 0 0 0 1 -2 0.36 2 2 0.6 1 1 1 0 0 0.12 0 0 0 0 0 0 0 0 1 +3 0.05 1 0 0 0 1 -5 0.12 4 0.5 0.6 1 1 1 0 -2 0.06 0 0 0 0 0 0 0 0 1 +4 0.05 0.6 1 1 0 0 -2 0.9 1 2 0.3 0 0 1 1 0 0.6 0 0 0 0 0 0 0 0 1 +5 1 1 1 1 1 1 -5 0.06 4 0.5 0.3 0 0 0 0 -2 0.36 0 0 0 0 0 0 0 0 1 +6 1 0.6 0 1 0 1 -2 0.12 3 0.1 1 1 0 1 0 0 0.36 0 0 0 0 0 0 0 0 1 +7 0.1 0.3 1 1 0 1 -2 0.36 1 0.05 0.6 0 0 1 0 0 0.6 0 0 0 0 0 0 0 0 1 +8 2 2 0 1 0 1 -2 0.06 4 1 0.3 1 0 1 0 -5 0.12 0 0 0 0 0 0 0 0 1 +9 0.2 2 1 0 0 0 -2 0.6 4 0.1 0.6 0 1 1 1 0 1.2 0 0 0 0 0 0 0 0 1 +10 1 2 0 1 0 0 0 0.06 2 0.2 0.6 1 0 1 1 -5 0.36 0 0 0 0 0 0 0 0 1 +11 2 2 1 1 1 0 -5 0.12 1 1 1 0 0 0 1 0 0.06 0 0 0 0 0 0 0 0 1 +12 0.1 0.6 1 0 0 1 -5 0.06 3 1 1 0 1 1 0 0 0.36 0 0 0 0 0 0 0 0 1 +13 0.5 0.6 0 0 0 1 0 0.12 3 0.05 0.3 1 1 1 0 -2 0.06 0 0 0 0 0 0 0 0 1 +14 0.5 3 0 0 1 0 -2 0.12 3 0.2 2 1 1 0 1 0 0.9 0 0 0 0 0 0 0 0 1 +15 1 3 1 1 1 1 0 0.6 2 0.2 1 0 0 1 0 -5 0.06 0 0 0 0 0 0 0 0 1 +16 0.5 0.3 0 1 1 1 0 0.9 1 2 3 1 0 0 0 -2 0.06 0 0 0 0 0 0 0 0 1 +17 0.05 0.6 1 0 1 1 -2 0.36 4 0.2 3 0 1 0 0 0 0.12 0 0 0 0 0 0 0 0 1 +18 2 0.6 0 1 1 1 -5 0.36 1 0.1 2 1 0 0 0 0 0.12 0 0 0 0 0 0 0 0 1 +19 0.2 1 1 1 1 0 -2 0.6 3 2 2 0 0 0 1 -5 1.2 0 0 0 0 0 0 0 0 1 +20 0.1 1 0 1 1 0 -2 0.12 1 0.05 0.3 1 0 0 1 0 0.06 0 0 0 0 0 0 0 0 1 +21 0.5 1 1 0 1 1 0 1.2 2 1 3 0 1 0 0 -5 0.36 0 0 0 0 0 0 0 0 1 +22 0.05 3 0 1 1 1 0 0.9 1 1 0.3 1 0 0 0 -2 1.2 0 0 0 0 0 0 0 0 1 +23 1 2 1 0 1 0 0 0.36 4 0.5 1 0 1 0 1 -2 0.12 0 0 0 0 0 0 0 0 1 +24 0.2 0.3 1 1 0 1 0 0.12 2 0.5 2 0 0 1 0 -2 0.6 0 0 0 0 0 0 0 0 1 +25 0.5 0.3 0 1 0 0 -5 0.6 3 0.05 2 1 0 1 1 -2 0.12 0 0 0 0 0 0 0 0 1 +26 0.2 2 0 0 1 0 0 0.06 1 2 1 1 1 0 1 -2 0.6 0 0 0 0 0 0 0 0 1 +27 0.1 0.3 0 0 1 0 -2 0.06 2 0.5 2 1 1 0 1 0 0.36 0 0 0 0 0 0 0 0 1 +28 0.5 1 1 0 0 0 -5 0.9 4 0.2 0.6 0 1 1 1 -2 1.2 0 0 0 0 0 0 0 0 1 +29 0.05 0.3 0 1 0 0 -5 1.2 2 0.1 3 1 0 1 1 0 0.9 0 0 0 0 0 0 0 0 1 +30 2 3 1 0 1 0 0 1.2 3 0.1 2 0 1 1 1 -5 0.6 0 0 0 0 0 0 0 0 1 +31 2 0.6 0 0 0 0 0 0.9 4 0.5 3 1 1 1 1 -5 0.06 0 0 0 0 0 0 0 0 1 +32 2 1 0 0 1 1 -2 0.9 2 0.1 0.6 1 1 0 0 0 0.6 0 0 0 0 0 0 0 0 1 diff --git a/Designsparks/bayeffdes.ngd b/Designsparks/bayeffdes.ngd new file mode 100644 index 0000000000000000000000000000000000000000..128675cc8e171861bec0f4eedb48496aae4bd5d0 --- /dev/null +++ b/Designsparks/bayeffdes.ngd @@ -0,0 +1,57 @@ +Design Choice situation alt1.groesse alt1.entfernung alt1.gemeinschaft alt1.kultur alt1.umweltbildung alt1.toiletten alt1.spiel alt1.pflegeint alt1.pflegeziele alt1.beitrag alt2.groesse alt2.entfernung alt2.gemeinschaft alt2.kultur alt2.umweltbildung alt2.toiletten alt2.spiel alt2.pflegeint alt2.pflegeziele alt2.beitrag Block +1 1 50 0.3 0 1 1 1 0 2 -1 3.6 7 1 1 0 0 0 1 0 1 0.6 4 +1 2 20 3 0 0 1 1 0 0 1 0.6 20 0.3 1 1 0 0 1 2 -1 3.6 1 +1 3 20 3 0 1 1 1 1 0 0 9 14 1 1 0 0 0 0 1 0 9 4 +1 4 35 1 0 1 0 1 1 0 -1 3.6 3.5 0.6 1 0 1 0 0 2 1 1.2 2 +1 5 50 0.3 1 1 1 1 0 0 1 6 7 1 0 0 0 1 1 1 -1 6 2 +1 6 50 3 1 0 0 1 1 0 -1 0.6 3.5 0.3 0 1 1 0 0 2 1 0.6 4 +1 7 7 3 1 1 1 1 1 2 0 6 35 0.6 0 0 0 0 0 0 0 6 1 +1 8 35 0.6 1 0 0 1 0 1 0 9 7 3 0 1 1 0 1 0 1 0.6 2 +1 9 50 3 1 0 1 0 1 2 -1 1.2 3.5 0.3 0 1 0 1 0 0 1 1.2 2 +1 10 35 0.3 0 1 0 1 1 0 1 6 7 3 1 0 1 0 0 2 -1 0.6 2 +1 11 20 1 0 1 1 0 1 1 0 12 20 1 1 0 1 0 0 1 0 9 1 +1 12 3.5 0.3 1 0 0 0 1 0 -1 0.6 50 3 0 1 1 1 0 2 1 3.6 2 +1 13 14 1 1 1 1 0 0 0 -1 6 20 1 0 0 0 1 1 1 1 12 3 +1 14 7 0.6 0 0 1 1 0 1 0 9 50 3 1 1 0 0 1 1 -1 0.6 3 +1 15 7 2 0 1 0 1 0 0 0 1.2 50 0.3 1 0 1 1 1 2 0 9 3 +1 16 3.5 0.6 1 1 1 1 1 2 1 6 50 0.6 0 0 0 0 0 0 -1 0.6 1 +1 17 14 1 0 0 0 0 1 1 0 12 14 2 1 1 0 0 0 1 0 12 1 +1 18 3.5 0.3 0 1 0 0 0 2 -1 0.6 35 3 1 0 1 1 1 0 1 1.2 1 +1 19 14 0.6 0 0 0 1 1 1 0 9 20 2 1 1 1 0 0 1 0 9 3 +1 20 35 0.3 0 0 1 0 1 0 1 1.2 14 2 1 1 0 1 0 2 0 6 3 +1 21 3.5 3 1 1 0 0 1 2 1 0.6 50 0.3 0 0 1 1 0 0 -1 6 4 +1 22 7 1 1 0 0 1 0 2 -1 6 20 1 0 1 1 0 1 0 1 9 1 +1 23 20 2 1 0 0 0 0 1 0 12 14 2 0 1 1 0 1 1 0 12 4 +1 24 7 0.6 1 0 1 1 1 2 -1 3.6 20 2 0 1 0 1 1 1 0 12 4 +1 25 3.5 2 1 1 1 1 0 0 -1 0.6 50 0.3 0 0 0 0 1 2 1 1.2 2 +1 26 7 0.3 0 1 1 0 1 1 -1 3.6 35 2 1 0 0 1 0 2 1 3.6 4 +1 27 3.5 0.6 0 0 0 1 0 2 1 3.6 35 0.6 1 1 1 0 1 0 -1 3.6 4 +1 28 20 2 0 0 0 0 0 1 0 9 14 0.6 1 1 1 1 1 1 0 12 1 +1 29 35 0.6 1 1 1 0 0 2 1 12 7 3 0 0 0 1 1 1 -1 1.2 4 +1 30 20 1 1 1 0 0 0 1 0 9 14 2 0 0 1 1 0 1 0 12 3 +1 31 35 3 0 1 0 0 1 2 1 1.2 3.5 0.3 1 0 1 1 0 0 -1 3.6 3 +1 32 50 0.3 1 1 0 0 0 0 1 1.2 3.5 0.6 0 0 1 1 1 2 -1 1.2 1 +1 33 14 2 0 0 1 0 0 1 1 1.2 35 0.3 1 1 0 1 1 2 -1 6 3 +1 34 14 2 1 0 0 1 1 1 1 12 7 1 0 1 1 0 0 0 0 9 3 +1 35 14 1 1 0 1 0 1 1 0 12 35 3 0 1 0 1 0 2 -1 6 2 +1 36 50 2 0 0 1 0 0 2 -1 3.6 3.5 0.6 1 1 0 1 1 0 1 3.6 2 +|||||||||| +design +;alts = alt1, alt2, alt3 +;rows = 36 +;block = 4 + +;eff = (mnl,d,mean) +;rep = 1000 +;bdraws = halton(1000) +;bseed = 2333344 +;rseed = 2333344 + +;con +;model: + +U(alt1) = asc[(n,-0.03,0.02)]+bgroesse[(n,0.01,0.005)]*groesse[3.5,7,14,20,35,50]+bentfernung[(n,-0.24,0.12)]*entfernung[0.3,0.6,1,2,3]+bgemeinschaft[(n,0.2,0.1)]*gemeinschaft[0,1]+bkultur[(n,0.14,0.07)]*kultur[0,1]+bumweltbildung[(n,0.19,0.1)]*umweltbildung[0,1]+btoiletten[(n,0.52,0.3)]*toiletten[0,1]+bspiel[(n,0.1,0.05)]*spiel[0,1]+bpflegeint[(n,0.18,0.1)]*pflegeint[0,1,2]+bpflegeziele[(n,0.08,0.04)]*pflegeziele[-1,0,1]+bbeitrag[(n,-0.21,0.1)]*beitrag[0.6,1.2,3.6,6,9,12]/ +U(alt2) = asc +bgroesse *groesse +bentfernung *entfernung +bgemeinschaft *gemeinschaft +bkultur *kultur +bumweltbildung *umweltbildung +btoiletten *toiletten +bspiel *spiel +bpflegeint*pflegeint+bpflegeziele*pflegeziele+bbeitrag*beitrag + + +$ \ No newline at end of file diff --git a/Designsparks/effdes.ngd b/Designsparks/effdes.ngd new file mode 100644 index 0000000000000000000000000000000000000000..30fa062f818532ebb017b0ecc207d6ac4c9884d4 --- /dev/null +++ b/Designsparks/effdes.ngd @@ -0,0 +1,54 @@ +Design Choice situation alt1.groesse alt1.entfernung alt1.gemeinschaft alt1.kultur alt1.umweltbildung alt1.toiletten alt1.spiel alt1.pflegeint alt1.pflegeziele alt1.beitrag alt2.groesse alt2.entfernung alt2.gemeinschaft alt2.kultur alt2.umweltbildung alt2.toiletten alt2.spiel alt2.pflegeint alt2.pflegeziele alt2.beitrag Block +1 1 3.5 3 0 0 1 1 1 2 1 1.2 50 0.3 1 1 0 0 0 0 -1 3.6 3 +1 2 3.5 0.3 1 0 0 1 0 0 -1 0.6 50 3 0 1 1 0 1 2 1 1.2 4 +1 3 20 1 0 1 1 1 1 1 -1 12 14 2 1 0 0 0 0 1 0 9 2 +1 4 35 0.3 1 1 1 1 0 2 1 9 7 3 0 0 0 1 1 0 -1 0.6 3 +1 5 14 1 1 0 0 0 1 1 0 9 14 2 0 1 1 1 0 1 0 9 2 +1 6 7 1 0 1 1 0 0 0 0 6 35 0.6 1 0 0 1 1 2 0 6 3 +1 7 50 0.6 0 1 1 1 1 0 1 6 3.5 0.6 1 0 0 0 0 2 -1 0.6 2 +1 8 20 0.6 1 1 0 1 1 2 -1 6 14 0.6 0 0 1 0 0 0 1 1.2 3 +1 9 50 0.3 0 0 1 0 0 2 -1 1.2 3.5 3 1 1 0 1 1 0 1 0.6 1 +1 10 35 0.3 0 0 0 1 0 2 1 6 7 3 1 1 1 0 1 0 -1 0.6 1 +1 11 14 2 1 0 1 0 0 1 0 9 20 1 0 1 0 1 1 1 0 12 1 +1 12 35 2 1 0 0 1 1 2 0 6 7 0.6 0 1 1 0 0 0 0 0.6 2 +1 13 7 0.6 0 0 0 1 1 0 -1 3.6 35 2 1 1 1 1 0 2 1 6 4 +1 14 3.5 0.3 0 1 0 0 0 2 -1 0.6 50 3 1 0 1 1 1 0 1 3.6 1 +1 15 3.5 3 1 1 1 1 0 2 -1 1.2 50 0.3 0 0 0 0 1 0 1 1.2 3 +1 16 14 2 1 0 0 0 1 1 0 9 20 1 0 1 1 1 0 1 0 12 2 +1 17 7 3 0 1 0 1 1 0 -1 0.6 35 0.3 1 0 1 1 0 2 1 9 1 +1 18 50 0.6 0 0 1 1 1 0 -1 3.6 3.5 0.6 1 1 0 0 0 2 1 1.2 1 +1 19 3.5 0.3 1 1 1 0 1 2 1 3.6 50 2 0 0 0 1 0 0 -1 1.2 1 +1 20 50 3 1 1 0 1 0 2 -1 3.6 3.5 0.3 0 0 1 0 1 1 1 3.6 2 +1 21 20 1 0 1 1 0 1 1 0 12 14 2 1 0 0 0 0 1 0 9 2 +1 22 14 2 0 0 1 1 0 1 0 12 20 1 1 1 0 0 1 1 0 12 3 +1 23 14 2 1 0 0 0 1 1 0 9 20 1 0 1 1 0 0 1 0 12 1 +1 24 20 1 0 1 0 0 0 1 0 9 14 0.6 1 0 1 1 1 0 1 6 4 +1 25 7 0.6 1 0 0 0 1 1 1 6 35 1 0 1 1 1 0 1 -1 9 4 +1 26 50 2 0 0 0 0 0 2 1 1.2 3.5 0.3 1 1 1 1 1 0 -1 3.6 4 +1 27 35 0.6 0 1 0 0 1 0 1 1.2 7 2 1 0 1 1 0 2 -1 6 3 +1 28 50 3 1 1 0 0 0 0 1 0.6 3.5 0.3 0 0 1 1 1 2 -1 3.6 1 +1 29 35 3 1 0 1 0 0 0 -1 0.6 7 0.3 0 1 0 1 1 2 1 6 3 +1 30 35 0.3 1 1 1 0 1 0 -1 3.6 7 3 0 0 0 1 0 2 1 1.2 4 +1 31 7 0.3 1 0 1 1 0 0 1 3.6 35 3 0 1 0 0 1 2 -1 0.6 2 +1 32 20 1 1 1 0 1 1 1 0 12 14 2 0 0 1 0 0 1 0 9 4 +1 33 14 1 1 0 1 0 0 1 0 12 20 1 0 1 0 0 1 1 0 12 3 +1 34 3.5 0.6 0 1 0 1 0 0 1 1.2 50 0.6 1 0 1 0 1 2 -1 3.6 2 +1 35 7 3 0 0 1 0 1 2 1 0.6 35 0.3 1 1 0 1 0 0 -1 6 4 +1 36 20 2 0 1 1 1 0 1 0 12 20 1 1 0 0 0 1 1 0 12 4 +|||||||||| +design +;alts = alt1*, alt2*, alt3 +;rows = 36 +;block = 4 + +;eff = (mnl,d) +;rep = 1000 +;bseed = 2333344 +;rseed = 2333344 + +;con +;model: + +U(alt1) = asc[-0.03]+bgroesse[0.01]*groesse[3.5,7,14,20,35,50]+bentfernung[-0.24]*entfernung[0.3,0.6,1,2,3] +bgemeinschaft[0.2]*gemeinschaft[0,1]+bkultur[0.14]*kultur[0,1]+bumweltbildung[0.19]*umweltbildung[0,1]+btoiletten[0.52]*toiletten[0,1]+bspiel[0.1]*spiel[0,1]+bpflegeint[0.18]*pflegeint[0,1,2]+bpflegeziele[0.08]*pflegeziele[-1,0,1]+bbeitrag[-0.21]*beitrag[0.6,1.2,3.6,6,9,12]/ +U(alt2) = asc +bgroesse *groesse +bentfernung *entfernung +bgemeinschaft *gemeinschaft +bkultur *kultur +bumweltbildung *umweltbildung +btoiletten *toiletten +bspiel *spiel +bpflegeint*pflegeint+bpflegeziele*pflegeziele+bbeitrag*beitrag +$ \ No newline at end of file diff --git a/parameters_SE Design-Agri.R b/parameters_SE Design-Agri.R index 1cea65974f6df7829505d66a6b28d067ec51f560..13fafb8104ea9b43a8dee3088388ad640fd25385 100644 --- a/parameters_SE Design-Agri.R +++ b/parameters_SE Design-Agri.R @@ -33,3 +33,5 @@ u<-list( v1 =V.1 ~ bprof*alt1.professional+ bexp * alt1.expert + bdomestic * alt1.domestic + bforeign * alt1.foreign + bdamage*alt1.damage + bprice * alt1.compensation, v2 =V.2 ~ bprof*alt2.professional + bexp * alt2.expert + bdomestic * alt2.domestic + bforeign * alt2.foreign + bdamage*alt2.damage + bprice * alt2.compensation, v3 =V.3 ~ basc) + +source("simulationcore_purrr.R") \ No newline at end of file diff --git a/parameters_ip2.R b/parameters_ip2.R index 152dcc6b09496223ddd6c20644528f1fae28f8e8..3fbad85329a5f61a1d13917330e455029600d22e 100644 --- a/parameters_ip2.R +++ b/parameters_ip2.R @@ -5,7 +5,7 @@ source("prior_est/scripts/priordetermination.R") designpath<- "Designs/" resps =360 # number of respondents -nosim=2 # number of simulations to run (about 500 is minimum) +nosim=1000 # number of simulations to run (about 500 is minimum) diff --git a/parameters_ip2_parks.R b/parameters_ip2_parks.R new file mode 100644 index 0000000000000000000000000000000000000000..9d3f52b06b1169005c339d969ee4f6039fd12c75 --- /dev/null +++ b/parameters_ip2_parks.R @@ -0,0 +1,24 @@ + + +source("prior_est/scripts/priordetermination_parks.R") + +designpath<- "Designsparks/" + +resps =1080 # number of respondents +nosim=2000 # number of simulations to run (about 500 is minimum) + + + + +## If beta values come from other source +for (ano in 1:length(priors)) { + assign(names(priors[ano]),priors[ano]) +} + +#place your utility functions here +u<-list( + v1 =V.1~ basc +bgroesse*alt1.groesse+ bentfernung * alt1.entfernung + bgemeinschaft * alt1.gemeinschaft + bkultur * alt1.kultur + bumweltbildung*alt1.umweltbildung + btoiletten * alt1.toiletten+ bspiel*alt1.spiel + bpflegeint*alt1.pflegeint+bpflegeziele*alt1.pflegeziele+ bbeitrag*alt1.beitrag , + v2 =V.2~ basc +bgroesse*alt2.groesse+ bentfernung * alt2.entfernung + bgemeinschaft * alt2.gemeinschaft + bkultur * alt2.kultur + bumweltbildung*alt2.umweltbildung + btoiletten * alt2.toiletten+ bspiel*alt2.spiel + bpflegeint*alt2.pflegeint+bpflegeziele*alt2.pflegeziele+ bbeitrag*alt2.beitrag, + v3 =V.3~ 0) + + diff --git a/prior_est/04_CL_PS_F.R b/prior_est/04_CL_PS_F.R new file mode 100644 index 0000000000000000000000000000000000000000..8b3d40c69c8a98ad6d0b73d4cf93b7bf22abd0c2 --- /dev/null +++ b/prior_est/04_CL_PS_F.R @@ -0,0 +1,292 @@ +###################################################################### +### Projekt : GartenLeistungen II ### +### Beschreibung : Choice Model mit Apollo-Paket ### +### Conditional Logit im Preference Space ### +### Output : Flextable (Wordfile) ### +### Datum : 11.07.2023 ### +### R-Version : 4.3.1 ### +### Apollo Version: 0.2.9 ### +###################################################################### + + +### Environment loeschen +rm(list=ls()) + +### Arbeitspfad festlegen +wd <- "S:/10 GIS/GartenLeistungen/Auswertung GartenLeistungen/R_GL2/pilot" +setwd(wd) + +### Pakete laden (wenn nicht vorhanden, installieren) +if(!require(pacman)){ + install.packages("pacman") + library(pacman) +} + +p_load(apollo, flextable, magrittr, officer, haven, dplyr, stringr, readr, sjlabelled) + +# ################################################################# # +#### INITIALISE APOLLO AND LOAD DATA #### +# ################################################################# # + +### initialise apollo and core settings +apollo_initialise() +apollo_control= list ( + modelName = "Clogit", + modelDescr ="Conditional Logit in preference space", + indivID = "ID", + mixing = FALSE # True waere Mixed Logit +) + + +# Dataframe für Flextable erstellen +dat <- data.frame(matrix(NA,nrow=30,ncol=2)) + +dat[,1] <- c("asc\nEntstehung eines Referenzparks in der Nachbarschaft", "asc1", + "Größe","1", + "Entfernung","2", + "Gemeinschaftsaktivitäten","Gemeinschaft1", + "Kulturveranstaltungen","Kultur1", + "Umweltbildungsangebote","Bildung1", + "Pflegeintensität\nje Stufe besserer Pflege","3", + "Pflegeziele\nmit Vielfalt im Vordergund","4", + "Toiletten","toilet1", + "Spiel- und Sportgeräte","Spielsport1", + "Beitrag\npro 1 €","5", + "Anzahl","LL(start)","LL(0)","LL(final)","Rho-square","Adj. Rho-square","AIC","BIC") +colnames(dat) <- c("Attribute","Praeferenz") + +### Datensatz aus Aufbereitungs-Skript laden +load("02_apollodataF.RData") +# falls labelled data genutzt wird: (hier für Frankfurt aber nicht der Fall) +# for (col in names(apollodata_F)) { +# apollodata_F[[col]] <- as.numeric(val_labels(apollodata_F[[col]])) +# } +database <- as.data.frame(apollodata_F) +database <- database[order(database$ID),] +#database <- database[-which(is.na(database$choice)),] + +# ################################################################# # +#### DEFINE apollo_beta() #### +# ################################################################# # + +### Startwerte festlegen +apollo_beta=c(asc = 0, + b_groesse = 0, + b_entfernung = 0, + b_gemeinschaft = 0, + b_kultur = 0, + b_umweltbildung = 0, + b_toiletten = 0, + b_spiel = 0, + b_pflegeint = 0, + b_pflegeziele = 0, + b_beitrag = 0) + +# ################################################################# # +#### DEFINE MODEL AND LIKELIHOOD FUNCTION #### +# ################################################################# # + +### keine Parameter fix halten +apollo_fixed = c() + +### validieren +apollo_inputs = apollo_validateInputs() + +apollo_probabilities=function(apollo_beta, apollo_inputs, functionality="estimate"){ + + ### Function initialisation: do not change the following three commands + ### Attach inputs and detach after function exit + apollo_attach(apollo_beta, apollo_inputs) + on.exit(apollo_detach(apollo_beta, apollo_inputs)) + + ### Create list of probabilities P + P = list() + + ### List of utilities (later integrated in mnl_settings below) + V = list() + V[['alt1']] = (b_groesse * GROESSE.1 + b_entfernung * ENTFERNUNG.1 + + b_gemeinschaft * GEMEINSCHAFTSAKTIVITAETEN.1 + b_kultur * KULTURVERANSTALTUNGEN.1 + + b_umweltbildung * UMWELTBILDUNG.1 + b_toiletten * TOILETTEN.1 + + b_spiel * SPIEL_SPORT.1 + + b_pflegeint * PFLEGEINTENSITAET.1 + b_pflegeziele * PFLEGEZIELE.1 + b_beitrag * BEITRAG.1) + + V[['alt2']] = (b_groesse * GROESSE.2 + b_entfernung * ENTFERNUNG.2 + + b_gemeinschaft * GEMEINSCHAFTSAKTIVITAETEN.2 + b_kultur * KULTURVERANSTALTUNGEN.2 + + b_umweltbildung * UMWELTBILDUNG.2 + b_toiletten * TOILETTEN.2 + + b_spiel * SPIEL_SPORT.2 + + b_pflegeint * PFLEGEINTENSITAET.2 + b_pflegeziele * PFLEGEZIELE.2 + b_beitrag * BEITRAG.2) + + V[['alt3']] = (asc + b_groesse * GROESSE.3 + b_entfernung * ENTFERNUNG.3 + + b_gemeinschaft * GEMEINSCHAFTSAKTIVITAETEN.3 + b_kultur * KULTURVERANSTALTUNGEN.3 + + b_umweltbildung * UMWELTBILDUNG.3 + b_toiletten * TOILETTEN.3 + + b_spiel * SPIEL_SPORT.3 + + b_pflegeint * PFLEGEINTENSITAET.3 + b_pflegeziele * PFLEGEZIELE.3 + b_beitrag * BEITRAG.3) + + ### Define settings for MNL model component + mnl_settings = list( + alternatives = c(alt1=1, alt2=2, alt3=3), + avail = 1, # all alternatives are available in every choice + choiceVar = choice, + V = V # tell function to use list vector defined above + #rows = sample==i #not needed, für Frankfurt inkludieren wir alle + ) + + ### Compute probabilities using MNL model + P[['model']] = apollo_mnl(mnl_settings, functionality) + + ### Take product across observation for same individual + P = apollo_panelProd(P, apollo_inputs, functionality) + + ### Average across inter-individual draws - nur bei Mixed Logit! + #P = apollo_avgInterDraws(P, apollo_inputs, functionality) + + ### Prepare and return outputs of function + P = apollo_prepareProb(P, apollo_inputs, functionality) + return(P) +} + + +# ################################################################# # +#### MODEL ESTIMATION #### +# ################################################################# # + +model = apollo_estimate(apollo_beta, apollo_fixed, + apollo_probabilities, apollo_inputs) + +### model estmates speichern? +ps_model <- model +save(ps_model, file = "04_CL_PS_F_estimates.RData") + +# ################################################################# # +#### MODEL OUTPUTS #### +# ################################################################# # + + +### relevante variablen aus Model-Output extrahieren +z <- length(model$estimate) +est <- c(model$estimate[1:z-1]*10,model$estimate[z]/10) +se <- c(model$se[1:z-1]*10,model$se[z]/10) +t1 <- est-1.64*se +t2 <- est+1.64*se +n <- model$nIndivs +## stattdessen: output in datei speichern, und danach löschen: +apollo_saveOutput(model, saveOutput_settings = list(printPVal = 1)) +s <- read_csv("Clogit_estimates.csv", show_col_types = FALSE) +file.remove(c("Clogit_estimates.csv", "Clogit_model.rds", "Clogit_output.txt", "Clogit_iterations.csv")) +p <- s$`Rob.p-val(0)`/2 # divide by 2 to get the one sided robust p value + + +nParams <- length(model$apollo_beta) +nFreeParams <- nParams +if(!is.null(model$apollo_fixed)) nFreeParams <- nFreeParams - length(model$apollo_fixed) + +# Tabelle erstellen (Umweg über df nicht unbedingt nötig, aber so ähnlich wie bei LBS) +df <- as.data.frame(matrix(data=NA,nrow=z*2+8,ncol=2)) +rownames(df) <- dat[,1] + +# Schleife fuer Signifikanz-Sterne +p_wert <- function(p){ + if(p < 0.01){print("***")} + else{if(p < 0.05){print("**")} + else{if(p < 0.1){print("*")} + else{print("")}}} +} + + +# Tabelle auffuellen, alles auf zwei Nachkommastellen runden +for(j in 1:z){ + df[j*2-1,1] <- paste0(round(est[j], 2)," [",round(t1[j],2),";",round(t2[j],2),"]",p_wert(p[j])) + df[j*2,1] <- paste0("(",round(se[j],2),")") + if(j == z){ + x <-as.numeric(paste0(format(est[j], digits=2, nsmall = 2))) # Koeffizient des Beitrages + y <- match(TRUE,round(x, 1:20) == x) # Nachkommastellen des Beitragskoeffizienten + df[j*2-1,1] <- paste0(x," [",format(round(t1[j], digits=y), scientific = FALSE),";",format(round(t2[j], digits=y), scientific = FALSE),"]",p_wert(p[j])) + df[j*2,1] <- paste0("(",format(round(se[j], digits=y), scientific = FALSE),")") + } +} +rm(j) + + +# Model measures fuer Fusszeile in Tabelle ergaenzen +df[z*2+1,1] <- n +df[z*2+2,1] <- round(model$LLStart,4) +df[z*2+3,1] <- round(model$LL0,4) +df[z*2+4,1] <- round(model$LLout,4) +df[z*2+5,1] <- round(1-(model$maximum/model$LL0),4) +df[z*2+6,1] <- round(1-((model$maximum-nFreeParams)/model$LL0),4) +df[z*2+7,1] <- round(-2*model$maximum + 2*nFreeParams,2) +df[z*2+8,1] <- round(-2*model$maximum + nFreeParams*log(model$nObs),2) + +dat[,2] <- df[,1] + +# parameter speichern? +# save(apollo_control,database,model,apollo_beta,apollo_fixed,apollo_probabilities,apollo_inputs, +# est,se,n,file=paste("04_clogit_parameter_sample",i,".RData",sep="")) + + +### Dezimalpunkte in Kommas umwandeln +dat <- dat %>% + mutate(across(.cols= c(2:ncol(dat)),.fns = ~str_replace_all(., "\\.", "\\,"))) + + + +# ################################################################# # +#### Flextable #### +# ################################################################# # + +### Einstellungen fuer Tabellenkopf und Fusszeile +my_header <- data.frame(col_keys=colnames(dat), + line1 = c("Model Results - Conditional logit"), + line2 = c("Attribute","Praeferenz"), + stringsAsFactors=FALSE) + +my_footer <- data.frame(col_keys=colnames(dat), + line1 = c("*** 0,01 ; ** 0,05 ; * 0,1"), + line2 = c("Referenzpark: 0 m Entfernung, keine Gemeinschaftsaktivitäten, + keine Kulturveranstaltungen, keine Umweltbildungsangebote, + keine Toiletten, keine Spiel- und Sportgeräte, Basispflege, + Vielfalt und Nutzung sind gleich gewichtet"), + stringsAsFactors=FALSE) + +### graphische Einstellungen fuer Flextable +flex <- flextable(dat) %>% + theme_booktabs() %>% + set_header_df(mapping = my_header, key="col_keys") %>% + set_footer_df(mapping = my_footer, key="col_keys") %>% + border(i=2,border.bottom=fp_border(color="black",width=1),part="header") %>% + fontsize(size=12,i=1,part="header") %>% + align(align="center",part="header") %>% + align(align="right",part="footer") %>% + border(border.top=fp_border(color="black",width=1),part="footer") %>% + border(i=23,border.top=fp_border(width=1)) %>% + bold(j=1,part="body") %>% + bold(i=1:2,part="header") %>% + font(fontname="Calibri",part="body") %>% + font(fontname="Calibri",part="header") %>% + merge_h(part="footer") %>% + merge_at(i =1:2,j=1,part="body") %>% + merge_at(i =3:4,j=1,part="body") %>% + merge_at(i =5:6,j=1,part="body") %>% + merge_at(i =7:8,j=1,part="body") %>% + merge_at(i =9:10,j=1,part="body") %>% + merge_at(i =11:12,j=1,part="body") %>% + merge_at(i =13:14,j=1,part="body") %>% + merge_at(i =15:16,j=1,part="body") %>% + merge_at(i =17:18,j=1,part="body") %>% + merge_at(i =19:20,j=1,part="body") %>% + merge_at(i =21:22,j=1,part="body") %>% + merge_at(i=1,part="header") %>% + width(j=2,width=2.5) %>% + width(j=1,width=4) + +#---------------------------------------------- +# Tabelle exportieren +#---------------------------------------------- + +### Vorschau in R: +print(flex) + +### Oeffnen und Speichern in Word: +#print(flex,preview="docx") +#set_prop <- prop_section(page_size = page_size(orient = "landscape")) +save_as_docx(flex, path = "04_clogit_F_Konfidenzintervall_preference_space.docx")#, pr_section = set_prop) diff --git a/prior_est/04_CL_PS_F_estimates.RData b/prior_est/04_CL_PS_F_estimates.RData new file mode 100644 index 0000000000000000000000000000000000000000..d7a217d98c7cb42ca23de014794f4b8b75a502ad Binary files /dev/null and b/prior_est/04_CL_PS_F_estimates.RData differ diff --git a/prior_est/data/02_apollodataF.RData b/prior_est/data/02_apollodataF.RData new file mode 100644 index 0000000000000000000000000000000000000000..ec2c2487292a933eca88d411ef14a902cb6eed8d Binary files /dev/null and b/prior_est/data/02_apollodataF.RData differ diff --git a/prior_est/scripts/data_cleaning.R b/prior_est/scripts/data_cleaning.R index cdf2db27fbc93edc6b6526eec3a721165165790d..d45c478dc7ea4ce181a2e721652dd12ae8236ea4 100644 --- a/prior_est/scripts/data_cleaning.R +++ b/prior_est/scripts/data_cleaning.R @@ -50,7 +50,7 @@ design12<-read_excel("prior_est/data/design_hauptstudie.xlsx") %>% as.data.frame() %>% reshape(timevar = "alt", idvar = "choice_set", direction = "wide" ) %>% ## daten in wide format mutate(GROESSE.3=0, ENTFERNUNG.3=0,GEMEINSCHAFTSAKTIVITAETEN.3=0, KULTURVERANSTALTUNGEN.3=0, UMWELTBILDUNG.3=0, GESTALTUNG.3=0, ZUGANG.3=0, BEITRAG.3=0) %>% - rename(set=choice_set) %>% + rename(set=choice_set) %>% {. ->> designforsim } %>% right_join(data, by="set") %>% arrange(ID,set) %>% mutate(choice=as.numeric(choice), diff --git a/prior_est/scripts/preamble.R b/prior_est/scripts/preamble.R index c8440a1f92f37fbd2f4c5f2291edbe8a5abe5677..c287f0bba7fd680cf4a4f9b2db0fd42563060b2c 100644 --- a/prior_est/scripts/preamble.R +++ b/prior_est/scripts/preamble.R @@ -18,6 +18,7 @@ library(DescTools) library(stringr) library("dplyr") library(purrr) +library("readr") select<-dplyr::select ## make sure dplyrs select is used and not the one from MASS diff --git a/prior_est/scripts/prepareolddesign.R b/prior_est/scripts/prepareolddesign.R new file mode 100644 index 0000000000000000000000000000000000000000..ab83f7a0db0bf2b756892adb35a038dcc9a8db4d --- /dev/null +++ b/prior_est/scripts/prepareolddesign.R @@ -0,0 +1,17 @@ + + +designtosave <- designforsim %>% + select(!starts_with("L_"), -block.2) %>% + rename("Choice situation"=set, Block=block.1) %>% + mutate(Design=1, + across(matches("^GROESSE.[1-2]") |matches("^BEITRAG.[1-2]") , ~./10 ) + ) %>% +rename_with(tolower, .cols = matches("[1-3]$")) %>% + rename_with(~ paste0("alt", + str_extract(.x,"[1-3]$"), + ".", + str_remove(.x,"\\.[1-3]$") ), + .cols = matches("[1-3]$")) %>% + rename_with(~ str_remove_all(.x,"saktivitaeten|veranstaltungen"),everything()) + +write_delim(designtosave, "Designs/designjeem.ngd" ,delim = "\t") diff --git a/prior_est/scripts/priordetermination.R b/prior_est/scripts/priordetermination.R index 671725e36fe5ace6427258e5d3c108cba09c6a15..a3c9cf3e981102fb34a4cc9a1292dbdaa3c6de39 100644 --- a/prior_est/scripts/priordetermination.R +++ b/prior_est/scripts/priordetermination.R @@ -2,6 +2,7 @@ source("prior_est/scripts/preamble.R") source("prior_est/functions/apollo_help_functions.R") source("prior_est/scripts/data_cleaning.R") +source("prior_est/scripts/prepareolddesign.R") source("prior_est/scripts/modelclogitbase.R") priors <- round(modelclogitbase$estimate, 2) diff --git a/prior_est/scripts/priordetermination_parks.R b/prior_est/scripts/priordetermination_parks.R new file mode 100644 index 0000000000000000000000000000000000000000..2d1eac157f39e5b4cef204e47b48d3bf8a6a95f7 --- /dev/null +++ b/prior_est/scripts/priordetermination_parks.R @@ -0,0 +1,50 @@ + +source("prior_est/scripts/preamble.R") + +load("prior_est/04_CL_PS_F_estimates.RData") +load("prior_est/data/02_apollodataF.RData") + + + +priors <- round(ps_model$estimate, 2) + +names(priors)<- str_remove(names(priors),"_") + + +priorsasc <- priors[grep("asc",names(priors))] +names(priors)<- str_replace(names(priors),"asc","basc") + + + +priorsb <- priors[-grep("asc",names(priors))] +length(priors) +names(priors) + + + + + +attlevels <- apollodata_F %>% + select(ends_with(".1")) %>% + rename_with(~str_remove(.,".1")) %>% + #relocate("ZUGANG", .before="GESTALTUNG") %>% + as.list() %>% map(~paste0(sort(unique(.x)), collapse = ",")) + + +genU <-function(alts=3){ +require(purrr) + paste0(map_chr(1:alts, + ~paste0("U(alt",.,") = ", + paste0(names(priorsasc),"[", priorsasc,"]", collapse = "+"), + "+", + paste0(names(priorsb),"[",priorsb,"]*", + str_remove(names(priorsb),pattern = "^b") , + "[",attlevels,"]" , + collapse = "+"))), collapse = "/ \n") + + +} + + +t <-genU(2) +cat(t) diff --git a/simulationcore_purrr.R b/simulationcore_purrr.R index 1bb3c2ae74576a00a0e63613ab58c778574b66ae..acb7dfff616bf1ea393b93d7919d6cabc0020d1d 100644 --- a/simulationcore_purrr.R +++ b/simulationcore_purrr.R @@ -1,15 +1,12 @@ rm(list=ls()) - - - - source("functions.R") +source("functions.R") library("formula.tools") #source("parameters_SE Design-Agri.R") -source("parameters_ip2.R") +source("parameters_ip2_parks.R") designfile<-list.files(designpath,full.names = T)