GreenManureR supports experiments in which a green manure or cover crop (Mucuna, sunhemp, dhaincha and others) is incorporated, its residues decompose in litterbags, nutrients are released, and one or more succeeding crops (for example kharif and rabi) respond. The package links these three stages:
decomp_fit() and decomp_t50(): residue
decomposition;nutrient_release(): N, P, K and other nutrient
release;greenmanure_n_balance(): N inputs, crop uptake and
apparent balance;carryover_effect(): residual effects on succeeding
crops;gm_joint_analysis() and
greenmanure_report(): integration and reporting.The examples use simulated data (gm_litterbag,
gm_agronomy) that mimic the structure of a real
experiment.
head(gm_litterbag, 3)
#> treatment rep time mass N P K biomass_tha
#> 1 Mucuna 1 0 100 2.979516 0.2175153 1.813073 4.5
#> 2 Sunhemp 1 0 100 2.329112 0.1915362 1.496816 6.0
#> 3 Dhaincha 1 0 100 2.884645 0.2395456 2.080737 5.5
head(gm_agronomy, 3)
#> treatment fert_N block season gm_biomass gm_N grain_yield straw_yield
#> 1 Control 0 1 Kharif 0.000000 0.0 3.483003 4.528098
#> 2 Mucuna 0 1 Kharif 4.462961 2.9 4.055969 5.221543
#> 3 Sunhemp 0 1 Kharif 6.605967 2.3 3.650730 4.449040
#> grain_N straw_N
#> 1 1.160408 0.4727329
#> 2 1.083382 0.4550292
#> 3 1.072889 0.4003541With \(M\) the percentage of initial mass remaining, three models are fitted per group and ranked by AICc:
fit <- decomp_fit(gm_litterbag, time = "time", mass = "mass", group = "treatment")
fit$table[fit$table$selected, c("treatment", "model", "k", "k_slow", "pool_A", "R2", "AICc")]
#> treatment model k k_slow pool_A R2 AICc
#> 2 Mucuna double 0.05534686 0.003937137 0.5186680 0.9981959 105.0605
#> 6 Sunhemp asymptotic 0.03251040 NA NA 0.9937364 133.4892
#> 8 Dhaincha double 0.06455903 0.004476614 0.5539521 0.9971639 125.1666The time to 50% mass loss uses the selected model, with a Monte-Carlo interval based on the covariance matrix of the nonlinear least squares fit:
decomp_t50(fit)
#> treatment model p t50 lwr upr
#> 1 Mucuna double 0.5 34.00462 33.25355 34.86049
#> 2 Sunhemp asymptotic 0.5 69.84544 66.70327 73.72187
#> 3 Dhaincha double 0.5 26.05125 25.36616 26.81530Nutrient remaining is
mass x concentration / initial concentration, so values
above 100% indicate net immobilization. Supplying the dry matter input
(biomass, t/ha) also yields absolute release in kg/ha.
nr <- nutrient_release(gm_litterbag, nutrients = c("N", "P", "K"),
group = "treatment", biomass = "biomass_tha",
at = c(14, 30, 60))
nr$t50[, c("treatment", "nutrient", "model", "t50")]
#> treatment nutrient model t50
#> N.1 Mucuna N single 20.13608
#> N.2 Sunhemp N single 25.27763
#> N.3 Dhaincha N single 15.31434
#> P.1 Mucuna P single 27.25638
#> P.2 Sunhemp P single 34.46236
#> P.3 Dhaincha P single 22.91757
#> K.1 Mucuna K single 3.46431
#> K.2 Sunhemp K single 3.81323
#> K.3 Dhaincha K single 3.19321
subset(nr$release_at, nutrient == "N" & time == 30)
#> treatment model time nutrient remaining_pct released_pct released_kg_ha
#> N.2 Mucuna single 30 N 35.60463 64.39537 82.81938
#> N.5 Sunhemp single 30 N 43.92701 56.07299 76.57525
#> N.8 Dhaincha single 30 N 25.72158 74.27842 116.35267nb <- greenmanure_n_balance(gm_agronomy, by = "season")
s <- nb$summary
s[s$fert_N == 0 & s$treatment != "Control",
c("season", "treatment", "N_gm_input_mean", "N_uptake_mean", "ANR_mean", "NFRV_mean")]
#> season treatment N_gm_input_mean N_uptake_mean ANR_mean NFRV_mean
#> 2 Kharif Mucuna 130.0612 65.03263 10.544030 57.54414
#> 3 Kharif Sunhemp 146.3887 57.58448 4.229769 40.31416
#> 4 Kharif Dhaincha 152.1420 60.21704 5.773539 46.18545
#> 14 Rabi Mucuna 132.3036 76.42766 6.955677 NaN
#> 15 Rabi Sunhemp 142.0985 73.28045 4.361954 NaN
#> 16 Rabi Dhaincha 158.7326 77.58816 6.544048 NaNANR is the apparent N recovery from the green manure
relative to the control at the same fertilizer N level.
NFRV is the fertilizer N replacement value, obtained by
inverting a quadratic response fitted to the control plots; it is
NA when the yield lies outside the fitted range.
co <- carryover_effect(gm_agronomy, response = "grain_yield", strata = "fert_N",
season_levels = c("Kharif", "Rabi"))
co$effects[co$effects$fert_N == 0,
c("season", "treatment", "diff", "pct_change", "p_adj", "retention_vs_first")]
#> season treatment diff pct_change p_adj retention_vs_first
#> 1 Kharif Dhaincha 0.6460840 20.97387 0.0006141382 100.00000
#> 2 Kharif Mucuna 0.7854164 25.49703 0.0002147292 100.00000
#> 3 Kharif Sunhemp 0.5718379 18.56362 0.0007236459 100.00000
#> 4 Rabi Dhaincha 0.4332381 16.78844 0.0165446597 67.05601
#> 5 Rabi Mucuna 0.3119288 12.08757 0.0564379431 39.71508
#> 6 Rabi Sunhemp 0.2628912 10.18731 0.0564379431 45.97302
co$pooled
#> fert_N term F df1 df2 p
#> 1 0 treatment 19.526162 3 18 6.852818e-06
#> 2 0 treatment x season 2.867420 3 18 6.532786e-02
#> 3 60 treatment 34.025034 3 18 1.252912e-07
#> 4 60 treatment x season 7.937459 3 18 1.399908e-03
#> 5 120 treatment 12.853615 3 18 9.964931e-05
#> 6 120 treatment x season 1.766828 3 18 1.894973e-01The treatment x season term in the pooled analysis tests
whether the green manure effect changes between crops;
retention_vs_first gives the second-crop effect as a
percentage of the first-crop effect.
ja <- suppressWarnings(
gm_joint_analysis(fit, nr, nb, co, nutrient_name = "N", at_day = 60, fert_N_level = 0))
ja$data
#> treatment model k_mass t50 N_release_d60 N_gm_input ANR
#> 1 Dhaincha double 0.06455903 26.05125 93.38400 155.4373 6.158793
#> 2 Mucuna double 0.05534686 34.00462 87.32310 131.1824 8.749853
#> 3 Sunhemp asymptotic 0.03251040 69.84544 80.70418 144.2436 4.295862
#> NFRV yield_gain_pct_Kharif yield_gain_pct_Rabi
#> 1 46.18545 14.92144 9.753898
#> 2 57.54414 16.54269 8.378350
#> 3 40.31416 13.57742 5.931564With only three species the rank correlations in ja$cor
are descriptive; to draw inference, pool several sites or years.