Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Modelling wind direction and fire spread

    I'm interested in finding whether wind direction is a good predictor of the direction of fire spread. What is a suitable modelling technique for this question?

    I have formatted my dataset to create variables of fire spread direction (angle between the centroid of the burned area and start of fire) and wind direction (angle the wind is blowing towards).
    So far, I have considered: converting these angles to discrete categorical variables (0: North, 1: Northeast ... 7: Northwest), and then running a logit on the variable octant_angle_diff (e.g. +1 if fire_angle is East and wind_angle is South-east). I'm not sure how to interpret the estimate, though I think it would be a measure of how wind direction (as the deviation of wind angle from fire spread angle) is a predictor of fire spread direction.

    Example:
    Code:
    clear all 
    input fire_id    fire_angle    wind_angle    angle_diff
    1    32    45    13
    2    266    225    -41
    3    104    270    166
    4    220    45    -175
    5    82    0    -82
    6    45    45    0
    7    85    225    140
    8    80    270    -170
    9    262    270    8
    10    253    225    -28
    end 
    
    gen fire_angle_octant = 0 if (fire_angle > (15 * 22.5) | fire_angle <= (1 * 22.5))
    replace fire_angle_octant = 1 if (fire_angle > (1 * 22.5) & fire_angle <= (3 * 22.5))
    replace fire_angle_octant = 2 if (fire_angle > (3 * 22.5) & fire_angle <= (5 * 22.5))
    replace fire_angle_octant = 3 if (fire_angle > (5 * 22.5) & fire_angle <= (7 * 22.5))
    replace fire_angle_octant = 4 if (fire_angle > (7 * 22.5) & fire_angle <= (9 * 22.5))
    replace fire_angle_octant = 5 if (fire_angle > (9 * 22.5) & fire_angle <= (11 * 22.5))
    replace fire_angle_octant = 6 if (fire_angle > (11 * 22.5) & fire_angle <= (13 * 22.5))
    replace fire_angle_octant = 7 if (fire_angle > (13 * 22.5) & fire_angle <= (15 * 22.5))
    
    
    gen wind_angle_octant = 0 if (wind_angle > (15 * 22.5) | wind_angle <= (1 * 22.5))
    replace wind_angle_octant = 1 if (wind_angle > (1 * 22.5) & wind_angle <= (3 * 22.5))
    replace wind_angle_octant = 2 if (wind_angle > (3 * 22.5) & wind_angle <= (5 * 22.5))
    replace wind_angle_octant = 3 if (wind_angle > (5 * 22.5) & wind_angle <= (7 * 22.5))
    replace wind_angle_octant = 4 if (wind_angle > (7 * 22.5) & wind_angle <= (9 * 22.5))
    replace wind_angle_octant = 5 if (wind_angle > (9 * 22.5) & wind_angle <= (11 * 22.5))
    replace wind_angle_octant = 6 if (wind_angle > (11 * 22.5) & wind_angle <= (13 * 22.5))
    replace wind_angle_octant = 7 if (wind_angle > (13 * 22.5) & wind_angle <= (15 * 22.5))
    
    gen octant_angle_diff =  wind_angle_octant - fire_angle_octant
    
    mlogit octant_angle_diff
    Thank you in advance,

    Michael

  • #2
    The cosine of fire direction minus wind direction is a possible predictor. Trigonometry is your friend here.

    Comment


    • #3
      That is, your discretisation does not honour the directional flavour of the data, not only by coarsening detail, but by ignoring circular order, as (e.g.) octants 0 and 7 are adjacent. Naturally, the octant labels are conventional and don't affect model fit in terms of indicator variables, but there are much better methods.

      The difference between two directions theta and phi (assuming measurement in degrees, for example that 0 = 360 deg is N and 180 deg is S) is

      min(abs(theta - phi), 360 - abs(theta - phi))

      which is seen by considering that we can measure differences clockwise (meaning, compass-wise) or in the opposite direction, and the difference is the smaller of the two. So directions 10 deg and 350 deg differ by min(340, 20) which is 20.

      and its cosine will correspondingly be 1 if theta and phi coincide and 0 if they differ by 180 deg. (directions are opposite).

      It's often a good idea to keep the detail of the sign, so that positive differences are compass-wise and negative differences are the opposite.

      See also e.g. a command circdiff.ado on SSC.

      There are other complications. Contrary to #1, in meteorology and climatology wind direction is described by the direction the wind is coming from (the reason being that that has implications for the air concerned). This is in contrast with other conventions, so that people travelling North or slopes facing East really are going Northwards or facing Eastwards.

      Also, wind direction often varies both capriciously and systematically, e.g. there can be katabatic and anabatic winds in a deep valley. or onshore and offshore winds on or near the coast.

      I have given talks on circular statistics to Stata meetings with an almost universal reaction that people have never met this kind of data and don't imagine they ever will, but there are many books and hundreds of papers on it.

      Comment


      • #4
        Thank you, Nick. That is a much more elegant way to find circular difference. I will also explore using the trigonometry values.

        There are other complications. Contrary to #1, in meteorology and climatology wind direction is described by the direction the wind is coming from (the reason being that that has implications for the air concerned). This is in contrast with other conventions, so that people travelling North or slopes facing East really are going Northwards or facing Eastwards.
        Yes, I had converted the wind direction (where the wind is coming from) to where the wind is heading (N wind at 0 degrees becomes 180 degrees). Sorry, I should have used another term for that variable.

        Comment

        Working...
        X