Mercurial > repos > greg > insect_phenology_model
comparison insect_phenology_model.R @ 62:3116ddd4c26d draft
Uploaded
author | greg |
---|---|
date | Fri, 08 Nov 2019 12:49:57 -0500 |
parents | 734f8e4dfbe5 |
children | c5df0777fa31 |
comparison
equal
deleted
inserted
replaced
61:734f8e4dfbe5 | 62:3116ddd4c26d |
---|---|
249 } | 249 } |
250 return(mortality.probability) | 250 return(mortality.probability) |
251 } | 251 } |
252 | 252 |
253 mortality.egg = function(temperature, adj=0) { | 253 mortality.egg = function(temperature, adj=0) { |
254 # If no input from adjustment, default | 254 if (adj == 0) { |
255 # value is 0 (data from Nielsen, 2008). | 255 # If no input from adjustment, default |
256 T.mortality = c(15, 17, 20, 25, 27, 30, 33, 35); | 256 # value is 0 (data from Nielsen, 2008). |
257 egg.mortality = c(50, 2, 1, 0, 0, 0, 5, 100); | 257 T.mortality = c(15, 17, 20, 25, 27, 30, 33, 35); |
258 # Calculates slopes and intercepts for lines. | 258 egg.mortality = c(50, 2, 1, 0, 0, 0, 5, 100); |
259 slopes = NULL; | 259 # Calculates slopes and intercepts for lines. |
260 intercepts = NULL; | 260 slopes = NULL; |
261 for (i in 1:length(T.mortality)) { | 261 intercepts = NULL; |
262 slopes[i] = (egg.mortality[i+1] - egg.mortality[i]) / (T.mortality[i+1] - T.mortality[i]); | 262 for (i in 1:length(T.mortality)) { |
263 intercepts[i] = -slopes[i] * T.mortality[i] + egg.mortality[i]; | 263 slopes[i] = (egg.mortality[i+1] - egg.mortality[i]) / (T.mortality[i+1] - T.mortality[i]); |
264 } | 264 intercepts[i] = -slopes[i] * T.mortality[i] + egg.mortality[i]; |
265 # Calculates mortality based on temperature. | 265 } |
266 mortality.probability = NULL; | 266 # Calculates mortality based on temperature. |
267 for (j in 1:length(temperature)) { | 267 mortality.probability = NULL; |
268 mortality.probability[j] = if(temperature[j] <= T.mortality[2]) { | 268 for (j in 1:length(temperature)) { |
269 temperature[j] * slopes[1] + intercepts[1]; | 269 mortality.probability[j] = if(temperature[j] <= T.mortality[2]) { |
270 } else if (temperature[j] > T.mortality[2] && temperature[j] <= T.mortality[3]) { | 270 temperature[j] * slopes[1] + intercepts[1]; |
271 temperature[j] * slopes[2] + intercepts[2]; | 271 } else if (temperature[j] > T.mortality[2] && temperature[j] <= T.mortality[3]) { |
272 } else if (temperature[j] > T.mortality[3] && temperature[j] <= T.mortality[4]) { | 272 temperature[j] * slopes[2] + intercepts[2]; |
273 temperature[j] * slopes[3] + intercepts[3]; | 273 } else if (temperature[j] > T.mortality[3] && temperature[j] <= T.mortality[4]) { |
274 } else if (temperature[j] > T.mortality[4] && temperature[j] <= T.mortality[5]) { | 274 temperature[j] * slopes[3] + intercepts[3]; |
275 temperature[j] * slopes[4] + intercepts[4]; | 275 } else if (temperature[j] > T.mortality[4] && temperature[j] <= T.mortality[5]) { |
276 } else if (temperature[j] > T.mortality[5] && temperature[j] <= T.mortality[6]) { | 276 temperature[j] * slopes[4] + intercepts[4]; |
277 temperature[j] * slopes[5] + intercepts[5]; | 277 } else if (temperature[j] > T.mortality[5] && temperature[j] <= T.mortality[6]) { |
278 } else if (temperature[j] > T.mortality[6] && temperature[j] <= T.mortality[7]) { | 278 temperature[j] * slopes[5] + intercepts[5]; |
279 temperature[j] * slopes[6] + intercepts[6]; | 279 } else if (temperature[j] > T.mortality[6] && temperature[j] <= T.mortality[7]) { |
280 } else if (temperature[j] > T.mortality[7]) { | 280 temperature[j] * slopes[6] + intercepts[6]; |
281 temperature[j] * slopes[7] + intercepts[7]; | 281 } else if (temperature[j] > T.mortality[7]) { |
282 } | 282 temperature[j] * slopes[7] + intercepts[7]; |
283 # If mortality > 100, make it equal to 100. | 283 } |
284 # If mortality > 100, make it equal to 100. | |
285 mortality.probability[mortality.probability>100] = 100; | |
286 # If mortality <0, make equal to 0. | |
287 mortality.probability[mortality.probability<0] = 0; | |
288 } | |
289 } else { | |
290 # Make mortality adjustments based on adj parameter. | |
291 mortality.probability = (100 - mortality.probability) * adj + mortality.probability; | |
292 # if mortality > 100, make it equal to 100. | |
284 mortality.probability[mortality.probability>100] = 100; | 293 mortality.probability[mortality.probability>100] = 100; |
285 # If mortality <0, make equal to 0. | 294 # If mortality <0, make equal to 0. |
286 mortality.probability[mortality.probability<0] = 0; | 295 mortality.probability[mortality.probability<0] = 0; |
287 } | 296 # Change percent to proportion. |
288 # Make mortality adjustments based on adj parameter. | 297 mortality.probability = mortality.probability / 100; |
289 mortality.probability = (100 - mortality.probability) * adj + mortality.probability; | 298 } |
290 # if mortality > 100, make it equal to 100. | |
291 mortality.probability[mortality.probability>100] = 100; | |
292 # If mortality <0, make equal to 0. | |
293 mortality.probability[mortality.probability<0] = 0; | |
294 # Change percent to proportion. | |
295 mortality.probability = mortality.probability / 100; | |
296 return(mortality.probability) | 299 return(mortality.probability) |
297 } | 300 } |
298 | 301 |
299 mortality.nymph = function(temperature) { | 302 mortality.nymph = function(temperature) { |
300 if (temperature < 12.7) { | 303 if (temperature < 12.7) { |