A farm typology is proposed based on a PCA run for the selected variables

Load the ā€˜clean’ dataset, rename and select variables

# set working directory ## Change accordingly
setwd('~/Harare 2023/diversification_rotation/Florence')
# load package
require(tidyverse)
## Loading required package: tidyverse
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## āœ” dplyr     1.1.4     āœ” readr     2.1.5
## āœ” forcats   1.0.0     āœ” stringr   1.5.1
## āœ” ggplot2   3.5.1     āœ” tibble    3.2.1
## āœ” lubridate 1.9.3     āœ” tidyr     1.3.1
## āœ” purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## āœ– dplyr::filter() masks stats::filter()
## āœ– dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
rm(list = ls())
clean_survey <- readxl::read_excel('2024-10-07.CLEANED DATA FARMER SEGMENTATION.xlsx',
                                   sheet = 'Selected_data',
                                   skip = 2,
                                   trim_ws = T,
                                   .name_repair = 'universal')
## New names:
## • `ID NO` -> `ID.NO`
## • `AvgMZ_yield(kgs)` -> `AvgMZ_yield.kgs.`
## • `highestEdu_qualification(HHH)` -> `highestEdu_qualification.HHH.`
## • `Access_to_loan_during_2022/2023_season` ->
##   `Access_to_loan_during_2022.2023_season`
## • `Do_you_practice__irrigation_farming?` ->
##   `Do_you_practice__irrigation_farming.`
## • `Manure_application_in_Maize_field_during_2022/23_season` ->
##   `Manure_application_in_Maize_field_during_2022.23_season`
## • `Do_you_pracatice_intercroping?` -> `Do_you_pracatice_intercroping.`
## • `Do_you_practice_cover_croping?` -> `Do_you_practice_cover_croping.`
## • `Do_you_practice_integrated_pest_management?` ->
##   `Do_you_practice_integrated_pest_management.`
## • `Do_you_have_agroforestry_trees_in_your_farm?` ->
##   `Do_you_have_agroforestry_trees_in_your_farm.`
## • `Do_you_have_fruit_trees?` -> `Do_you_have_fruit_trees.`
## • `Do_you_own_any_vegetable_garden?` -> `Do_you_own_any_vegetable_garden.`
# List of variables 
names(clean_survey)
##  [1] "ID.NO"                                                  
##  [2] "Household_Head_Name"                                    
##  [3] "Age"                                                    
##  [4] "HHSize"                                                 
##  [5] "HH_income_"                                             
##  [6] "IncomeFarming"                                          
##  [7] "PercFarmIncome"                                         
##  [8] "Ncattle"                                                
##  [9] "Ngoats"                                                 
## [10] "Npigs"                                                  
## [11] "Nchickens"                                              
## [12] "TLU"                                                    
## [13] "TLU_density"                                            
## [14] "TotalLand"                                              
## [15] "AvgMZ_yield.kgs."                                       
## [16] "PercentageMaizeArea"                                    
## [17] "PercentageLegumeArea"                                   
## [18] "highestEdu_qualification.HHH."                          
## [19] "Access_to_loan_during_2022.2023_season"                 
## [20] "Do_you_practice__irrigation_farming."                   
## [21] "Manure_application_in_Maize_field_during_2022.23_season"
## [22] "Count_intens_options"                                   
## [23] "Do_you_pracatice_intercroping."                         
## [24] "Do_you_practice_cover_croping."                         
## [25] "Do_you_practice_integrated_pest_management."            
## [26] "Do_you_have_agroforestry_trees_in_your_farm."           
## [27] "Do_you_have_fruit_trees."                               
## [28] "Do_you_own_any_vegetable_garden."                       
## [29] "Count_sust_practices"
# Remove unnecessary columns and anonymize respondents 
descrip_survey <- clean_survey |>
  select(!c(Household_Head_Name )) 

famd_df <- descrip_survey |>
  select(!ID.NO) |>
  na.omit()

pca_df <- famd_df |>
  mutate(highestEdu_qualification.HHH. = case_when(
    highestEdu_qualification.HHH. == 'never_attended' ~ 0,
    highestEdu_qualification.HHH. == 'primary_school' ~ 1,
    highestEdu_qualification.HHH. == 'secondary' ~ 2,
    highestEdu_qualification.HHH. == 'tertiary' ~ 3,
    .default = NA) ,
         across(where(is.character),
                function(x) ifelse(x == 'no', 0, ifelse(x == 'yes', 1, NA))))

if(!dir.exists('initial_vars'))
  dir.create('initial_vars/')
if(!dir.exists('vars_subset'))
  dir.create('vars_subset')

Matrix of scatterplots to see correlations for pairs of variables

then a PCA is run

Here, all the 27 variables proposed are used to run a PCA. Boxplots are only plotted for a selection of variables. All plots are located in a folder named ā€œinitial_varsā€.

# choose appropriate palette for visualization
pal <- colorRampPalette(c('lightskyblue1', 'darkblue'))

# Correlation matrix to visualize data
P00 <- GGally::ggpairs(pca_df)
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
png('initial_vars/correlation_matrix.png', height = 25, width = 20, units = 'cm', res = 1000)
P00
ggsave('initial_vars/correlation_matrix.png')
## Saving 7.87 x 9.84 in image
dev.off()
## png 
##   2
# PCA on initially selected variables
res_pca <- FactoMineR::PCA(pca_df)
## Warning: ggrepel: 6 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps

## Warning: ggrepel: 1 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps

# choose how many dimensions to incorporate in the typology
# the more dimensions, the more variability is captured, and the more noise is introduced
res_pca$eig
##           eigenvalue percentage of variance cumulative percentage of variance
## comp 1  5.307824e+00           1.965861e+01                          19.65861
## comp 2  3.525534e+00           1.305753e+01                          32.71614
## comp 3  3.310232e+00           1.226012e+01                          44.97626
## comp 4  2.454007e+00           9.088916e+00                          54.06518
## comp 5  1.910601e+00           7.076300e+00                          61.14148
## comp 6  1.478511e+00           5.475966e+00                          66.61744
## comp 7  1.416861e+00           5.247633e+00                          71.86508
## comp 8  1.218511e+00           4.513003e+00                          76.37808
## comp 9  1.069621e+00           3.961559e+00                          80.33964
## comp 10 9.209886e-01           3.411069e+00                          83.75071
## comp 11 8.211959e-01           3.041466e+00                          86.79217
## comp 12 7.946434e-01           2.943124e+00                          89.73530
## comp 13 5.232384e-01           1.937920e+00                          91.67322
## comp 14 4.603624e-01           1.705046e+00                          93.37826
## comp 15 4.066040e-01           1.505941e+00                          94.88420
## comp 16 3.396770e-01           1.258063e+00                          96.14227
## comp 17 3.226925e-01           1.195158e+00                          97.33743
## comp 18 2.441237e-01           9.041619e-01                          98.24159
## comp 19 1.791790e-01           6.636260e-01                          98.90521
## comp 20 1.367356e-01           5.064283e-01                          99.41164
## comp 21 1.008972e-01           3.736935e-01                          99.78534
## comp 22 4.947718e-02           1.832488e-01                          99.96858
## comp 23 6.353104e-03           2.353001e-02                          99.99211
## comp 24 2.129264e-03           7.886165e-03                         100.00000
## comp 25 5.661846e-31           2.096980e-30                         100.00000
## comp 26 4.167562e-32           1.543541e-31                         100.00000
## comp 27 4.050572e-32           1.500212e-31                         100.00000
# what variables are best represented by each dimension
factoextra::fviz_pca_biplot(res_pca)

factoextra::fviz_pca_biplot(res_pca, axes = c(1, 3))

factoextra::fviz_pca_biplot(res_pca, axes = c(1, 4))

factoextra::fviz_pca_biplot(res_pca, axes = c(2, 3))

factoextra::fviz_pca_biplot(res_pca, axes = c(2, 4))

factoextra::fviz_pca_biplot(res_pca, axes = c(3, 4))

PCA_screeplot <- factoextra::fviz_screeplot(res_pca, addlabels = T)

indplot1 <- factoextra::fviz_pca_ind(res_pca)
indplot2 <- factoextra::fviz_pca_ind(res_pca, axes = c(1, 3))
indplot3 <- factoextra::fviz_pca_ind(res_pca, axes = c(1, 4))
indplot4 <- factoextra::fviz_pca_ind(res_pca, axes = c(2, 3))
indplot5 <- factoextra::fviz_pca_ind(res_pca, axes = c(2, 4))
indplot6 <- factoextra::fviz_pca_ind(res_pca, axes = c(3, 4))

varplot1 <- factoextra::fviz_pca_var(res_pca)
varplot2 <- factoextra::fviz_pca_var(res_pca, axes = c(1, 3))
varplot3 <- factoextra::fviz_pca_var(res_pca, axes = c(1, 4))
varplot4 <- factoextra::fviz_pca_var(res_pca, axes = c(2, 3))
varplot5 <- factoextra::fviz_pca_var(res_pca, axes = c(2, 4))
varplot6 <- factoextra::fviz_pca_var(res_pca, axes = c(3, 4))

# function to save PCA plots
draw_plot <- function(pp, pp_name){
  png(paste0('initial_vars/plot_', pp_name, '.png'), height = 15, width = 20, units = 'cm', res = 1000)
  print(pp)
  ggsave(paste0('initial_vars/plot_', pp_name, '.png')) 
  dev.off()
}

draw_plot(PCA_screeplot, 'PCA_screeplot')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(indplot1, 'PCA_individuals_01')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(indplot2, 'PCA_individuals_02')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(indplot3, 'PCA_individuals_03')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(indplot4, 'PCA_individuals_04')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(indplot5, 'PCA_individuals_05')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(indplot6, 'PCA_individuals_06')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(varplot1, 'PCA_variables_01')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(varplot2, 'PCA_variables_02')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(varplot3, 'PCA_variables_03')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(varplot4, 'PCA_variables_04')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(varplot5, 'PCA_variables_05')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(varplot6, 'PCA_variables_06')
## Saving 7.87 x 5.9 in image
## png 
##   2
# choose the most relevant variables to describe each dimension
print(res_pca$var$contrib[, 1:5])
##                                                               Dim.1
## Age                                                     0.636413327
## HHSize                                                  3.005494980
## HH_income_                                              9.127135054
## IncomeFarming                                           6.614174872
## PercFarmIncome                                          4.215889713
## Ncattle                                                 4.340788365
## Ngoats                                                  9.072873294
## Npigs                                                   4.492103006
## Nchickens                                               3.475703708
## TLU                                                     5.855721615
## TLU_density                                             4.773864188
## TotalLand                                               7.159026283
## AvgMZ_yield.kgs.                                        6.544345650
## PercentageMaizeArea                                     0.004803414
## PercentageLegumeArea                                    2.704109890
## highestEdu_qualification.HHH.                           1.368361439
## Access_to_loan_during_2022.2023_season                  0.937202535
## Do_you_practice__irrigation_farming.                    2.109796369
## Manure_application_in_Maize_field_during_2022.23_season 2.220595889
## Count_intens_options                                    4.129428385
## Do_you_pracatice_intercroping.                          2.582495671
## Do_you_practice_cover_croping.                          2.727410880
## Do_you_practice_integrated_pest_management.             0.657415740
## Do_you_have_agroforestry_trees_in_your_farm.            0.337437216
## Do_you_have_fruit_trees.                                0.060754505
## Do_you_own_any_vegetable_garden.                        5.651780742
## Count_sust_practices                                    5.194873271
##                                                                Dim.2
## Age                                                      1.101350347
## HHSize                                                   2.224709379
## HH_income_                                               8.380002845
## IncomeFarming                                            9.013985832
## PercFarmIncome                                           0.147844784
## Ncattle                                                 11.457501746
## Ngoats                                                   0.624240800
## Npigs                                                    3.116445507
## Nchickens                                                2.287464593
## TLU                                                     10.155375784
## TLU_density                                             12.406849598
## TotalLand                                                2.780094671
## AvgMZ_yield.kgs.                                         5.949048907
## PercentageMaizeArea                                      0.002028804
## PercentageLegumeArea                                     3.856739714
## highestEdu_qualification.HHH.                            0.019618448
## Access_to_loan_during_2022.2023_season                   8.276905145
## Do_you_practice__irrigation_farming.                     0.136290182
## Manure_application_in_Maize_field_during_2022.23_season  0.464358337
## Count_intens_options                                     4.021048469
## Do_you_pracatice_intercroping.                           0.253430397
## Do_you_practice_cover_croping.                           1.646961282
## Do_you_practice_integrated_pest_management.              8.534389886
## Do_you_have_agroforestry_trees_in_your_farm.             1.088776681
## Do_you_have_fruit_trees.                                 1.450702089
## Do_you_own_any_vegetable_garden.                         0.559343029
## Count_sust_practices                                     0.044492743
##                                                               Dim.3
## Age                                                      0.34141706
## HHSize                                                   1.00358649
## HH_income_                                               1.48323460
## IncomeFarming                                            2.06738008
## PercFarmIncome                                           0.31890960
## Ncattle                                                  8.14324882
## Ngoats                                                   0.84125096
## Npigs                                                    3.72297769
## Nchickens                                                0.42471859
## TLU                                                      8.28333557
## TLU_density                                              7.82699693
## TotalLand                                                0.59430118
## AvgMZ_yield.kgs.                                         0.25528239
## PercentageMaizeArea                                      0.69905413
## PercentageLegumeArea                                     1.37291791
## highestEdu_qualification.HHH.                            0.99453994
## Access_to_loan_during_2022.2023_season                   2.25608242
## Do_you_practice__irrigation_farming.                    13.09310635
## Manure_application_in_Maize_field_during_2022.23_season  0.45567080
## Count_intens_options                                     9.35929247
## Do_you_pracatice_intercroping.                           0.74182293
## Do_you_practice_cover_croping.                           0.46867385
## Do_you_practice_integrated_pest_management.              0.03629532
## Do_you_have_agroforestry_trees_in_your_farm.             8.05538977
## Do_you_have_fruit_trees.                                12.89476253
## Do_you_own_any_vegetable_garden.                         4.24556307
## Count_sust_practices                                    10.02018855
##                                                                Dim.4
## Age                                                     21.218442760
## HHSize                                                   5.632510850
## HH_income_                                               0.226182275
## IncomeFarming                                            0.113540389
## PercFarmIncome                                           0.417078821
## Ncattle                                                  0.015504875
## Ngoats                                                   1.973253491
## Npigs                                                    0.824745322
## Nchickens                                                1.379008781
## TLU                                                      0.002922498
## TLU_density                                              0.001871272
## TotalLand                                                0.290945406
## AvgMZ_yield.kgs.                                         0.153457448
## PercentageMaizeArea                                      0.359423421
## PercentageLegumeArea                                     0.020366465
## highestEdu_qualification.HHH.                           11.421245297
## Access_to_loan_during_2022.2023_season                   1.376721657
## Do_you_practice__irrigation_farming.                     1.588834664
## Manure_application_in_Maize_field_during_2022.23_season 14.962930693
## Count_intens_options                                     4.196151075
## Do_you_pracatice_intercroping.                           0.410711661
## Do_you_practice_cover_croping.                          11.336469697
## Do_you_practice_integrated_pest_management.              6.512336423
## Do_you_have_agroforestry_trees_in_your_farm.             5.035758987
## Do_you_have_fruit_trees.                                 0.002022253
## Do_you_own_any_vegetable_garden.                         0.987627611
## Count_sust_practices                                     9.539935909
##                                                                Dim.5
## Age                                                      0.002002792
## HHSize                                                   0.013557173
## HH_income_                                               0.153990927
## IncomeFarming                                            0.475631845
## PercFarmIncome                                          12.386628345
## Ncattle                                                  0.448875215
## Ngoats                                                   3.603933963
## Npigs                                                    0.016460584
## Nchickens                                                0.178737714
## TLU                                                      0.606343303
## TLU_density                                              0.476549762
## TotalLand                                               15.123732032
## AvgMZ_yield.kgs.                                         0.607718623
## PercentageMaizeArea                                     17.831746179
## PercentageLegumeArea                                     0.006862907
## highestEdu_qualification.HHH.                            8.072203134
## Access_to_loan_during_2022.2023_season                  11.730042022
## Do_you_practice__irrigation_farming.                     1.142806731
## Manure_application_in_Maize_field_during_2022.23_season  1.266197893
## Count_intens_options                                     2.998927905
## Do_you_pracatice_intercroping.                           2.119276149
## Do_you_practice_cover_croping.                           2.956567168
## Do_you_practice_integrated_pest_management.              0.028614861
## Do_you_have_agroforestry_trees_in_your_farm.             0.937223950
## Do_you_have_fruit_trees.                                 8.761102756
## Do_you_own_any_vegetable_garden.                         3.318581129
## Count_sust_practices                                     4.735684939
for(i in list(c(1, 2), c(1, 3), c(1, 4), c(2, 3), c(2, 4), c(3, 4))){
  for(j in names(pca_df)){
    nb_col <- length(unique(pca_df[[j]]))
    print(factoextra::fviz_ellipses(res_pca, 
                                  habillage = j, 
                                  axes = i, 
                                  geom = 'text', 
                                  addEllipses = T, 
                                  palette = pal(nb_col)
                                  )
        )
  }
}
## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

# Hierarchical clustering on the first 4 dimensions that capture 54% of total variability
eg_hc <- res_pca$ind$coord[, 1:4]
dist_matrix <- dist(eg_hc)
hc <- hclust(dist_matrix, method = 'ward.D') # could be 'complete' or 'average'
plot(hc, main = 'Subset 1 - Dendogram on the first 4 components', xlab = '', sub = '', cex = 0.6)

# decide on the number of farm types to make: 3 or 4
typo_1 <- pca_df
for(cl in 4:3){
  clusters <- cutree(hc, k = cl)
  typo_1$farm_type <- paste0('farm_', clusters)
  print(paste0('================ Number of farm types = ', cl, ' ================'))
  for(i in names(pca_df)){
    res_anova <- lm(typo_1[[i]] ~ typo_1[['farm_type']])
    emm0 <- emmeans::emmeans(res_anova, 
                           pairwise ~ farm_type, 
                           type = 'response', 
                           adjust = 'bonferroni')
    print(paste0('--------------------', i, '----------------'))
    print(anova(res_anova))
    print('-----------')
    print(emm0)
    print(multcomp::cld(emm0, decreasing = T))
  }
}
## [1] "================ Number of farm types = 4 ================"
## [1] "--------------------Age----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  3  164.19  54.730  1.1066 0.3577
## Residuals             40 1978.35  49.459               
## [1] "-----------"
## $emmeans
##  farm_type emmean   SE df lower.CL upper.CL
##  farm_1      43.1 2.22 40     38.6     47.6
##  farm_2      43.9 1.50 40     40.9     46.9
##  farm_3      47.8 2.12 40     43.5     52.1
##  farm_4      49.0 7.03 40     34.8     63.2
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2   -0.809 2.68 40  -0.302  1.0000
##  farm_1 - farm_3   -4.718 3.07 40  -1.535  0.7953
##  farm_1 - farm_4   -5.900 7.38 40  -0.800  1.0000
##  farm_2 - farm_3   -3.909 2.60 40  -1.505  0.8407
##  farm_2 - farm_4   -5.091 7.19 40  -0.708  1.0000
##  farm_3 - farm_4   -1.182 7.35 40  -0.161  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean   SE df lower.CL upper.CL .group
##  farm_4      49.0 7.03 40     34.8     63.2  1    
##  farm_3      47.8 2.12 40     43.5     52.1  1    
##  farm_2      43.9 1.50 40     40.9     46.9  1    
##  farm_1      43.1 2.22 40     38.6     47.6  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------HHSize----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  3  35.40 11.8000  2.7741 0.05376 .
## Residuals             40 170.15  4.2536                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      6.70 0.652 40     5.38     8.02
##  farm_2      5.50 0.440 40     4.61     6.39
##  farm_3      7.64 0.622 40     6.38     8.89
##  farm_4      6.00 2.062 40     1.83    10.17
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    1.200 0.787 40   1.526  0.8099
##  farm_1 - farm_3   -0.936 0.901 40  -1.039  1.0000
##  farm_1 - farm_4    0.700 2.163 40   0.324  1.0000
##  farm_2 - farm_3   -2.136 0.762 40  -2.805  0.0464
##  farm_2 - farm_4   -0.500 2.109 40  -0.237  1.0000
##  farm_3 - farm_4    1.636 2.154 40   0.760  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_3      7.64 0.622 40     6.38     8.89  1    
##  farm_1      6.70 0.652 40     5.38     8.02  12   
##  farm_4      6.00 2.062 40     1.83    10.17  12   
##  farm_2      5.50 0.440 40     4.61     6.39   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------HH_income_----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df     Sum Sq    Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3 3.0289e+13 1.0096e+13  8.3835 0.0001918 ***
## Residuals             40 4.8173e+13 1.2043e+12                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type  emmean      SE df lower.CL upper.CL
##  farm_1    1502500  347033 40   801119  2203881
##  farm_2     602864  233970 40   129993  1075734
##  farm_3    2620909  330883 40  1952169  3289649
##  farm_4    1500000 1097416 40  -717960  3717960
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate      SE df t.ratio p.value
##  farm_1 - farm_2   899636  418538 40   2.149  0.2262
##  farm_1 - farm_3 -1118409  479496 40  -2.332  0.1488
##  farm_1 - farm_4     2500 1150980 40   0.002  1.0000
##  farm_2 - farm_3 -2018046  405248 40  -4.980  0.0001
##  farm_2 - farm_4  -897136 1122080 40  -0.800  1.0000
##  farm_3 - farm_4  1120909 1146214 40   0.978  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type  emmean      SE df lower.CL upper.CL .group
##  farm_3    2620909  330883 40  1952169  3289649  1    
##  farm_1    1502500  347033 40   801119  2203881  12   
##  farm_4    1500000 1097416 40  -717960  3717960  12   
##  farm_2     602864  233970 40   129993  1075734   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------IncomeFarming----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df     Sum Sq    Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3 1.7501e+13 5.8338e+12  7.9964 0.0002712 ***
## Residuals             40 2.9182e+13 7.2955e+11                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type  emmean     SE df lower.CL upper.CL
##  farm_1    1125000 270103 40   579102  1670898
##  farm_2     552046 182103 40   184001   920090
##  farm_3    2095455 257533 40  1574962  2615948
##  farm_4    1000000 854139 40  -726280  2726280
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2   572955 325756 40   1.759  0.5175
##  farm_1 - farm_3  -970455 373200 40  -2.600  0.0779
##  farm_1 - farm_4   125000 895829 40   0.140  1.0000
##  farm_2 - farm_3 -1543409 315412 40  -4.893  0.0001
##  farm_2 - farm_4  -447955 873336 40  -0.513  1.0000
##  farm_3 - farm_4  1095455 892119 40   1.228  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type  emmean     SE df lower.CL upper.CL .group
##  farm_3    2095455 257533 40  1574962  2615948  1    
##  farm_1    1125000 270103 40   579102  1670898  12   
##  farm_4    1000000 854139 40  -726280  2726280  12   
##  farm_2     552046 182103 40   184001   920090   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------PercFarmIncome----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq  Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  3 0.18092 0.060307  2.1093 0.1142
## Residuals             40 1.14364 0.028591               
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.768 0.0535 40    0.660    0.876
##  farm_2     0.908 0.0360 40    0.836    0.981
##  farm_3     0.827 0.0510 40    0.724    0.930
##  farm_4     0.667 0.1691 40    0.325    1.008
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2  -0.1400 0.0645 40  -2.171  0.2156
##  farm_1 - farm_3  -0.0588 0.0739 40  -0.796  1.0000
##  farm_1 - farm_4   0.1018 0.1773 40   0.574  1.0000
##  farm_2 - farm_3   0.0812 0.0624 40   1.300  1.0000
##  farm_2 - farm_4   0.2418 0.1729 40   1.398  1.0000
##  farm_3 - farm_4   0.1606 0.1766 40   0.909  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_2     0.908 0.0360 40    0.836    0.981  1    
##  farm_3     0.827 0.0510 40    0.724    0.930  1    
##  farm_1     0.768 0.0535 40    0.660    0.876  1    
##  farm_4     0.667 0.1691 40    0.325    1.008  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Ncattle----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3 872.18 290.727  633.27 < 2.2e-16 ***
## Residuals             40  18.36   0.459                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type  emmean    SE df lower.CL upper.CL
##  farm_1     0.0000 0.214 40  -0.4330    0.433
##  farm_2     0.0909 0.144 40  -0.2010    0.383
##  farm_3     0.3636 0.204 40  -0.0493    0.777
##  farm_4    30.0000 0.678 40  28.6306   31.369
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2  -0.0909 0.258 40  -0.352  1.0000
##  farm_1 - farm_3  -0.3636 0.296 40  -1.228  1.0000
##  farm_1 - farm_4 -30.0000 0.711 40 -42.216  <.0001
##  farm_2 - farm_3  -0.2727 0.250 40  -1.090  1.0000
##  farm_2 - farm_4 -29.9091 0.693 40 -43.172  <.0001
##  farm_3 - farm_4 -29.6364 0.708 40 -41.878  <.0001
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type  emmean    SE df lower.CL upper.CL .group
##  farm_4    30.0000 0.678 40  28.6306   31.369  1    
##  farm_3     0.3636 0.204 40  -0.0493    0.777   2   
##  farm_2     0.0909 0.144 40  -0.2010    0.383   2   
##  farm_1     0.0000 0.214 40  -0.4330    0.433   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Ngoats----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  3 112.06  37.352  5.4995 0.002933 **
## Residuals             40 271.67   6.792                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1     2.900 0.824 40     1.23     4.57
##  farm_2     0.773 0.556 40    -0.35     1.90
##  farm_3     4.091 0.786 40     2.50     5.68
##  farm_4     7.000 2.606 40     1.73    12.27
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2     2.13 0.994 40   2.140  0.2309
##  farm_1 - farm_3    -1.19 1.139 40  -1.046  1.0000
##  farm_1 - farm_4    -4.10 2.733 40  -1.500  0.8488
##  farm_2 - farm_3    -3.32 0.962 40  -3.448  0.0081
##  farm_2 - farm_4    -6.23 2.665 40  -2.337  0.1472
##  farm_3 - farm_4    -2.91 2.722 40  -1.069  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_4     7.000 2.606 40     1.73    12.27  12   
##  farm_3     4.091 0.786 40     2.50     5.68  1    
##  farm_1     2.900 0.824 40     1.23     4.57  12   
##  farm_2     0.773 0.556 40    -0.35     1.90   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Npigs----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  3  64.864 21.6212  6.3191 0.001305 **
## Residuals             40 136.864  3.4216                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1     1.500 0.585 40    0.318     2.68
##  farm_2     0.455 0.394 40   -0.343     1.25
##  farm_3     1.909 0.558 40    0.782     3.04
##  farm_4     8.000 1.850 40    4.262    11.74
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    1.045 0.705 40   1.482  0.8772
##  farm_1 - farm_3   -0.409 0.808 40  -0.506  1.0000
##  farm_1 - farm_4   -6.500 1.940 40  -3.350  0.0106
##  farm_2 - farm_3   -1.455 0.683 40  -2.129  0.2365
##  farm_2 - farm_4   -7.545 1.891 40  -3.990  0.0016
##  farm_3 - farm_4   -6.091 1.932 40  -3.153  0.0184
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_4     8.000 1.850 40    4.262    11.74  1    
##  farm_3     1.909 0.558 40    0.782     3.04   2   
##  farm_1     1.500 0.585 40    0.318     2.68   2   
##  farm_2     0.455 0.394 40   -0.343     1.25   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Nchickens----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  3    461  153.67  3.3997 0.02681 *
## Residuals             40   1808   45.20                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean   SE df lower.CL upper.CL
##  farm_1     11.50 2.13 40     7.20    15.80
##  farm_2      4.41 1.43 40     1.51     7.31
##  farm_3     10.27 2.03 40     6.18    14.37
##  farm_4      5.00 6.72 40    -8.59    18.59
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2    7.091 2.56 40   2.765  0.0514
##  farm_1 - farm_3    1.227 2.94 40   0.418  1.0000
##  farm_1 - farm_4    6.500 7.05 40   0.922  1.0000
##  farm_2 - farm_3   -5.864 2.48 40  -2.362  0.1388
##  farm_2 - farm_4   -0.591 6.87 40  -0.086  1.0000
##  farm_3 - farm_4    5.273 7.02 40   0.751  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean   SE df lower.CL upper.CL .group
##  farm_1     11.50 2.13 40     7.20    15.80  1    
##  farm_3     10.27 2.03 40     6.18    14.37  12   
##  farm_4      5.00 6.72 40    -8.59    18.59  12   
##  farm_2      4.41 1.43 40     1.51     7.31   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------TLU----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3 495.34  165.11  367.22 < 2.2e-16 ***
## Residuals             40  17.99    0.45                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1     0.630 0.212 40   0.2014    1.059
##  farm_2     0.253 0.143 40  -0.0358    0.542
##  farm_3     1.053 0.202 40   0.6441    1.461
##  farm_4    22.950 0.671 40  21.5948   24.305
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    0.377 0.256 40   1.473  0.8907
##  farm_1 - farm_3   -0.423 0.293 40  -1.443  0.9411
##  farm_1 - farm_4  -22.320 0.703 40 -31.737  <.0001
##  farm_2 - farm_3   -0.800 0.248 40  -3.229  0.0149
##  farm_2 - farm_4  -22.697 0.686 40 -33.104  <.0001
##  farm_3 - farm_4  -21.897 0.700 40 -31.266  <.0001
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_4    22.950 0.671 40  21.5948   24.305  1    
##  farm_3     1.053 0.202 40   0.6441    1.461   2   
##  farm_1     0.630 0.212 40   0.2014    1.059   23  
##  farm_2     0.253 0.143 40  -0.0358    0.542    3  
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------TLU_density----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3 13.6304  4.5435  338.66 < 2.2e-16 ***
## Residuals             40  0.5366  0.0134                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1    0.1002 0.0366 40   0.0262    0.174
##  farm_2    0.0693 0.0247 40   0.0194    0.119
##  farm_3    0.1481 0.0349 40   0.0775    0.219
##  farm_4    3.8250 0.1158 40   3.5909    4.059
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2   0.0309 0.0442 40   0.700  1.0000
##  farm_1 - farm_3  -0.0478 0.0506 40  -0.945  1.0000
##  farm_1 - farm_4  -3.7248 0.1215 40 -30.661  <.0001
##  farm_2 - farm_3  -0.0788 0.0428 40  -1.841  0.4379
##  farm_2 - farm_4  -3.7557 0.1184 40 -31.712  <.0001
##  farm_3 - farm_4  -3.6769 0.1210 40 -30.393  <.0001
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_4    3.8250 0.1158 40   3.5909    4.059  1    
##  farm_3    0.1481 0.0349 40   0.0775    0.219   2   
##  farm_1    0.1002 0.0366 40   0.0262    0.174   2   
##  farm_2    0.0693 0.0247 40   0.0194    0.119   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------TotalLand----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  3 168.12  56.038  4.8755 0.005546 **
## Residuals             40 459.75  11.494                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      8.25 1.072 40    6.083    10.42
##  farm_2      3.81 0.723 40    2.346     5.27
##  farm_3      7.18 1.022 40    5.116     9.25
##  farm_4      6.00 3.390 40   -0.852    12.85
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2     4.44 1.29 40   3.436  0.0083
##  farm_1 - farm_3     1.07 1.48 40   0.721  1.0000
##  farm_1 - farm_4     2.25 3.56 40   0.633  1.0000
##  farm_2 - farm_3    -3.38 1.25 40  -2.696  0.0613
##  farm_2 - farm_4    -2.19 3.47 40  -0.633  1.0000
##  farm_3 - farm_4     1.18 3.54 40   0.334  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1      8.25 1.072 40    6.083    10.42  1    
##  farm_3      7.18 1.022 40    5.116     9.25  1    
##  farm_4      6.00 3.390 40   -0.852    12.85  12   
##  farm_2      3.81 0.723 40    2.346     5.27   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------AvgMZ_yield.kgs.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df    Sum Sq  Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  3  55157130 18385710  5.2263 0.003868 **
## Residuals             40 140716184  3517905                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean   SE df lower.CL upper.CL
##  farm_1      3052  593 40     1854     4251
##  farm_2      1413  400 40      605     2222
##  farm_3      4036  566 40     2893     5179
##  farm_4      2000 1876 40    -1791     5791
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2     1639  715 40   2.292  0.1637
##  farm_1 - farm_3     -984  820 40  -1.201  1.0000
##  farm_1 - farm_4     1052 1967 40   0.535  1.0000
##  farm_2 - farm_3    -2623  693 40  -3.787  0.0030
##  farm_2 - farm_4     -587 1918 40  -0.306  1.0000
##  farm_3 - farm_4     2036 1959 40   1.039  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean   SE df lower.CL upper.CL .group
##  farm_3      4036  566 40     2893     5179  1    
##  farm_1      3052  593 40     1854     4251  12   
##  farm_4      2000 1876 40    -1791     5791  12   
##  farm_2      1413  400 40      605     2222   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------PercentageMaizeArea----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq   Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  3 0.02981 0.0099377  0.4741  0.702
## Residuals             40 0.83838 0.0209595               
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.388 0.0458 40    0.296    0.481
##  farm_2     0.443 0.0309 40    0.381    0.506
##  farm_3     0.449 0.0437 40    0.361    0.537
##  farm_4     0.500 0.1448 40    0.207    0.793
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2 -0.05531 0.0552 40  -1.002  1.0000
##  farm_1 - farm_3 -0.06083 0.0633 40  -0.962  1.0000
##  farm_1 - farm_4 -0.11190 0.1518 40  -0.737  1.0000
##  farm_2 - farm_3 -0.00552 0.0535 40  -0.103  1.0000
##  farm_2 - farm_4 -0.05658 0.1480 40  -0.382  1.0000
##  farm_3 - farm_4 -0.05107 0.1512 40  -0.338  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_4     0.500 0.1448 40    0.207    0.793  1    
##  farm_3     0.449 0.0437 40    0.361    0.537  1    
##  farm_2     0.443 0.0309 40    0.381    0.506  1    
##  farm_1     0.388 0.0458 40    0.296    0.481  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------PercentageLegumeArea----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq  Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  3 0.20848 0.069492  2.9318 0.04505 *
## Residuals             40 0.94812 0.023703                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.376 0.0487 40   0.2779    0.475
##  farm_2     0.477 0.0328 40   0.4111    0.544
##  farm_3     0.319 0.0464 40   0.2250    0.413
##  farm_4     0.333 0.1540 40   0.0222    0.644
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2  -0.1011 0.0587 40  -1.721  0.5575
##  farm_1 - farm_3   0.0575 0.0673 40   0.855  1.0000
##  farm_1 - farm_4   0.0430 0.1615 40   0.266  1.0000
##  farm_2 - farm_3   0.1586 0.0569 40   2.789  0.0483
##  farm_2 - farm_4   0.1441 0.1574 40   0.915  1.0000
##  farm_3 - farm_4  -0.0145 0.1608 40  -0.090  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_2     0.477 0.0328 40   0.4111    0.544  1    
##  farm_1     0.376 0.0487 40   0.2779    0.475  12   
##  farm_4     0.333 0.1540 40   0.0222    0.644  12   
##  farm_3     0.319 0.0464 40   0.2250    0.413   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------highestEdu_qualification.HHH.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  3  0.5773 0.19242  0.5345 0.6613
## Residuals             40 14.4000 0.36000               
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      1.60 0.190 40    1.217     1.98
##  farm_2      1.45 0.128 40    1.196     1.71
##  farm_3      1.36 0.181 40    0.998     1.73
##  farm_4      2.00 0.600 40    0.787     3.21
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.1455 0.229 40   0.636  1.0000
##  farm_1 - farm_3   0.2364 0.262 40   0.902  1.0000
##  farm_1 - farm_4  -0.4000 0.629 40  -0.636  1.0000
##  farm_2 - farm_3   0.0909 0.222 40   0.410  1.0000
##  farm_2 - farm_4  -0.5455 0.613 40  -0.889  1.0000
##  farm_3 - farm_4  -0.6364 0.627 40  -1.015  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_4      2.00 0.600 40    0.787     3.21  1    
##  farm_1      1.60 0.190 40    1.217     1.98  1    
##  farm_2      1.45 0.128 40    1.196     1.71  1    
##  farm_3      1.36 0.181 40    0.998     1.73  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Access_to_loan_during_2022.2023_season----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  3 2.4636 0.82121  5.2443 0.003798 **
## Residuals             40 6.2636 0.15659                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.600 0.1251 40   0.3471    0.853
##  farm_2     0.227 0.0844 40   0.0568    0.398
##  farm_3     0.000 0.1193 40  -0.2411    0.241
##  farm_4     1.000 0.3957 40   0.2002    1.800
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    0.373 0.151 40   2.470  0.1073
##  farm_1 - farm_3    0.600 0.173 40   3.470  0.0076
##  farm_1 - farm_4   -0.400 0.415 40  -0.964  1.0000
##  farm_2 - farm_3    0.227 0.146 40   1.555  0.7665
##  farm_2 - farm_4   -0.773 0.405 40  -1.910  0.3801
##  farm_3 - farm_4   -1.000 0.413 40  -2.419  0.1211
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_4     1.000 0.3957 40   0.2002    1.800  12   
##  farm_1     0.600 0.1251 40   0.3471    0.853  1    
##  farm_2     0.227 0.0844 40   0.0568    0.398  12   
##  farm_3     0.000 0.1193 40  -0.2411    0.241   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_practice__irrigation_farming.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  3 1.7409 0.58030  2.8497 0.04939 *
## Residuals             40 8.1455 0.20364                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.700 0.1427 40  0.41159    0.988
##  farm_2     0.227 0.0962 40  0.03283    0.422
##  farm_3     0.273 0.1361 40 -0.00226    0.548
##  farm_4     0.000 0.4513 40 -0.91203    0.912
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.4727 0.172 40   2.747  0.0539
##  farm_1 - farm_3   0.4273 0.197 40   2.167  0.2175
##  farm_1 - farm_4   0.7000 0.473 40   1.479  0.8818
##  farm_2 - farm_3  -0.0455 0.167 40  -0.273  1.0000
##  farm_2 - farm_4   0.2273 0.461 40   0.493  1.0000
##  farm_3 - farm_4   0.2727 0.471 40   0.579  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_1     0.700 0.1427 40  0.41159    0.988  1    
##  farm_3     0.273 0.1361 40 -0.00226    0.548  12   
##  farm_2     0.227 0.0962 40  0.03283    0.422   2   
##  farm_4     0.000 0.4513 40 -0.91203    0.912  12   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Manure_application_in_Maize_field_during_2022.23_season----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  3 1.6727 0.55758  3.1615 0.03488 *
## Residuals             40 7.0545 0.17636                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.800 0.1328 40    0.532    1.068
##  farm_2     0.545 0.0895 40    0.364    0.726
##  farm_3     1.000 0.1266 40    0.744    1.256
##  farm_4     1.000 0.4200 40    0.151    1.849
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    0.255 0.160 40   1.589  0.7192
##  farm_1 - farm_3   -0.200 0.183 40  -1.090  1.0000
##  farm_1 - farm_4   -0.200 0.440 40  -0.454  1.0000
##  farm_2 - farm_3   -0.455 0.155 40  -2.931  0.0334
##  farm_2 - farm_4   -0.455 0.429 40  -1.059  1.0000
##  farm_3 - farm_4    0.000 0.439 40   0.000  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_4     1.000 0.4200 40    0.151    1.849  12   
##  farm_3     1.000 0.1266 40    0.744    1.256  1    
##  farm_1     0.800 0.1328 40    0.532    1.068  12   
##  farm_2     0.545 0.0895 40    0.364    0.726   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Count_intens_options----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  3  8.8045 2.93485  4.6804 0.006792 **
## Residuals             40 25.0818 0.62705                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      2.10 0.250 40    1.594     2.61
##  farm_2      1.00 0.169 40    0.659     1.34
##  farm_3      1.27 0.239 40    0.790     1.76
##  farm_4      2.00 0.792 40    0.400     3.60
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    1.100 0.302 40   3.642  0.0046
##  farm_1 - farm_3    0.827 0.346 40   2.391  0.1296
##  farm_1 - farm_4    0.100 0.831 40   0.120  1.0000
##  farm_2 - farm_3   -0.273 0.292 40  -0.933  1.0000
##  farm_2 - farm_4   -1.000 0.810 40  -1.235  1.0000
##  farm_3 - farm_4   -0.727 0.827 40  -0.879  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1      2.10 0.250 40    1.594     2.61  1    
##  farm_4      2.00 0.792 40    0.400     3.60  12   
##  farm_3      1.27 0.239 40    0.790     1.76  12   
##  farm_2      1.00 0.169 40    0.659     1.34   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_pracatice_intercroping.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  3   0.65 0.21667  1.1404 0.3445
## Residuals             40   7.60 0.19000               
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.800 0.1378 40    0.521    1.079
##  farm_2     0.636 0.0929 40    0.449    0.824
##  farm_3     0.909 0.1314 40    0.643    1.175
##  farm_4     1.000 0.4359 40    0.119    1.881
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.1636 0.166 40   0.984  1.0000
##  farm_1 - farm_3  -0.1091 0.190 40  -0.573  1.0000
##  farm_1 - farm_4  -0.2000 0.457 40  -0.437  1.0000
##  farm_2 - farm_3  -0.2727 0.161 40  -1.694  0.5878
##  farm_2 - farm_4  -0.3636 0.446 40  -0.816  1.0000
##  farm_3 - farm_4  -0.0909 0.455 40  -0.200  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_4     1.000 0.4359 40    0.119    1.881  1    
##  farm_3     0.909 0.1314 40    0.643    1.175  1    
##  farm_1     0.800 0.1378 40    0.521    1.079  1    
##  farm_2     0.636 0.0929 40    0.449    0.824  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_practice_cover_croping.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3 2.6000 0.86667  6.7612 0.0008527 ***
## Residuals             40 5.1273 0.12818                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1    0.6000 0.1132 40   0.3712    0.829
##  farm_2    0.0909 0.0763 40  -0.0634    0.245
##  farm_3    0.0909 0.1079 40  -0.1273    0.309
##  farm_4    1.0000 0.3580 40   0.2764    1.724
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    0.509 0.137 40   3.728  0.0036
##  farm_1 - farm_3    0.509 0.156 40   3.254  0.0139
##  farm_1 - farm_4   -0.400 0.375 40  -1.065  1.0000
##  farm_2 - farm_3    0.000 0.132 40   0.000  1.0000
##  farm_2 - farm_4   -0.909 0.366 40  -2.483  0.1038
##  farm_3 - farm_4   -0.909 0.374 40  -2.431  0.1178
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_4    1.0000 0.3580 40   0.2764    1.724  12   
##  farm_1    0.6000 0.1132 40   0.3712    0.829  1    
##  farm_2    0.0909 0.0763 40  -0.0634    0.245   2   
##  farm_3    0.0909 0.1079 40  -0.1273    0.309   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_practice_integrated_pest_management.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  3 0.9455 0.31515  1.3648 0.2673
## Residuals             40 9.2364 0.23091               
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1     0.800 0.152 40    0.493    1.107
##  farm_2     0.545 0.102 40    0.338    0.753
##  farm_3     0.727 0.145 40    0.434    1.020
##  farm_4     0.000 0.481 40   -0.971    0.971
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.2545 0.183 40   1.389  1.0000
##  farm_1 - farm_3   0.0727 0.210 40   0.346  1.0000
##  farm_1 - farm_4   0.8000 0.504 40   1.587  0.7218
##  farm_2 - farm_3  -0.1818 0.177 40  -1.025  1.0000
##  farm_2 - farm_4   0.5455 0.491 40   1.110  1.0000
##  farm_3 - farm_4   0.7273 0.502 40   1.449  0.9307
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1     0.800 0.152 40    0.493    1.107  1    
##  farm_3     0.727 0.145 40    0.434    1.020  1    
##  farm_2     0.545 0.102 40    0.338    0.753  1    
##  farm_4     0.000 0.481 40   -0.971    0.971  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_have_agroforestry_trees_in_your_farm.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3 3.8545 1.28485  10.547 3.047e-05 ***
## Residuals             40 4.8727 0.12182                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.800 0.1104 40   0.5769    1.023
##  farm_2     0.182 0.0744 40   0.0314    0.332
##  farm_3     0.000 0.1052 40  -0.2127    0.213
##  farm_4     0.000 0.3490 40  -0.7054    0.705
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    0.618 0.133 40   4.644  0.0002
##  farm_1 - farm_3    0.800 0.152 40   5.246  <.0001
##  farm_1 - farm_4    0.800 0.366 40   2.185  0.2086
##  farm_2 - farm_3    0.182 0.129 40   1.411  0.9964
##  farm_2 - farm_4    0.182 0.357 40   0.509  1.0000
##  farm_3 - farm_4    0.000 0.365 40   0.000  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_1     0.800 0.1104 40   0.5769    1.023  1    
##  farm_2     0.182 0.0744 40   0.0314    0.332   2   
##  farm_4     0.000 0.3490 40  -0.7054    0.705  12   
##  farm_3     0.000 0.1052 40  -0.2127    0.213   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_have_fruit_trees.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  3 2.9000 0.96667    5.31 0.003553 **
## Residuals             40 7.2818 0.18205                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1    0.8000 0.135 40    0.527    1.073
##  farm_2    0.3182 0.091 40    0.134    0.502
##  farm_3    0.0909 0.129 40   -0.169    0.351
##  farm_4    0.0000 0.427 40   -0.862    0.862
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.4818 0.163 40   2.961  0.0308
##  farm_1 - farm_3   0.7091 0.186 40   3.804  0.0029
##  farm_1 - farm_4   0.8000 0.447 40   1.788  0.4884
##  farm_2 - farm_3   0.2273 0.158 40   1.442  0.9417
##  farm_2 - farm_4   0.3182 0.436 40   0.729  1.0000
##  farm_3 - farm_4   0.0909 0.446 40   0.204  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1    0.8000 0.135 40    0.527    1.073  1    
##  farm_2    0.3182 0.091 40    0.134    0.502   2   
##  farm_3    0.0909 0.129 40   -0.169    0.351   2   
##  farm_4    0.0000 0.427 40   -0.862    0.862  12   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_own_any_vegetable_garden.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value  Pr(>F)   
## typo_1[["farm_type"]]  3 2.8318 0.94394  5.9674 0.00184 **
## Residuals             40 6.3273 0.15818                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.700 0.1258 40   0.4458    0.954
##  farm_2     0.136 0.0848 40  -0.0350    0.308
##  farm_3     0.182 0.1199 40  -0.0605    0.424
##  farm_4     1.000 0.3977 40   0.1962    1.804
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.5636 0.152 40   3.716  0.0037
##  farm_1 - farm_3   0.5182 0.174 40   2.982  0.0292
##  farm_1 - farm_4  -0.3000 0.417 40  -0.719  1.0000
##  farm_2 - farm_3  -0.0455 0.147 40  -0.309  1.0000
##  farm_2 - farm_4  -0.8636 0.407 40  -2.124  0.2396
##  farm_3 - farm_4  -0.8182 0.415 40  -1.970  0.3350
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_4     1.000 0.3977 40   0.1962    1.804  12   
##  farm_1     0.700 0.1258 40   0.4458    0.954  1    
##  farm_3     0.182 0.1199 40  -0.0605    0.424   2   
##  farm_2     0.136 0.0848 40  -0.0350    0.308   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Count_sust_practices----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3 50.591  16.864  17.604 1.929e-07 ***
## Residuals             40 38.318   0.958                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      4.50 0.310 40     3.87     5.13
##  farm_2      1.91 0.209 40     1.49     2.33
##  farm_3      2.00 0.295 40     1.40     2.60
##  farm_4      3.00 0.979 40     1.02     4.98
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   2.5909 0.373 40   6.941  <.0001
##  farm_1 - farm_3   2.5000 0.428 40   5.846  <.0001
##  farm_1 - farm_4   1.5000 1.027 40   1.461  0.9106
##  farm_2 - farm_3  -0.0909 0.361 40  -0.252  1.0000
##  farm_2 - farm_4  -1.0909 1.001 40  -1.090  1.0000
##  farm_3 - farm_4  -1.0000 1.022 40  -0.978  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1      4.50 0.310 40     3.87     5.13  1    
##  farm_4      3.00 0.979 40     1.02     4.98  12   
##  farm_3      2.00 0.295 40     1.40     2.60   2   
##  farm_2      1.91 0.209 40     1.49     2.33   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "================ Number of farm types = 3 ================"
## [1] "--------------------Age----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  2  132.55  66.273  1.3518 0.2701
## Residuals             41 2010.00  49.024               
## [1] "-----------"
## $emmeans
##  farm_type emmean   SE df lower.CL upper.CL
##  farm_1      43.6 2.11 41     39.4     47.9
##  farm_2      43.9 1.49 41     40.9     46.9
##  farm_3      47.8 2.11 41     43.6     52.1
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2   -0.273 2.59 41  -0.105  1.0000
##  farm_1 - farm_3   -4.182 2.99 41  -1.401  0.5065
##  farm_2 - farm_3   -3.909 2.59 41  -1.512  0.4147
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean   SE df lower.CL upper.CL .group
##  farm_3      47.8 2.11 41     43.6     52.1  1    
##  farm_2      43.9 1.49 41     40.9     46.9  1    
##  farm_1      43.6 2.11 41     39.4     47.9  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------HHSize----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value Pr(>F)  
## typo_1[["farm_type"]]  2  34.955 17.4773  4.2005 0.0219 *
## Residuals             41 170.591  4.1608                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      6.64 0.615 41     5.39     7.88
##  farm_2      5.50 0.435 41     4.62     6.38
##  farm_3      7.64 0.615 41     6.39     8.88
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2     1.14 0.753 41   1.509  0.4172
##  farm_1 - farm_3    -1.00 0.870 41  -1.150  0.7708
##  farm_2 - farm_3    -2.14 0.753 41  -2.836  0.0212
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_3      7.64 0.615 41     6.39     8.88  1    
##  farm_1      6.64 0.615 41     5.39     7.88  12   
##  farm_2      5.50 0.435 41     4.62     6.38   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------HH_income_----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df     Sum Sq    Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  2 3.0289e+13 1.5145e+13   12.89 4.539e-05 ***
## Residuals             41 4.8173e+13 1.1749e+12                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type  emmean     SE df lower.CL upper.CL
##  farm_1    1502273 326823 41   842240  2162306
##  farm_2     602864 231099 41   136150  1069577
##  farm_3    2620909 326823 41  1960876  3280942
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2   899409 400275 41   2.247  0.0903
##  farm_1 - farm_3 -1118636 462198 41  -2.420  0.0601
##  farm_2 - farm_3 -2018046 400275 41  -5.042  <.0001
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type  emmean     SE df lower.CL upper.CL .group
##  farm_3    2620909 326823 41  1960876  3280942  1    
##  farm_1    1502273 326823 41   842240  2162306  12   
##  farm_2     602864 231099 41   136150  1069577   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------IncomeFarming----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df     Sum Sq    Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  2 1.7487e+13 8.7436e+12  12.278 6.628e-05 ***
## Residuals             41 2.9196e+13 7.1211e+11                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type  emmean     SE df lower.CL upper.CL
##  farm_1    1113636 254435 41   599795  1627477
##  farm_2     552046 179912 41   188705   915386
##  farm_3    2095455 254435 41  1581614  2609296
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2   561591 311617 41   1.802  0.2366
##  farm_1 - farm_3  -981818 359825 41  -2.729  0.0280
##  farm_2 - farm_3 -1543409 311617 41  -4.953  <.0001
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type  emmean     SE df lower.CL upper.CL .group
##  farm_3    2095455 254435 41  1581614  2609296  1    
##  farm_1    1113636 254435 41   599795  1627477   2   
##  farm_2     552046 179912 41   188705   915386   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------PercFarmIncome----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq  Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  2 0.17151 0.085754  3.0492 0.05827 .
## Residuals             41 1.15305 0.028123                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.759 0.0506 41    0.657    0.861
##  farm_2     0.908 0.0358 41    0.836    0.981
##  farm_3     0.827 0.0506 41    0.725    0.929
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2  -0.1492 0.0619 41  -2.410  0.0616
##  farm_1 - farm_3  -0.0680 0.0715 41  -0.952  1.0000
##  farm_2 - farm_3   0.0812 0.0619 41   1.311  0.5913
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_2     0.908 0.0358 41    0.836    0.981  1    
##  farm_3     0.827 0.0506 41    0.725    0.929  1    
##  farm_1     0.759 0.0506 41    0.657    0.861  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Ncattle----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  2  54.00  27.000  1.3233 0.2774
## Residuals             41 836.55  20.404               
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1    2.7273 1.362 41  -0.0232     5.48
##  farm_2    0.0909 0.963 41  -1.8540     2.04
##  farm_3    0.3636 1.362 41  -2.3868     3.11
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2    2.636 1.67 41   1.581  0.3650
##  farm_1 - farm_3    2.364 1.93 41   1.227  0.6803
##  farm_2 - farm_3   -0.273 1.67 41  -0.164  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1    2.7273 1.362 41  -0.0232     5.48  1    
##  farm_3    0.3636 1.362 41  -2.3868     3.11  1    
##  farm_2    0.0909 0.963 41  -1.8540     2.04  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Ngoats----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  2  96.773  48.386  6.9134 0.002586 **
## Residuals             41 286.955   6.999                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1     3.273 0.798 41    1.662     4.88
##  farm_2     0.773 0.564 41   -0.366     1.91
##  farm_3     4.091 0.798 41    2.480     5.70
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    2.500 0.977 41   2.559  0.0429
##  farm_1 - farm_3   -0.818 1.128 41  -0.725  1.0000
##  farm_2 - farm_3   -3.318 0.977 41  -3.397  0.0046
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_3     4.091 0.798 41    2.480     5.70  1    
##  farm_1     3.273 0.798 41    1.662     4.88  1    
##  farm_2     0.773 0.564 41   -0.366     1.91   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Npigs----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  2  26.455 13.2273  3.0941 0.05604 .
## Residuals             41 175.273  4.2749                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1     2.091 0.623 41    0.832     3.35
##  farm_2     0.455 0.441 41   -0.436     1.34
##  farm_3     1.909 0.623 41    0.650     3.17
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    1.636 0.764 41   2.143  0.1142
##  farm_1 - farm_3    0.182 0.882 41   0.206  1.0000
##  farm_2 - farm_3   -1.455 0.764 41  -1.905  0.1914
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1     2.091 0.623 41    0.832     3.35  1    
##  farm_3     1.909 0.623 41    0.650     3.17  1    
##  farm_2     0.455 0.441 41   -0.436     1.34  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Nchickens----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  2  422.59 211.295  4.6919 0.01463 *
## Residuals             41 1846.41  45.034                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean   SE df lower.CL upper.CL
##  farm_1     10.91 2.02 41     6.82     15.0
##  farm_2      4.41 1.43 41     1.52      7.3
##  farm_3     10.27 2.02 41     6.19     14.4
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2    6.500 2.48 41   2.623  0.0365
##  farm_1 - farm_3    0.636 2.86 41   0.222  1.0000
##  farm_2 - farm_3   -5.864 2.48 41  -2.366  0.0683
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean   SE df lower.CL upper.CL .group
##  farm_1     10.91 2.02 41     6.82     15.0  1    
##  farm_3     10.27 2.02 41     6.19     14.4  12   
##  farm_2      4.41 1.43 41     1.52      7.3   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------TLU----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  2  42.45  21.224   1.848 0.1704
## Residuals             41 470.88  11.485               
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1     2.659 1.022 41    0.596     4.72
##  farm_2     0.253 0.723 41   -1.206     1.71
##  farm_3     1.053 1.022 41   -1.011     3.12
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2     2.41 1.25 41   1.923  0.1845
##  farm_1 - farm_3     1.61 1.45 41   1.112  0.8183
##  farm_2 - farm_3    -0.80 1.25 41  -0.639  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1     2.659 1.022 41    0.596     4.72  1    
##  farm_3     1.053 1.022 41   -1.011     3.12  1    
##  farm_2     0.253 0.723 41   -1.206     1.71  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------TLU_density----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  2  1.0177 0.50887  1.5867 0.2169
## Residuals             41 13.1493 0.32071               
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1    0.4388 0.171 41    0.094    0.784
##  farm_2    0.0693 0.121 41   -0.175    0.313
##  farm_3    0.1481 0.171 41   -0.197    0.493
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.3695 0.209 41   1.767  0.2540
##  farm_1 - farm_3   0.2908 0.241 41   1.204  0.7063
##  farm_2 - farm_3  -0.0788 0.209 41  -0.377  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1    0.4388 0.171 41    0.094    0.784  1    
##  farm_3    0.1481 0.171 41   -0.197    0.493  1    
##  farm_2    0.0693 0.121 41   -0.175    0.313  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------TotalLand----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  2 163.51  81.756  7.2186 0.002061 **
## Residuals             41 464.36  11.326                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      8.05 1.015 41     6.00    10.09
##  farm_2      3.81 0.717 41     2.36     5.26
##  farm_3      7.18 1.015 41     5.13     9.23
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2    4.239 1.24 41   3.411  0.0044
##  farm_1 - farm_3    0.864 1.43 41   0.602  1.0000
##  farm_2 - farm_3   -3.375 1.24 41  -2.716  0.0289
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1      8.05 1.015 41     6.00    10.09  1    
##  farm_3      7.18 1.015 41     5.13     9.23  1    
##  farm_2      3.81 0.717 41     2.36     5.26   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------AvgMZ_yield.kgs.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df    Sum Sq  Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  2  54150079 27075039  7.8327 0.001315 **
## Residuals             41 141723235  3456664                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean  SE df lower.CL upper.CL
##  farm_1      2957 561 41     1825     4089
##  farm_2      1413 396 41      613     2214
##  farm_3      4036 561 41     2904     5168
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate  SE df t.ratio p.value
##  farm_1 - farm_2     1544 687 41   2.248  0.0900
##  farm_1 - farm_3    -1080 793 41  -1.362  0.5421
##  farm_2 - farm_3    -2623 687 41  -3.821  0.0013
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean  SE df lower.CL upper.CL .group
##  farm_3      4036 561 41     2904     5168  1    
##  farm_1      2957 561 41     1825     4089  12   
##  farm_2      1413 396 41      613     2214   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------PercentageMaizeArea----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq   Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  2 0.01843 0.0092153  0.4446 0.6441
## Residuals             41 0.84976 0.0207259               
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.398 0.0434 41    0.311    0.486
##  farm_2     0.443 0.0307 41    0.381    0.505
##  farm_3     0.449 0.0434 41    0.361    0.537
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2 -0.04514 0.0532 41  -0.849  1.0000
##  farm_1 - farm_3 -0.05066 0.0614 41  -0.825  1.0000
##  farm_2 - farm_3 -0.00552 0.0532 41  -0.104  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_3     0.449 0.0434 41    0.361    0.537  1    
##  farm_2     0.443 0.0307 41    0.381    0.505  1    
##  farm_1     0.398 0.0434 41    0.311    0.486  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------PercentageLegumeArea----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq  Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  2 0.20679 0.103397  4.4633 0.01763 *
## Residuals             41 0.94980 0.023166                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.372 0.0459 41    0.280    0.465
##  farm_2     0.477 0.0324 41    0.412    0.543
##  farm_3     0.319 0.0459 41    0.226    0.412
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2  -0.1050 0.0562 41  -1.868  0.2068
##  farm_1 - farm_3   0.0536 0.0649 41   0.826  1.0000
##  farm_2 - farm_3   0.1586 0.0562 41   2.821  0.0220
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_2     0.477 0.0324 41    0.412    0.543  1    
##  farm_1     0.372 0.0459 41    0.280    0.465  12   
##  farm_3     0.319 0.0459 41    0.226    0.412   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------highestEdu_qualification.HHH.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  2  0.4318 0.21591  0.6086  0.549
## Residuals             41 14.5455 0.35477               
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      1.64 0.180 41     1.27     2.00
##  farm_2      1.45 0.127 41     1.20     1.71
##  farm_3      1.36 0.180 41     1.00     1.73
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.1818 0.220 41   0.827  1.0000
##  farm_1 - farm_3   0.2727 0.254 41   1.074  0.8675
##  farm_2 - farm_3   0.0909 0.220 41   0.413  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1      1.64 0.180 41     1.27     2.00  1    
##  farm_2      1.45 0.127 41     1.20     1.71  1    
##  farm_3      1.36 0.180 41     1.00     1.73  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Access_to_loan_during_2022.2023_season----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  2 2.3182 1.15909  7.4149 0.001784 **
## Residuals             41 6.4091 0.15632                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.636 0.1192 41    0.396    0.877
##  farm_2     0.227 0.0843 41    0.057    0.398
##  farm_3     0.000 0.1192 41   -0.241    0.241
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    0.409 0.146 41   2.802  0.0232
##  farm_1 - farm_3    0.636 0.169 41   3.775  0.0015
##  farm_2 - farm_3    0.227 0.146 41   1.557  0.3817
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_1     0.636 0.1192 41    0.396    0.877  1    
##  farm_2     0.227 0.0843 41    0.057    0.398   2   
##  farm_3     0.000 0.1192 41   -0.241    0.241   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_practice__irrigation_farming.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  2 1.2955 0.64773  3.0913 0.05618 .
## Residuals             41 8.5909 0.20953                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.636 0.1380 41   0.3576    0.915
##  farm_2     0.227 0.0976 41   0.0302    0.424
##  farm_3     0.273 0.1380 41  -0.0060    0.551
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.4091 0.169 41   2.420  0.0601
##  farm_1 - farm_3   0.3636 0.195 41   1.863  0.2089
##  farm_2 - farm_3  -0.0455 0.169 41  -0.269  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_1     0.636 0.1380 41   0.3576    0.915  1    
##  farm_3     0.273 0.1380 41  -0.0060    0.551  1    
##  farm_2     0.227 0.0976 41   0.0302    0.424  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Manure_application_in_Maize_field_during_2022.23_season----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  2 1.6364 0.81818  4.7308 0.01417 *
## Residuals             41 7.0909 0.17295                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.818 0.1254 41    0.565    1.071
##  farm_2     0.545 0.0887 41    0.366    0.725
##  farm_3     1.000 0.1254 41    0.747    1.253
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    0.273 0.154 41   1.776  0.2495
##  farm_1 - farm_3   -0.182 0.177 41  -1.025  0.9337
##  farm_2 - farm_3   -0.455 0.154 41  -2.960  0.0153
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_3     1.000 0.1254 41    0.747    1.253  1    
##  farm_1     0.818 0.1254 41    0.565    1.071  12   
##  farm_2     0.545 0.0887 41    0.366    0.725   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Count_intens_options----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  2  8.7955  4.3977  7.1861 0.002111 **
## Residuals             41 25.0909  0.6120                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      2.09 0.236 41    1.615     2.57
##  farm_2      1.00 0.167 41    0.663     1.34
##  farm_3      1.27 0.236 41    0.796     1.75
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    1.091 0.289 41   3.776  0.0015
##  farm_1 - farm_3    0.818 0.334 41   2.453  0.0556
##  farm_2 - farm_3   -0.273 0.289 41  -0.944  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1      2.09 0.236 41    1.615     2.57  1    
##  farm_3      1.27 0.236 41    0.796     1.75   2   
##  farm_2      1.00 0.167 41    0.663     1.34   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_pracatice_intercroping.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  2 0.6136 0.30682  1.6473 0.2051
## Residuals             41 7.6364 0.18625               
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1     0.818 0.130 41    0.555    1.081
##  farm_2     0.636 0.092 41    0.451    0.822
##  farm_3     0.909 0.130 41    0.646    1.172
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.1818 0.159 41   1.141  0.7816
##  farm_1 - farm_3  -0.0909 0.184 41  -0.494  1.0000
##  farm_2 - farm_3  -0.2727 0.159 41  -1.711  0.2837
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_3     0.909 0.130 41    0.646    1.172  1    
##  farm_1     0.818 0.130 41    0.555    1.081  1    
##  farm_2     0.636 0.092 41    0.451    0.822  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_practice_cover_croping.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  2 2.4545  1.2273  9.5431 0.0003955 ***
## Residuals             41 5.2727  0.1286                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1    0.6364 0.1081 41   0.4180    0.855
##  farm_2    0.0909 0.0765 41  -0.0635    0.245
##  farm_3    0.0909 0.1081 41  -0.1275    0.309
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    0.545 0.132 41   4.119  0.0005
##  farm_1 - farm_3    0.545 0.153 41   3.567  0.0028
##  farm_2 - farm_3    0.000 0.132 41   0.000  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_1    0.6364 0.1081 41   0.4180    0.855  1    
##  farm_2    0.0909 0.0765 41  -0.0635    0.245   2   
##  farm_3    0.0909 0.1081 41  -0.1275    0.309   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_practice_integrated_pest_management.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  2 0.3636 0.18182  0.7593 0.4745
## Residuals             41 9.8182 0.23947               
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1     0.727 0.148 41    0.429    1.025
##  farm_2     0.545 0.104 41    0.335    0.756
##  farm_3     0.727 0.148 41    0.429    1.025
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    0.182 0.181 41   1.006  0.9607
##  farm_1 - farm_3    0.000 0.209 41   0.000  1.0000
##  farm_2 - farm_3   -0.182 0.181 41  -1.006  0.9607
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_3     0.727 0.148 41    0.429    1.025  1    
##  farm_1     0.727 0.148 41    0.429    1.025  1    
##  farm_2     0.545 0.104 41    0.335    0.756  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_have_agroforestry_trees_in_your_farm.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  2 3.2727 1.63636    12.3 6.539e-05 ***
## Residuals             41 5.4545 0.13304                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.727 0.1100 41   0.5052    0.949
##  farm_2     0.182 0.0778 41   0.0248    0.339
##  farm_3     0.000 0.1100 41  -0.2221    0.222
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    0.545 0.135 41   4.050  0.0007
##  farm_1 - farm_3    0.727 0.156 41   4.676  0.0001
##  farm_2 - farm_3    0.182 0.135 41   1.350  0.5534
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_1     0.727 0.1100 41   0.5052    0.949  1    
##  farm_2     0.182 0.0778 41   0.0248    0.339   2   
##  farm_3     0.000 0.1100 41  -0.2221    0.222   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_have_fruit_trees.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value  Pr(>F)   
## typo_1[["farm_type"]]  2 2.3182  1.1591  6.0434 0.00501 **
## Residuals             41 7.8636  0.1918                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1    0.7273 0.1320 41    0.461    0.994
##  farm_2    0.3182 0.0934 41    0.130    0.507
##  farm_3    0.0909 0.1320 41   -0.176    0.358
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    0.409 0.162 41   2.530  0.0461
##  farm_1 - farm_3    0.636 0.187 41   3.408  0.0044
##  farm_2 - farm_3    0.227 0.162 41   1.405  0.5024
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_1    0.7273 0.1320 41    0.461    0.994  1    
##  farm_2    0.3182 0.0934 41    0.130    0.507   2   
##  farm_3    0.0909 0.1320 41   -0.176    0.358   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Do_you_own_any_vegetable_garden.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  2 2.7500 1.37500  8.7961 0.0006628 ***
## Residuals             41 6.4091 0.15632                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.727 0.1192 41   0.4865    0.968
##  farm_2     0.136 0.0843 41  -0.0339    0.307
##  farm_3     0.182 0.1192 41  -0.0589    0.423
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.5909 0.146 41   4.047  0.0007
##  farm_1 - farm_3   0.5455 0.169 41   3.235  0.0072
##  farm_2 - farm_3  -0.0455 0.146 41  -0.311  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_1     0.727 0.1192 41   0.4865    0.968  1    
##  farm_3     0.182 0.1192 41  -0.0589    0.423   2   
##  farm_2     0.136 0.0843 41  -0.0339    0.307   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Count_sust_practices----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value   Pr(>F)    
## typo_1[["farm_type"]]  2 48.545 24.2727  24.655 9.32e-08 ***
## Residuals             41 40.364  0.9845                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      4.36 0.299 41     3.76     4.97
##  farm_2      1.91 0.212 41     1.48     2.34
##  farm_3      2.00 0.299 41     1.40     2.60
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   2.4545 0.366 41   6.699  <.0001
##  farm_1 - farm_3   2.3636 0.423 41   5.587  <.0001
##  farm_2 - farm_3  -0.0909 0.366 41  -0.248  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_1      4.36 0.299 41     3.76     4.97  1    
##  farm_3      2.00 0.299 41     1.40     2.60   2   
##  farm_2      1.91 0.212 41     1.48     2.34   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same.
# Choose a few box-plots to display, or any other visual. Here is just an e.g. for per capita income
boxplot_variable <- function(var_name, var_title){
  png(paste0('initial_vars/plot_', var_name, '.png'), height = 7.5, width = 10, units = 'cm', res = 1000)
  print(
    ggplot(typo_1, aes_string('farm_type', var_name)) +
      geom_boxplot() +
      labs(x = 'Farm type', y = var_title, title = NULL) + 
      theme_bw()
  )
  ggsave(paste0('initial_vars/plot_', var_name, '.png')) 
  dev.off()
}
boxplot_variable('TotalLand', 'Farm size, ha')
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('HH_income_', 'Household income, USD')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('PercFarmIncome', 'Proportion of income derived from farming, %')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('PercentageLegumeArea', 'Share of farm area occupied by legume crops, %')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('TLU', 'Size of livestock, TLU')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('TLU_density', '???? TLU density ????')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('Ngoats', 'Number of goats')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('Nchickens', 'Number of chickens')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('AvgMZ_yield.kgs.', 'Maize yield, kg/ha')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('Manure_application_in_Maize_field_during_2022.23_season', 'Manure application')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('Count_sust_practices', 'Number of sustainable practices')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('HHSize', 'Size of household')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('Count_intens_options', 'Number of intensification options')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('Do_you_pracatice_intercroping.', 'Number of intensification options practised')
## Saving 3.94 x 2.95 in image
## png 
##   2
boxplot_variable('Do_you_own_any_vegetable_garden.', 'Presence of vegetable garden')
## Saving 3.94 x 2.95 in image
## png 
##   2

Since I was unsure about the variables to include in the PCA, below is a subset of the 27 variables which were used in the above lines of codes. This can be modified, of course. Al related plots are generated in a separate folder named ā€œvars_subsetā€

# re-run the PCA according to the subset of variables shared in the email of 2024-10-21
pca_df2 <- pca_df |>
  select(HHSize, Age, highestEdu_qualification.HHH., 
         HH_income_, PercFarmIncome, 
         TLU, 
         TotalLand,  PercentageMaizeArea, PercentageLegumeArea, AvgMZ_yield.kgs.,
         Manure_application_in_Maize_field_during_2022.23_season,  Count_sust_practices)

P00 <- GGally::ggpairs(pca_df2)
png('vars_subset/correlation_matrix2.png', height = 25, width = 20, units = 'cm', res = 1000)
P00
ggsave('vars_subset/correlation_matrix2.png')
## Saving 7.87 x 9.84 in image
dev.off()
## png 
##   2
# PCA on initially selected variables
res_pca2 <- FactoMineR::PCA(pca_df2)

# choose how many dimensions to incorporate in the typology
# the more dimensions, the more variability is captured, and the more noise is introduced
res_pca2$eig
##         eigenvalue percentage of variance cumulative percentage of variance
## comp 1   3.1209014              26.007512                          26.00751
## comp 2   1.8672824              15.560687                          41.56820
## comp 3   1.4313861              11.928217                          53.49642
## comp 4   1.2280086              10.233405                          63.72982
## comp 5   0.9758714               8.132262                          71.86208
## comp 6   0.9293140               7.744283                          79.60637
## comp 7   0.8324000               6.936666                          86.54303
## comp 8   0.4569325               3.807771                          90.35080
## comp 9   0.3887543               3.239619                          93.59042
## comp 10  0.3263572               2.719643                          96.31007
## comp 11  0.2914467               2.428722                          98.73879
## comp 12  0.1513455               1.261212                         100.00000
# what variables are best represented by each dimension
factoextra::fviz_pca_biplot(res_pca2)

factoextra::fviz_pca_biplot(res_pca2, axes = c(1, 3))

factoextra::fviz_pca_biplot(res_pca2, axes = c(1, 4))

factoextra::fviz_pca_biplot(res_pca2, axes = c(2, 3))

factoextra::fviz_pca_biplot(res_pca2, axes = c(2, 4))

factoextra::fviz_pca_biplot(res_pca2, axes = c(3, 4))

PCA_screeplot <- factoextra::fviz_screeplot(res_pca2, addlabels = T)

ind_plot1 <- factoextra::fviz_pca_ind(res_pca2)
ind_plot2 <- factoextra::fviz_pca_ind(res_pca2, axes = c(1, 3))
ind_plot3 <- factoextra::fviz_pca_ind(res_pca2, axes = c(1, 4))
ind_plot4 <- factoextra::fviz_pca_ind(res_pca2, axes = c(2, 3))
ind_plot5 <- factoextra::fviz_pca_ind(res_pca2, axes = c(2, 4))
ind_plot6 <- factoextra::fviz_pca_ind(res_pca2, axes = c(3, 4))

var_plot1 <- factoextra::fviz_pca_var(res_pca2)
var_plot2 <- factoextra::fviz_pca_var(res_pca2, axes = c(1, 3))
var_plot3 <- factoextra::fviz_pca_var(res_pca2, axes = c(1, 4))
var_plot4 <- factoextra::fviz_pca_var(res_pca2, axes = c(2, 3))
var_plot5 <- factoextra::fviz_pca_var(res_pca2, axes = c(2, 4))
var_plot6 <- factoextra::fviz_pca_var(res_pca2, axes = c(3, 4))

# function to save PCA plots
draw_plot <- function(pp, pp_name){
  png(paste0('vars_subset/plot_', pp_name, '.png'), height = 15, width = 20, units = 'cm', res = 1000)
  print(pp) 
  ggsave(paste0('vars_subset/plot_', pp_name, '.png')) 
  dev.off()
}

draw_plot(PCA_screeplot, 'PCA_screeplot')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(ind_plot1, 'PCA_individuals_01')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(ind_plot2, 'PCA_individuals_02')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(ind_plot3, 'PCA_individuals_03')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(ind_plot4, 'PCA_individuals_04')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(ind_plot5, 'PCA_individuals_05')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(ind_plot6, 'PCA_individuals_06')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(var_plot1, 'PCA_variables_01')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(var_plot2, 'PCA_variables_02')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(var_plot3, 'PCA_variables_03')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(var_plot4, 'PCA_variables_04')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(var_plot5, 'PCA_variables_05')
## Saving 7.87 x 5.9 in image
## png 
##   2
draw_plot(var_plot6, 'PCA_variables_06')
## Saving 7.87 x 5.9 in image
## png 
##   2
# choose the most relevant variables to describe each dimension
print(res_pca2$var$contrib[, 1:5])
##                                                              Dim.1      Dim.2
## HHSize                                                  10.1480742  5.0034421
## Age                                                      0.4763825 29.6653364
## highestEdu_qualification.HHH.                            1.9600744 27.2365775
## HH_income_                                              19.6869907  0.4865609
## PercFarmIncome                                          11.0226524  0.4388893
## TLU                                                      2.0555029  0.6467912
## TotalLand                                               22.8149218  2.2535519
## PercentageMaizeArea                                      0.2923745  5.7527602
## PercentageLegumeArea                                    11.0339448  0.4016244
## AvgMZ_yield.kgs.                                        13.4190003  0.7004005
## Manure_application_in_Maize_field_during_2022.23_season  3.1154513 24.8319155
## Count_sust_practices                                     3.9746303  2.5821501
##                                                              Dim.3        Dim.4
## HHSize                                                   0.1107892 2.491640e+01
## Age                                                      8.8339461 3.366582e-02
## highestEdu_qualification.HHH.                            3.3331671 1.160756e+01
## HH_income_                                               2.8694579 3.945730e-06
## PercFarmIncome                                           9.4151064 7.128032e+00
## TLU                                                      0.1051277 3.457151e+01
## TotalLand                                                4.7540818 2.479862e+00
## PercentageMaizeArea                                     45.6694886 7.911568e+00
## PercentageLegumeArea                                    13.0585259 2.554537e+00
## AvgMZ_yield.kgs.                                         8.7530159 4.587630e-01
## Manure_application_in_Maize_field_during_2022.23_season  1.7158564 8.271573e+00
## Count_sust_practices                                     1.3814370 6.651715e-02
##                                                              Dim.5
## HHSize                                                   0.1607655
## Age                                                      8.1606014
## highestEdu_qualification.HHH.                            8.0808391
## HH_income_                                              10.6241952
## PercFarmIncome                                          18.8813926
## TLU                                                      1.3701837
## TotalLand                                                1.5104011
## PercentageMaizeArea                                      0.4017049
## PercentageLegumeArea                                    11.8157565
## AvgMZ_yield.kgs.                                        23.2121496
## Manure_application_in_Maize_field_during_2022.23_season  0.6818257
## Count_sust_practices                                    15.1001846
for(i in list(c(1, 2), c(1, 3), c(1, 4), c(2, 3), c(2, 4), c(3, 4))){
  for(j in names(pca_df2)){
    nb_col <- length(unique(pca_df2[[j]]))
    print(factoextra::fviz_ellipses(res_pca2, 
                                  habillage = j, 
                                  axes = i, 
                                  geom = 'text', 
                                  addEllipses = T, 
                                  palette = pal(nb_col)
                                  )
        )
  }
}
## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

## Warning: Computation failed in `stat_conf_ellipse()`.
## Caused by error in `if (scale[1] > 0) ...`:
## ! missing value where TRUE/FALSE needed

# Hierarchical clustering on the first 4 dimensions that capture 54% of total variability
eg_hc <- res_pca2$ind$coord[, 1:4]
dist_matrix2 <- dist(eg_hc)
hc <- hclust(dist_matrix2, method = 'ward.D') # could be 'complete' or 'average'
plot(hc, main = 'Subset 1 - Dendogram on the first 4 components', xlab = '', sub = '', cex = 0.6)

# decide on the number of farm types to make: 3 or 4
typo_1 <- pca_df2
for(cl in 4:3){
  clusters <- cutree(hc, k = cl)
  typo_1$farm_type <- paste0('farm_', clusters)
  print(paste0('================ Number of farm types = ', cl, ' ================'))
  for(i in names(pca_df2)){
    res_anova <- lm(typo_1[[i]] ~ typo_1[['farm_type']])
    emm0 <- emmeans::emmeans(res_anova, 
                           pairwise ~ farm_type, 
                           type = 'response', 
                           adjust = 'bonferroni')
    print(paste0('--------------------', i, '----------------'))
    print(anova(res_anova))
    print('-----------')
    print(emm0)
    print(multcomp::cld(emm0, decreasing = T))
  }
}
## [1] "================ Number of farm types = 4 ================"
## [1] "--------------------HHSize----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  3  65.633 21.8776  6.2546 0.001389 **
## Residuals             40 139.913  3.4978                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      5.67 0.441 40     4.78     6.56
##  farm_2      7.21 0.500 40     6.20     8.22
##  farm_3      5.11 0.623 40     3.85     6.37
##  farm_4      9.67 1.080 40     7.48    11.85
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   -1.548 0.666 40  -2.322  0.1524
##  farm_1 - farm_3    0.556 0.764 40   0.728  1.0000
##  farm_1 - farm_4   -4.000 1.166 40  -3.430  0.0085
##  farm_2 - farm_3    2.103 0.799 40   2.632  0.0720
##  farm_2 - farm_4   -2.452 1.190 40  -2.061  0.2750
##  farm_3 - farm_4   -4.556 1.247 40  -3.654  0.0045
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_4      9.67 1.080 40     7.48    11.85  1    
##  farm_2      7.21 0.500 40     6.20     8.22  12   
##  farm_1      5.67 0.441 40     4.78     6.56   2   
##  farm_3      5.11 0.623 40     3.85     6.37   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Age----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3  886.52 295.507  9.4109 7.847e-05 ***
## Residuals             40 1256.02  31.401                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean   SE df lower.CL upper.CL
##  farm_1      39.7 1.32 40     37.1     42.4
##  farm_2      47.3 1.50 40     44.3     50.3
##  farm_3      50.9 1.87 40     47.1     54.7
##  farm_4      45.7 3.24 40     39.1     52.2
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2    -7.56 2.00 40  -3.788  0.0030
##  farm_1 - farm_3   -11.17 2.29 40  -4.881  0.0001
##  farm_1 - farm_4    -5.94 3.49 40  -1.701  0.5801
##  farm_2 - farm_3    -3.60 2.39 40  -1.505  0.8411
##  farm_2 - farm_4     1.62 3.57 40   0.454  1.0000
##  farm_3 - farm_4     5.22 3.74 40   1.398  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean   SE df lower.CL upper.CL .group
##  farm_3      50.9 1.87 40     47.1     54.7  1    
##  farm_2      47.3 1.50 40     44.3     50.3  1    
##  farm_4      45.7 3.24 40     39.1     52.2  12   
##  farm_1      39.7 1.32 40     37.1     42.4   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------highestEdu_qualification.HHH.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3 5.8741 1.95803  8.6037 0.0001578 ***
## Residuals             40 9.1032 0.22758                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      1.83 0.112 40    1.606     2.06
##  farm_2      1.14 0.127 40    0.885     1.40
##  farm_3      1.11 0.159 40    0.790     1.43
##  farm_4      2.00 0.275 40    1.443     2.56
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.6905 0.170 40   4.062  0.0013
##  farm_1 - farm_3   0.7222 0.195 40   3.708  0.0038
##  farm_1 - farm_4  -0.1667 0.297 40  -0.560  1.0000
##  farm_2 - farm_3   0.0317 0.204 40   0.156  1.0000
##  farm_2 - farm_4  -0.8571 0.304 40  -2.824  0.0441
##  farm_3 - farm_4  -0.8889 0.318 40  -2.795  0.0476
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_4      2.00 0.275 40    1.443     2.56  1    
##  farm_1      1.83 0.112 40    1.606     2.06  1    
##  farm_2      1.14 0.127 40    0.885     1.40   2   
##  farm_3      1.11 0.159 40    0.790     1.43   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------HH_income_----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df     Sum Sq    Mean Sq F value   Pr(>F)    
## typo_1[["farm_type"]]  3 5.1274e+13 1.7091e+13  25.145 2.62e-09 ***
## Residuals             40 2.7188e+13 6.7970e+11                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type  emmean     SE df lower.CL upper.CL
##  farm_1    1061000 194323 40   668259  1453741
##  farm_2    1537857 220341 40  1092531  1983183
##  farm_3     332222 274814 40  -223197   887641
##  farm_4    5000000 475991 40  4037986  5962014
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2  -476857 293788 40  -1.623  0.6745
##  farm_1 - farm_3   728778 336577 40   2.165  0.2183
##  farm_1 - farm_4 -3939000 514129 40  -7.661  <.0001
##  farm_2 - farm_3  1205635 352240 40   3.423  0.0087
##  farm_2 - farm_4 -3462143 524517 40  -6.601  <.0001
##  farm_3 - farm_4 -4667778 549627 40  -8.493  <.0001
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type  emmean     SE df lower.CL upper.CL .group
##  farm_4    5000000 475991 40  4037986  5962014  1    
##  farm_2    1537857 220341 40  1092531  1983183   2   
##  farm_1    1061000 194323 40   668259  1453741   23  
##  farm_3     332222 274814 40  -223197   887641    3  
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------PercFarmIncome----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq  Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  3 0.39230 0.130767  5.6108 0.002623 **
## Residuals             40 0.93226 0.023307                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.901 0.0360 40    0.828    0.974
##  farm_2     0.830 0.0408 40    0.748    0.913
##  farm_3     0.892 0.0509 40    0.790    0.995
##  farm_4     0.521 0.0881 40    0.343    0.700
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2  0.07077 0.0544 40   1.301  1.0000
##  farm_1 - farm_3  0.00845 0.0623 40   0.136  1.0000
##  farm_1 - farm_4  0.37951 0.0952 40   3.986  0.0017
##  farm_2 - farm_3 -0.06232 0.0652 40  -0.955  1.0000
##  farm_2 - farm_4  0.30874 0.0971 40   3.179  0.0171
##  farm_3 - farm_4  0.37106 0.1018 40   3.646  0.0046
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_1     0.901 0.0360 40    0.828    0.974  1    
##  farm_3     0.892 0.0509 40    0.790    0.995  1    
##  farm_2     0.830 0.0408 40    0.748    0.913  1    
##  farm_4     0.521 0.0881 40    0.343    0.700   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------TLU----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  3  35.65  11.883  0.9951  0.405
## Residuals             40 477.68  11.942               
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1     0.351 0.815 40   -1.295     2.00
##  farm_2     2.242 0.924 40    0.376     4.11
##  farm_3     0.327 1.152 40   -2.001     2.65
##  farm_4     1.917 1.995 40   -2.116     5.95
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2  -1.8910 1.23 40  -1.536  0.7950
##  farm_1 - farm_3   0.0244 1.41 40   0.017  1.0000
##  farm_1 - farm_4  -1.5656 2.16 40  -0.726  1.0000
##  farm_2 - farm_3   1.9155 1.48 40   1.297  1.0000
##  farm_2 - farm_4   0.3255 2.20 40   0.148  1.0000
##  farm_3 - farm_4  -1.5900 2.30 40  -0.690  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_2     2.242 0.924 40    0.376     4.11  1    
##  farm_4     1.917 1.995 40   -2.116     5.95  1    
##  farm_1     0.351 0.815 40   -1.295     2.00  1    
##  farm_3     0.327 1.152 40   -2.001     2.65  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------TotalLand----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3 407.95 135.982  24.733 3.242e-09 ***
## Residuals             40 219.92   5.498                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      4.81 0.553 40     3.69     5.92
##  farm_2      6.14 0.627 40     4.88     7.41
##  farm_3      3.31 0.782 40     1.73     4.89
##  farm_4     16.33 1.354 40    13.60    19.07
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    -1.34 0.836 40  -1.600  0.7042
##  farm_1 - farm_3     1.50 0.957 40   1.567  0.7500
##  farm_1 - farm_4   -11.53 1.462 40  -7.884  <.0001
##  farm_2 - farm_3     2.84 1.002 40   2.832  0.0432
##  farm_2 - farm_4   -10.19 1.492 40  -6.831  <.0001
##  farm_3 - farm_4   -13.03 1.563 40  -8.334  <.0001
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_4     16.33 1.354 40    13.60    19.07  1    
##  farm_2      6.14 0.627 40     4.88     7.41   2   
##  farm_1      4.81 0.553 40     3.69     5.92   23  
##  farm_3      3.31 0.782 40     1.73     4.89    3  
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------PercentageMaizeArea----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq  Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  3 0.16908 0.056362  3.2248 0.03252 *
## Residuals             40 0.69911 0.017478                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.377 0.0312 40    0.314    0.440
##  farm_2     0.518 0.0353 40    0.446    0.589
##  farm_3     0.436 0.0441 40    0.347    0.525
##  farm_4     0.371 0.0763 40    0.217    0.525
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2 -0.14096 0.0471 40  -2.992  0.0284
##  farm_1 - farm_3 -0.05954 0.0540 40  -1.103  1.0000
##  farm_1 - farm_4  0.00588 0.0824 40   0.071  1.0000
##  farm_2 - farm_3  0.08142 0.0565 40   1.442  0.9433
##  farm_2 - farm_4  0.14684 0.0841 40   1.746  0.5311
##  farm_3 - farm_4  0.06542 0.0881 40   0.742  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_2     0.518 0.0353 40    0.446    0.589  1    
##  farm_3     0.436 0.0441 40    0.347    0.525  12   
##  farm_1     0.377 0.0312 40    0.314    0.440   2   
##  farm_4     0.371 0.0763 40    0.217    0.525  12   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------PercentageLegumeArea----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq  Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3 0.44038 0.146793  8.1982 0.0002262 ***
## Residuals             40 0.71622 0.017905                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.438 0.0315 40  0.37432    0.502
##  farm_2     0.342 0.0358 40  0.27010    0.415
##  farm_3     0.550 0.0446 40  0.45954    0.640
##  farm_4     0.161 0.0773 40  0.00442    0.317
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2   0.0957 0.0477 40   2.007  0.3094
##  farm_1 - farm_3  -0.1116 0.0546 40  -2.043  0.2858
##  farm_1 - farm_4   0.2775 0.0834 40   3.326  0.0114
##  farm_2 - farm_3  -0.2073 0.0572 40  -3.626  0.0048
##  farm_2 - farm_4   0.1818 0.0851 40   2.136  0.2333
##  farm_3 - farm_4   0.3891 0.0892 40   4.362  0.0005
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_3     0.550 0.0446 40  0.45954    0.640  1    
##  farm_1     0.438 0.0315 40  0.37432    0.502  12   
##  farm_2     0.342 0.0358 40  0.27010    0.415   23  
##  farm_4     0.161 0.0773 40  0.00442    0.317    3  
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------AvgMZ_yield.kgs.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df    Sum Sq  Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  3  73697709 24565903  8.0428 0.0002601 ***
## Residuals             40 122175605  3054390                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean   SE df lower.CL upper.CL
##  farm_1      1909  412 40     1077     2742
##  farm_2      3345  467 40     2401     4289
##  farm_3       981  583 40     -196     2159
##  farm_4      6000 1009 40     3961     8039
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2    -1436  623 40  -2.305  0.1586
##  farm_1 - farm_3      928  713 40   1.301  1.0000
##  farm_1 - farm_4    -4091 1090 40  -3.754  0.0033
##  farm_2 - farm_3     2364  747 40   3.165  0.0178
##  farm_2 - farm_4    -2655 1112 40  -2.388  0.1305
##  farm_3 - farm_4    -5019 1165 40  -4.308  0.0006
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean   SE df lower.CL upper.CL .group
##  farm_4      6000 1009 40     3961     8039  1    
##  farm_2      3345  467 40     2401     4289  12   
##  farm_1      1909  412 40     1077     2742   23  
##  farm_3       981  583 40     -196     2159    3  
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Manure_application_in_Maize_field_during_2022.23_season----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value  Pr(>F)    
## typo_1[["farm_type"]]  3 3.5209 1.17364   9.017 0.00011 ***
## Residuals             40 5.2063 0.13016                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.389 0.0850 40    0.217    0.561
##  farm_2     0.929 0.0964 40    0.734    1.123
##  farm_3     1.000 0.1203 40    0.757    1.243
##  farm_4     1.000 0.2083 40    0.579    1.421
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2  -0.5397 0.129 40  -4.198  0.0009
##  farm_1 - farm_3  -0.6111 0.147 40  -4.149  0.0010
##  farm_1 - farm_4  -0.6111 0.225 40  -2.716  0.0582
##  farm_2 - farm_3  -0.0714 0.154 40  -0.463  1.0000
##  farm_2 - farm_4  -0.0714 0.230 40  -0.311  1.0000
##  farm_3 - farm_4   0.0000 0.241 40   0.000  1.0000
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_4     1.000 0.2083 40    0.579    1.421  1    
##  farm_3     1.000 0.1203 40    0.757    1.243  1    
##  farm_2     0.929 0.0964 40    0.734    1.123  1    
##  farm_1     0.389 0.0850 40    0.217    0.561   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Count_sust_practices----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  3 10.465  3.4882  1.7787 0.1667
## Residuals             40 78.444  1.9611               
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      2.56 0.330 40    1.888     3.22
##  farm_2      3.00 0.374 40    2.244     3.76
##  farm_3      1.67 0.467 40    0.723     2.61
##  farm_4      3.00 0.809 40    1.366     4.63
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   -0.444 0.499 40  -0.891  1.0000
##  farm_1 - farm_3    0.889 0.572 40   1.555  0.7672
##  farm_1 - farm_4   -0.444 0.873 40  -0.509  1.0000
##  farm_2 - farm_3    1.333 0.598 40   2.228  0.1892
##  farm_2 - farm_4    0.000 0.891 40   0.000  1.0000
##  farm_3 - farm_4   -1.333 0.934 40  -1.428  0.9660
## 
## P value adjustment: bonferroni method for 6 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_4      3.00 0.809 40    1.366     4.63  1    
##  farm_2      3.00 0.374 40    2.244     3.76  1    
##  farm_1      2.56 0.330 40    1.888     3.22  1    
##  farm_3      1.67 0.467 40    0.723     2.61  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 4 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "================ Number of farm types = 3 ================"
## [1] "--------------------HHSize----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  2  41.401 20.7003  5.1705 0.009944 **
## Residuals             41 164.145  4.0035                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      5.67 0.472 41     4.71     6.62
##  farm_2      6.39 0.417 41     5.55     7.23
##  farm_3      9.67 1.155 41     7.33    12.00
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2   -0.725 0.63 41  -1.151  0.7694
##  farm_1 - farm_3   -4.000 1.25 41  -3.206  0.0078
##  farm_2 - farm_3   -3.275 1.23 41  -2.667  0.0327
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_3      9.67 1.155 41     7.33    12.00  1    
##  farm_2      6.39 0.417 41     5.55     7.23   2   
##  farm_1      5.67 0.472 41     4.71     6.62   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Age----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  2  815.4  407.70  12.595 5.442e-05 ***
## Residuals             41 1327.2   32.37                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean   SE df lower.CL upper.CL
##  farm_1      39.7 1.34 41     37.0     42.4
##  farm_2      48.7 1.19 41     46.3     51.1
##  farm_3      45.7 3.28 41     39.0     52.3
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2    -8.97 1.79 41  -5.012  <.0001
##  farm_1 - farm_3    -5.94 3.55 41  -1.675  0.3044
##  farm_2 - farm_3     3.03 3.49 41   0.867  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean   SE df lower.CL upper.CL .group
##  farm_2      48.7 1.19 41     46.3     51.1  1    
##  farm_3      45.7 3.28 41     39.0     52.3  12   
##  farm_1      39.7 1.34 41     37.0     42.4   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------highestEdu_qualification.HHH.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  2 5.8686 2.93429  13.208 3.737e-05 ***
## Residuals             41 9.1087 0.22216                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1      1.83 0.1111 41    1.609     2.06
##  farm_2      1.13 0.0983 41    0.932     1.33
##  farm_3      2.00 0.2721 41    1.450     2.55
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2    0.703 0.148 41   4.739  0.0001
##  farm_1 - farm_3   -0.167 0.294 41  -0.567  1.0000
##  farm_2 - farm_3   -0.870 0.289 41  -3.005  0.0135
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_3      2.00 0.2721 41    1.450     2.55  1    
##  farm_1      1.83 0.1111 41    1.609     2.06  1    
##  farm_2      1.13 0.0983 41    0.932     1.33   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------HH_income_----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df     Sum Sq    Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  2 4.3311e+13 2.1655e+13  25.259 7.099e-08 ***
## Residuals             41 3.5151e+13 8.5734e+11                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type  emmean     SE df lower.CL upper.CL
##  farm_1    1061000 218243 41   620248  1501752
##  farm_2    1066087 193069 41   676175  1455999
##  farm_3    5000000 534585 41  3920384  6079616
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2    -5087 291386 41  -0.017  1.0000
##  farm_1 - farm_3 -3939000 577418 41  -6.822  <.0001
##  farm_2 - farm_3 -3933913 568381 41  -6.921  <.0001
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type  emmean     SE df lower.CL upper.CL .group
##  farm_3    5000000 534585 41  3920384  6079616  1    
##  farm_2    1066087 193069 41   676175  1455999   2   
##  farm_1    1061000 218243 41   620248  1501752   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------PercFarmIncome----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq  Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  2 0.37103 0.185514  7.9767 0.001186 **
## Residuals             41 0.95354 0.023257                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.901 0.0359 41    0.828    0.974
##  farm_2     0.855 0.0318 41    0.790    0.919
##  farm_3     0.521 0.0880 41    0.344    0.699
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2   0.0464 0.0480 41   0.967  1.0000
##  farm_1 - farm_3   0.3795 0.0951 41   3.991  0.0008
##  farm_2 - farm_3   0.3331 0.0936 41   3.558  0.0029
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_1     0.901 0.0359 41    0.828    0.974  1    
##  farm_2     0.855 0.0318 41    0.790    0.919  1    
##  farm_3     0.521 0.0880 41    0.344    0.699   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------TLU----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  2  15.55  7.7751  0.6404 0.5323
## Residuals             41 497.78 12.1409               
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1     0.351 0.821 41  -1.3075     2.01
##  farm_2     1.493 0.727 41   0.0253     2.96
##  farm_3     1.917 2.012 41  -2.1461     5.98
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2   -1.141 1.10 41  -1.041  0.9119
##  farm_1 - farm_3   -1.566 2.17 41  -0.720  1.0000
##  farm_2 - farm_3   -0.424 2.14 41  -0.198  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_3     1.917 2.012 41  -2.1461     5.98  1    
##  farm_2     1.493 0.727 41   0.0253     2.96  1    
##  farm_1     0.351 0.821 41  -1.3075     2.01  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------TotalLand----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  2 363.84  181.92   28.25 1.938e-08 ***
## Residuals             41 264.02    6.44                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      4.81 0.598 41     3.60     6.01
##  farm_2      5.03 0.529 41     3.96     6.10
##  farm_3     16.33 1.465 41    13.37    19.29
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   -0.227 0.799 41  -0.284  1.0000
##  farm_1 - farm_3  -11.528 1.582 41  -7.285  <.0001
##  farm_2 - farm_3  -11.301 1.558 41  -7.255  <.0001
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_3     16.33 1.465 41    13.37    19.29  1    
##  farm_2      5.03 0.529 41     3.96     6.10   2   
##  farm_1      4.81 0.598 41     3.60     6.01   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------PercentageMaizeArea----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq  Mean Sq F value Pr(>F)  
## typo_1[["farm_type"]]  2 0.13277 0.066383  3.7009 0.0333 *
## Residuals             41 0.73543 0.017937                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.377 0.0316 41    0.313    0.441
##  farm_2     0.486 0.0279 41    0.430    0.542
##  farm_3     0.371 0.0773 41    0.215    0.527
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2 -0.10910 0.0421 41  -2.589  0.0398
##  farm_1 - farm_3  0.00588 0.0835 41   0.070  1.0000
##  farm_2 - farm_3  0.11498 0.0822 41   1.399  0.5084
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_2     0.486 0.0279 41    0.430    0.542  1    
##  farm_1     0.377 0.0316 41    0.313    0.441   2   
##  farm_3     0.371 0.0773 41    0.215    0.527  12   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------PercentageLegumeArea----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df  Sum Sq  Mean Sq F value  Pr(>F)  
## typo_1[["farm_type"]]  2 0.20493 0.102464  4.4144 0.01835 *
## Residuals             41 0.95167 0.023211                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.438 0.0359 41   0.3655    0.511
##  farm_2     0.424 0.0318 41   0.3593    0.488
##  farm_3     0.161 0.0880 41  -0.0171    0.338
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate     SE df t.ratio p.value
##  farm_1 - farm_2   0.0146 0.0479 41   0.304  1.0000
##  farm_1 - farm_3   0.2775 0.0950 41   2.921  0.0170
##  farm_2 - farm_3   0.2629 0.0935 41   2.812  0.0226
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_1     0.438 0.0359 41   0.3655    0.511  1    
##  farm_2     0.424 0.0318 41   0.3593    0.488  1    
##  farm_3     0.161 0.0880 41  -0.0171    0.338   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------AvgMZ_yield.kgs.----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df    Sum Sq  Mean Sq F value   Pr(>F)   
## typo_1[["farm_type"]]  2  43094597 21547299  5.7825 0.006135 **
## Residuals             41 152778717  3726310                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean   SE df lower.CL upper.CL
##  farm_1      1909  455 41      990     2828
##  farm_2      2420  403 41     1607     3233
##  farm_3      6000 1114 41     3749     8251
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate   SE df t.ratio p.value
##  farm_1 - farm_2     -511  607 41  -0.841  1.0000
##  farm_1 - farm_3    -4091 1204 41  -3.398  0.0046
##  farm_2 - farm_3    -3580 1185 41  -3.021  0.0130
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean   SE df lower.CL upper.CL .group
##  farm_3      6000 1114 41     3749     8251  1    
##  farm_2      2420  403 41     1607     3233   2   
##  farm_1      1909  455 41      990     2828   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Manure_application_in_Maize_field_during_2022.23_season----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## typo_1[["farm_type"]]  2 3.4930 1.74649   13.68 2.809e-05 ***
## Residuals             41 5.2343 0.12767                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] "-----------"
## $emmeans
##  farm_type emmean     SE df lower.CL upper.CL
##  farm_1     0.389 0.0842 41    0.219    0.559
##  farm_2     0.957 0.0745 41    0.806    1.107
##  farm_3     1.000 0.2063 41    0.583    1.417
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2  -0.5676 0.112 41  -5.048  <.0001
##  farm_1 - farm_3  -0.6111 0.223 41  -2.743  0.0270
##  farm_2 - farm_3  -0.0435 0.219 41  -0.198  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean     SE df lower.CL upper.CL .group
##  farm_3     1.000 0.2063 41    0.583    1.417  1    
##  farm_2     0.957 0.0745 41    0.806    1.107  1    
##  farm_1     0.389 0.0842 41    0.219    0.559   2   
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same. 
## [1] "--------------------Count_sust_practices----------------"
## Analysis of Variance Table
## 
## Response: typo_1[[i]]
##                       Df Sum Sq Mean Sq F value Pr(>F)
## typo_1[["farm_type"]]  2  0.726 0.36276  0.1687 0.8454
## Residuals             41 88.184 2.15082               
## [1] "-----------"
## $emmeans
##  farm_type emmean    SE df lower.CL upper.CL
##  farm_1      2.56 0.346 41     1.86     3.25
##  farm_2      2.48 0.306 41     1.86     3.10
##  farm_3      3.00 0.847 41     1.29     4.71
## 
## Confidence level used: 0.95 
## 
## $contrasts
##  contrast        estimate    SE df t.ratio p.value
##  farm_1 - farm_2   0.0773 0.462 41   0.167  1.0000
##  farm_1 - farm_3  -0.4444 0.915 41  -0.486  1.0000
##  farm_2 - farm_3  -0.5217 0.900 41  -0.580  1.0000
## 
## P value adjustment: bonferroni method for 3 tests 
## 
##  farm_type emmean    SE df lower.CL upper.CL .group
##  farm_3      3.00 0.847 41     1.29     4.71  1    
##  farm_1      2.56 0.346 41     1.86     3.25  1    
##  farm_2      2.48 0.306 41     1.86     3.10  1    
## 
## Confidence level used: 0.95 
## P value adjustment: tukey method for comparing a family of 3 estimates 
## significance level used: alpha = 0.05 
## NOTE: If two or more means share the same grouping symbol,
##       then we cannot show them to be different.
##       But we also did not show them to be the same.
# Choose a few box-plots to display, or any other visual. Here is just an e.g. for per capita income
boxplot_variable <- function(var_name, var_title){
  png(paste0('vars_subset/plot_', var_name, '.png'), height = 10, width = 15, units = 'cm', res = 1000)
  print(
    ggplot(typo_1, aes_string('farm_type', var_name)) +
      geom_boxplot() +
      labs(x = 'Farm type', title = NULL, y = var_title) + 
      theme_bw()
  )
  ggsave(paste0('vars_subset/plot_', var_name, '.png')) 
  dev.off()
}

boxplot_variable('TotalLand', 'Farm size, ha')
## Saving 5.9 x 3.94 in image
## png 
##   2
boxplot_variable('HH_income_', 'Household income, USD')
## Saving 5.9 x 3.94 in image
## png 
##   2
boxplot_variable('PercFarmIncome', 'Proportion of income derived from farming, %')
## Saving 5.9 x 3.94 in image
## png 
##   2
boxplot_variable('PercentageLegumeArea', 'Share of farm area occupied by legume crops, %')
## Saving 5.9 x 3.94 in image
## png 
##   2
boxplot_variable('TLU', 'Size of livestock, TLU')
## Saving 5.9 x 3.94 in image
## png 
##   2
boxplot_variable('AvgMZ_yield.kgs.', 'Maize yield, kg/ha')
## Saving 5.9 x 3.94 in image
## png 
##   2
boxplot_variable('Manure_application_in_Maize_field_during_2022.23_season', 'Manure application')
## Saving 5.9 x 3.94 in image
## png 
##   2
boxplot_variable('Count_sust_practices', 'Number of sustainable practices')
## Saving 5.9 x 3.94 in image
## png 
##   2
boxplot_variable('HHSize', 'Size of household')
## Saving 5.9 x 3.94 in image
## png 
##   2
boxplot_variable('Age', 'Age of household head')
## Saving 5.9 x 3.94 in image
## png 
##   2