Open wcornwell opened 3 years ago
Probably worth throwing in the mix (with K=3
?) if trying to simultaneously predict the green/dead/bare proportions? Implementation options are quite limited though i think. Would also have to consider an implementation that supports 0
and 1
values (doesn't exist in R i don't think), although I'm not sure how often (or if at all!) it occurs in the star transect data.
Key will be to keep in mind we have a prediction problem - we want to avoid silly values at the edge/outside the training range. Beta/Dirichlet might actually be OK in that regard (but that paper by Jacob is mostly focused on inference from the param estimates, so hard to tell).
I had a play with Dirichlet k=3.
There are a few <0 and >1 values in the star transect data, which might be errors?
right now there are lots of missing values from landsat, but I assume that relates to issues in #1. but leaving them out and also the <0 and >1 values DirichReg seems to fit well and quickly.
I guess we have a general problem to solve, which is how to do model evaluation. DirichReg is likelihood based, but maybe some of the other methods aren't?
they must have left them out of the original paper also, see figure 2:
Hi @wcornwell, yes there is an error for npv, completely forgot about it and went straight into Google EE. Could be a minor detail I missed from the original email containing the formulas for overstory, midstory, ground and effective cover.
Midstory plants are in:
mid_g (green)
mid_d (dead)
mid_b (bare)
Overstory (tree canopy) plants are in:
over_g (green)
over_d (dead)
over_b (bare)
You need to calculate the proportion of each fraction in each vegetation level, and then work out the overall proportion that the satellite would see.
# Overstory fractions
overfpc = over_g / (100 - over_b)
overdpc = over_d / (100 - over_b)
overppc = (over_g + over_d + over_b) / 100
# Midstory fractions
midppc = (mid_g + mid_d + mid_b) / 100
satmidfpc = (mid_g / 100) * (1 - overppc)
satmiddpc = (mid_d / 100) * (1 - overppc)
satmidbpc = (mid_b / 100) * (1 - overppc)
# Ground cover fractions
groundpv = green / 100
groundnpv = (dead + litter) / 100
groundbare = (crust + dist + rock) / 100
groundcrypt = crypto / 100
groundtotcov = (green + dead + litter + crust + dist + rock) / 100
satgroundpv = groundpv * (1 - midppc) * (1 - overppc)
satgroundnpv = groundnpv * (1 - midppc) * (1 - overppc)
satgroundbare = groundbare * (1 - midppc) * (1 - overppc)
satgroundcrypt = groundcrypt * (1 - midppc) * (1 - overppc)
# Fractional cover
# pv is photosynthetic cover
# npv is non-pv cover
# bs is bare soil and rock
pv = 100 * (overfpc + satmidfpc + satgroundpv)
npv = 100 * (overdpc + overbpc + satmiddpc + satmidbpc + satgroundnpv + satgroundcrypt)
bs = 100 * satgroundbare
I think there is a missing calculation for overbpc (used for npv) @adrian-g-fisher?
Yes, you're right @FabriceSamonte I left out the calculation for overbpc. I edited the code, but then github said I couldn't commit to the repo and I needed to create a branch... can you see the new fork? Not sure if I need to do anything more (this is a new thing for me)
Yes, you're right @FabriceSamonte I left out the calculation for overbpc. I edited the code, but then github said I couldn't commit to the repo and I needed to create a branch... can you see the new fork? Not sure if I need to do anything more (this is a new thing for me)
You could try a pull request (will request @FabriceSamonte to merge the changes in your fork)!
Hi Adrian,
Not at the moment, create a pull request and I’ll merge everything! Otherwise, I’ve invited everyone to have collaborator access rights.
Cheers, Fabrice
On 11 Jan 2021, at 12:57 pm, Mitchell Lyons notifications@github.com<mailto:notifications@github.com> wrote:
Yes, you're right @FabriceSamontehttps://github.com/FabriceSamonte I left out the calculation for overbpc. I edited the code, but then github said I couldn't commit to the repo and I needed to create a branch... can you see the new fork? Not sure if I need to do anything more (this is a new thing for me)
You could try a pull request (will request @FabriceSamontehttps://github.com/FabriceSamonte to merge the changes in your fork)!
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/FabriceSamonte/ee_fractional_cover/issues/2#issuecomment-757587697, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AETME43HZ6HRZKRBZXVR6NDSZJLHHANCNFSM4VSPI3QQ.
my dirchlet model is worse than @FabriceSamonte tensor flow thing (RMSE = 11,18,14) but it would be trivial to implement i guess
Just for reference, the published model developed with 1171 field sites in 2015 achieved RMSE of: 11 % for PV 16 % for NPV 13 % for BS
https://besjournals.onlinelibrary.wiley.com/doi/10.1111/2041-210X.13234