-
Notifications
You must be signed in to change notification settings - Fork 1
/
03D plsr_models_pressed_1300.R
1278 lines (1184 loc) · 94.7 KB
/
03D plsr_models_pressed_1300.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
setwd("C:/Users/kotha020/Dropbox/TraitModels2018/HerbariumPaper/")
library(spectrolab)
library(pls)
library(ggplot2)
library(caret)
library(reshape2)
library(RColorBrewer)
library(patchwork)
source("Scripts/pressed-leaf-models/00 useful_functions.R")
## this script is for 'restricted-range' pressed-leaf models
## using only 1300-2400 nm
######################################################
## read data
pressed_spec_all_train<-readRDS("ProcessedSpectralData/pressed_spec_all_train.rds")
pressed_spec_all_test<-readRDS("ProcessedSpectralData/pressed_spec_all_test.rds")
## trim to 1300-2400 nm
pressed_1300_spec_all_train<-pressed_spec_all_train[,1300:2400]
pressed_1300_spec_all_test<-pressed_spec_all_test[,1300:2400]
###################################################
## building calibration models
perC_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$C~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_perC_pressed_1300 <- selectNcomp(perC_pressed_1300, method = "onesigma", plot = FALSE)
perC_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$N))
perC_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[perC_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[perC_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[perC_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[perC_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[perC_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$C[perC_pressed_1300_valid],
val_pred=perC_pressed_1300$validation$pred[,,ncomp_perC_pressed_1300])
ggplot(perC_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(38,55),ylim=c(38,55))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting %C from pressed-leaf spectra")
perN_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$N~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_perN_pressed_1300 <- selectNcomp(perN_pressed_1300, method = "onesigma", plot = FALSE)
perN_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$N))
perN_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[perN_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[perN_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[perN_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[perN_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[perN_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$N[perN_pressed_1300_valid],
val_pred=perN_pressed_1300$validation$pred[,,ncomp_perN_pressed_1300])
ggplot(perN_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(0,6),ylim=c(0,6))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting %N from pressed-leaf spectra")
LMA_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$LMA~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_LMA_pressed_1300 <- selectNcomp(LMA_pressed_1300, method = "onesigma", plot = FALSE)
LMA_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$LMA))
LMA_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[LMA_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[LMA_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[LMA_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[LMA_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[LMA_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$LMA[LMA_pressed_1300_valid],
val_pred=LMA_pressed_1300$validation$pred[,,ncomp_LMA_pressed_1300])
ggplot(LMA_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(0,0.25),ylim=c(0,0.25))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting LMA from pressed-leaf spectra")
LDMC_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$LDMC~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_LDMC_pressed_1300 <- selectNcomp(LDMC_pressed_1300, method = "onesigma", plot = FALSE)
LDMC_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$LDMC))
LDMC_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[LDMC_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[LDMC_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[LDMC_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[LDMC_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[LDMC_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$LDMC[LDMC_pressed_1300_valid],
val_pred=LDMC_pressed_1300$validation$pred[,,ncomp_LDMC_pressed_1300])
ggplot(LDMC_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(150,600),ylim=c(150,600))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting LDMC from pressed-leaf spectra")
EWT_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$EWT~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_EWT_pressed_1300 <- selectNcomp(EWT_pressed_1300, method = "onesigma", plot = FALSE)
EWT_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$EWT))
EWT_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[EWT_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[EWT_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[EWT_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[EWT_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[EWT_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$EWT[EWT_pressed_1300_valid],
val_pred=EWT_pressed_1300$validation$pred[,,ncomp_EWT_pressed_1300])
ggplot(EWT_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(0,0.3),ylim=c(0,0.3))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting EWT from pressed-leaf spectra")
chlA_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$chlA~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_chlA_pressed_1300 <- selectNcomp(chlA_pressed_1300, method = "onesigma", plot = FALSE)
chlA_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$chlA))
chlA_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[chlA_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[chlA_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[chlA_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[chlA_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[chlA_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$chlA[chlA_pressed_1300_valid],
val_pred=chlA_pressed_1300$validation$pred[,,ncomp_chlA_pressed_1300])
ggplot(chlA_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(0,16),ylim=c(0,16))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting Chl a from pressed-leaf spectra")
chlB_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$chlB~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_chlB_pressed_1300 <- selectNcomp(chlB_pressed_1300, method = "onesigma", plot = FALSE)
chlB_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$chlB))
chlB_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[chlB_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[chlB_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[chlB_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[chlB_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[chlB_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$chlB[chlB_pressed_1300_valid],
val_pred=chlB_pressed_1300$validation$pred[,,ncomp_chlB_pressed_1300])
ggplot(chlB_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(0,6),ylim=c(0,6))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting Chl b from pressed-leaf spectra")
car_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$car~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_car_pressed_1300 <- selectNcomp(car_pressed_1300, method = "onesigma", plot = FALSE)
car_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$car))
car_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[car_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[car_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[car_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[car_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[car_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$car[car_pressed_1300_valid],
val_pred=car_pressed_1300$validation$pred[,,ncomp_car_pressed_1300])
ggplot(car_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(0,3.5),ylim=c(0,3.5))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting total car from pressed-leaf spectra")
solubles_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$solubles~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_solubles_pressed_1300 <- selectNcomp(solubles_pressed_1300, method = "onesigma", plot = FALSE)
solubles_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$solubles))
solubles_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[solubles_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[solubles_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[solubles_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[solubles_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[solubles_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$solubles[solubles_pressed_1300_valid],
val_pred=solubles_pressed_1300$validation$pred[,,ncomp_solubles_pressed_1300])
ggplot(solubles_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(35,90),ylim=c(35,90))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting solubles from pressed-leaf spectra")
hemicellulose_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$hemicellulose~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_hemicellulose_pressed_1300 <- selectNcomp(hemicellulose_pressed_1300, method = "onesigma", plot = FALSE)
hemicellulose_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$hemicellulose))
hemicellulose_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[hemicellulose_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[hemicellulose_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[hemicellulose_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[hemicellulose_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[hemicellulose_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$hemicellulose[hemicellulose_pressed_1300_valid],
val_pred=hemicellulose_pressed_1300$validation$pred[,,ncomp_hemicellulose_pressed_1300])
ggplot(hemicellulose_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(0,36),ylim=c(0,36))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting hemicellulose from pressed-leaf spectra")
cellulose_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$cellulose~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_cellulose_pressed_1300 <- selectNcomp(cellulose_pressed_1300, method = "onesigma", plot = FALSE)
cellulose_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$cellulose))
cellulose_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[cellulose_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[cellulose_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[cellulose_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[cellulose_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[cellulose_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$cellulose[cellulose_pressed_1300_valid],
val_pred=cellulose_pressed_1300$validation$pred[,,ncomp_cellulose_pressed_1300])
ggplot(cellulose_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(2,28),ylim=c(2,28))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting cellulose from pressed-leaf spectra")
lignin_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$lignin~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_lignin_pressed_1300 <- selectNcomp(lignin_pressed_1300, method = "onesigma", plot = FALSE)
lignin_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$lignin))
lignin_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[lignin_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[lignin_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[lignin_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[lignin_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[lignin_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$lignin[lignin_pressed_1300_valid],
val_pred=lignin_pressed_1300$validation$pred[,,ncomp_lignin_pressed_1300])
ggplot(lignin_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(0,22),ylim=c(0,22))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting lignin from pressed-leaf spectra")
Al_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$Al~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_Al_pressed_1300 <- selectNcomp(Al_pressed_1300, method = "onesigma", plot = FALSE)
Al_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$Al))
Al_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[Al_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[Al_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[Al_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[Al_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[Al_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$Al[Al_pressed_1300_valid],
val_pred=Al_pressed_1300$validation$pred[,,ncomp_Al_pressed_1300])
ggplot(Al_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(-0.05,0.35),ylim=c(-0.05,0.35))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting Al from pressed-leaf spectra")
Ca_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$Ca~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_Ca_pressed_1300 <- selectNcomp(Ca_pressed_1300, method = "onesigma", plot = FALSE)
Ca_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$Ca))
Ca_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[Ca_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[Ca_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[Ca_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[Ca_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[Ca_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$Ca[Ca_pressed_1300_valid],
val_pred=Ca_pressed_1300$validation$pred[,,ncomp_Ca_pressed_1300])
ggplot(Ca_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(-10,40),ylim=c(-10,40))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting Ca from pressed-leaf spectra")
Cu_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$Cu~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_Cu_pressed_1300 <- selectNcomp(Cu_pressed_1300, method = "onesigma", plot = FALSE)
Cu_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$Cu))
Cu_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[Cu_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[Cu_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[Cu_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[Cu_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[Cu_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$Cu[Cu_pressed_1300_valid],
val_pred=Cu_pressed_1300$validation$pred[,,ncomp_Cu_pressed_1300])
ggplot(Cu_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(-0.005,0.055),ylim=c(-0.005,0.055))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting Cu from pressed-leaf spectra")
Fe_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$Fe~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_Fe_pressed_1300 <- selectNcomp(Fe_pressed_1300, method = "onesigma", plot = FALSE)
Fe_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$Fe))
Fe_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[Fe_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[Fe_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[Fe_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[Fe_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[Fe_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$Fe[Fe_pressed_1300_valid],
val_pred=Fe_pressed_1300$validation$pred[,,ncomp_Fe_pressed_1300])
ggplot(Fe_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(0,0.3),ylim=c(0,0.3))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting Fe from pressed-leaf spectra")
K_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$K~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_K_pressed_1300 <- selectNcomp(K_pressed_1300, method = "onesigma", plot = FALSE)
K_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$K))
K_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[K_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[K_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[K_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[K_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[K_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$K[K_pressed_1300_valid],
val_pred=K_pressed_1300$validation$pred[,,ncomp_K_pressed_1300])
ggplot(K_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(0,35),ylim=c(0,35))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting K from pressed-leaf spectra")
Mg_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$Mg~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_Mg_pressed_1300 <- selectNcomp(Mg_pressed_1300, method = "onesigma", plot = FALSE)
Mg_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$Mg))
Mg_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[Mg_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[Mg_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[Mg_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[Mg_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[Mg_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$Mg[Mg_pressed_1300_valid],
val_pred=Mg_pressed_1300$validation$pred[,,ncomp_Mg_pressed_1300])
ggplot(Mg_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(0,8),ylim=c(0,8))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting Mg from pressed-leaf spectra")
Mn_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$Mn~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_Mn_pressed_1300 <- selectNcomp(Mn_pressed_1300, method = "onesigma", plot = FALSE)
Mn_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$Mn))
Mn_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[Mn_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[Mn_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[Mn_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[Mn_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[Mn_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$Mn[Mn_pressed_1300_valid],
val_pred=Mn_pressed_1300$validation$pred[,,ncomp_Mn_pressed_1300])
ggplot(Mn_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(-0.1,1.1),ylim=c(-0.1,1.1))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting Mn from pressed-leaf spectra")
Na_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$Na~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_Na_pressed_1300 <- selectNcomp(Na_pressed_1300, method = "onesigma", plot = FALSE)
Na_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$Na))
Na_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[Na_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[Na_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[Na_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[Na_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[Na_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$Na[Na_pressed_1300_valid],
val_pred=Na_pressed_1300$validation$pred[,,ncomp_Na_pressed_1300])
ggplot(Na_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(-0.5,5),ylim=c(-0.5,5))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting Na from pressed-leaf spectra")
P_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$P~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_P_pressed_1300 <- selectNcomp(P_pressed_1300, method = "onesigma", plot = FALSE)
P_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$P))
P_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[P_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[P_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[P_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[P_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[P_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$P[P_pressed_1300_valid],
val_pred=P_pressed_1300$validation$pred[,,ncomp_P_pressed_1300])
ggplot(P_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(0,8),ylim=c(0,8))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting P from pressed-leaf spectra")
Zn_pressed_1300<-plsr(meta(pressed_1300_spec_all_train)$Zn~as.matrix(pressed_1300_spec_all_train),
ncomp=30,method = "oscorespls",validation="CV",segments=10)
ncomp_Zn_pressed_1300 <- selectNcomp(Zn_pressed_1300, method = "onesigma", plot = FALSE)
Zn_pressed_1300_valid <- which(!is.na(meta(pressed_1300_spec_all_train)$Zn))
Zn_pressed_1300_pred<-data.frame(ID=meta(pressed_1300_spec_all_train)$ID[Zn_pressed_1300_valid],
Species=meta(pressed_1300_spec_all_train)$Species[Zn_pressed_1300_valid],
Project=meta(pressed_1300_spec_all_train)$Project[Zn_pressed_1300_valid],
Stage=meta(pressed_1300_spec_all_train)$Stage[Zn_pressed_1300_valid],
GrowthForm=meta(pressed_1300_spec_all_train)$GrowthForm[Zn_pressed_1300_valid],
measured=meta(pressed_1300_spec_all_train)$Zn[Zn_pressed_1300_valid],
val_pred=Zn_pressed_1300$validation$pred[,,ncomp_Zn_pressed_1300])
ggplot(Zn_pressed_1300_pred,aes(y=measured,x=val_pred,color=GrowthForm))+
geom_point(size=2)+geom_smooth(method="lm",se=F)+
theme_bw()+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(-0.1,0.7),ylim=c(-0.1,0.7))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.2))+
labs(x="Predicted",y="Measured")+
ggtitle("Predicting Zn from pressed-leaf spectra")
###############################################
## VIP metric
## download VIP.R from Bjorn-Helge Mevik's website:
## https://mevik.net/work/software/pls.html
source("VIP.R")
VIP_pressed_1300<-data.frame(LMA=VIP(LMA_pressed_1300)[ncomp_LMA_pressed_1300,],
LDMC=VIP(LDMC_pressed_1300)[ncomp_LDMC_pressed_1300,],
EWT=VIP(EWT_pressed_1300)[ncomp_EWT_pressed_1300,],
sol=VIP(solubles_pressed_1300)[ncomp_solubles_pressed_1300,],
hemi=VIP(hemicellulose_pressed_1300)[ncomp_hemicellulose_pressed_1300,],
cell=VIP(cellulose_pressed_1300)[ncomp_cellulose_pressed_1300,],
lign=VIP(lignin_pressed_1300)[ncomp_lignin_pressed_1300,],
chlA=VIP(chlA_pressed_1300)[ncomp_chlA_pressed_1300,],
chlB=VIP(chlB_pressed_1300)[ncomp_chlB_pressed_1300,],
car=VIP(car_pressed_1300)[ncomp_car_pressed_1300,],
C=VIP(perC_pressed_1300)[ncomp_perC_pressed_1300,],
N=VIP(perN_pressed_1300)[ncomp_perN_pressed_1300,],
Al=VIP(Al_pressed_1300)[ncomp_Al_pressed_1300,],
Ca=VIP(Ca_pressed_1300)[ncomp_Ca_pressed_1300,],
Cu=VIP(Cu_pressed_1300)[ncomp_Cu_pressed_1300,],
Fe=VIP(Fe_pressed_1300)[ncomp_Fe_pressed_1300,],
K=VIP(K_pressed_1300)[ncomp_K_pressed_1300,],
Mg=VIP(Mg_pressed_1300)[ncomp_Mg_pressed_1300,],
Mn=VIP(Mn_pressed_1300)[ncomp_Mn_pressed_1300,],
Na=VIP(Na_pressed_1300)[ncomp_Na_pressed_1300,],
P=VIP(P_pressed_1300)[ncomp_P_pressed_1300,],
Zn=VIP(Zn_pressed_1300)[ncomp_Zn_pressed_1300,],
wavelength=1300:2400)
saveRDS(VIP_pressed_1300,"SavedResults/VIP_pressed_1300.rds")
#######################################
## validation: pressed leaves
solubles_jack_coefs_pressed_1300<-list()
hemicellulose_jack_coefs_pressed_1300<-list()
cellulose_jack_coefs_pressed_1300<-list()
lignin_jack_coefs_pressed_1300<-list()
perC_jack_coefs_pressed_1300<-list()
perN_jack_coefs_pressed_1300<-list()
LMA_jack_coefs_pressed_1300<-list()
LDMC_jack_coefs_pressed_1300<-list()
EWT_jack_coefs_pressed_1300<-list()
chlA_jack_coefs_pressed_1300<-list()
chlB_jack_coefs_pressed_1300<-list()
car_jack_coefs_pressed_1300<-list()
Al_jack_coefs_pressed_1300<-list()
Ca_jack_coefs_pressed_1300<-list()
Cu_jack_coefs_pressed_1300<-list()
Fe_jack_coefs_pressed_1300<-list()
K_jack_coefs_pressed_1300<-list()
Mg_jack_coefs_pressed_1300<-list()
Mn_jack_coefs_pressed_1300<-list()
Na_jack_coefs_pressed_1300<-list()
P_jack_coefs_pressed_1300<-list()
Zn_jack_coefs_pressed_1300<-list()
solubles_jack_stats_pressed_1300<-list()
hemicellulose_jack_stats_pressed_1300<-list()
cellulose_jack_stats_pressed_1300<-list()
lignin_jack_stats_pressed_1300<-list()
perC_jack_stats_pressed_1300<-list()
perN_jack_stats_pressed_1300<-list()
LMA_jack_stats_pressed_1300<-list()
LDMC_jack_stats_pressed_1300<-list()
EWT_jack_stats_pressed_1300<-list()
chlA_jack_stats_pressed_1300<-list()
chlB_jack_stats_pressed_1300<-list()
car_jack_stats_pressed_1300<-list()
Al_jack_stats_pressed_1300<-list()
Ca_jack_stats_pressed_1300<-list()
Cu_jack_stats_pressed_1300<-list()
Fe_jack_stats_pressed_1300<-list()
K_jack_stats_pressed_1300<-list()
Mg_jack_stats_pressed_1300<-list()
Mn_jack_stats_pressed_1300<-list()
Na_jack_stats_pressed_1300<-list()
P_jack_stats_pressed_1300<-list()
Zn_jack_stats_pressed_1300<-list()
nreps<-100
for(i in 1:nreps){
print(i)
n_cal_spec_pressed_1300<-nrow(pressed_1300_spec_all_train)
train_jack_pressed_1300<-sample(1:n_cal_spec_pressed_1300,floor(0.7*n_cal_spec_pressed_1300))
test_jack_pressed_1300<-setdiff(1:n_cal_spec_pressed_1300,train_jack_pressed_1300)
calib_jack_pressed_1300<-pressed_1300_spec_all_train[train_jack_pressed_1300]
val_jack_pressed_1300<-pressed_1300_spec_all_train[test_jack_pressed_1300]
solubles_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$solubles~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
hemicellulose_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$hemicellulose~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
cellulose_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$cellulose~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
lignin_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$lignin~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
perC_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$C~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
perN_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$N~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
LMA_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$LMA~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
LDMC_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$LDMC~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
EWT_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$EWT~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
chlA_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$chlA~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
chlB_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$chlB~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
car_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$car~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
Al_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$Al~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
Ca_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$Ca~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
Cu_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$Cu~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
Fe_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$Fe~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
K_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$K~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
Mg_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$Mg~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
Mn_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$Mn~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
Na_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$Na~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
P_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$P~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
Zn_pressed_1300_jack<-plsr(meta(calib_jack_pressed_1300)$Zn~as.matrix(calib_jack_pressed_1300),
ncomp=30,method = "oscorespls",validation="none")
solubles_jack_val_pred_pressed_1300<-as.vector(predict(solubles_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_solubles_pressed_1300)[,,1])
solubles_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$solubles~solubles_jack_val_pred_pressed_1300)
solubles_jack_stats_pressed_1300[[i]]<-c(R2=summary(solubles_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$solubles,solubles_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$solubles,solubles_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(solubles_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$solubles,na.rm=T))
hemicellulose_jack_val_pred_pressed_1300<-as.vector(predict(hemicellulose_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),
ncomp=ncomp_hemicellulose_pressed_1300)[,,1])
hemicellulose_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$hemicellulose~hemicellulose_jack_val_pred_pressed_1300)
hemicellulose_jack_stats_pressed_1300[[i]]<-c(R2=summary(hemicellulose_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$hemicellulose,hemicellulose_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$hemicellulose,hemicellulose_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(hemicellulose_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$hemicellulose,na.rm=T))
cellulose_jack_val_pred_pressed_1300<-as.vector(predict(cellulose_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_cellulose_pressed_1300)[,,1])
cellulose_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$cellulose~cellulose_jack_val_pred_pressed_1300)
cellulose_jack_stats_pressed_1300[[i]]<-c(R2=summary(cellulose_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$cellulose,cellulose_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$cellulose,cellulose_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(cellulose_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$cellulose,na.rm=T))
lignin_jack_val_pred_pressed_1300<-as.vector(predict(lignin_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_lignin_pressed_1300)[,,1])
lignin_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$lignin~lignin_jack_val_pred_pressed_1300)
lignin_jack_stats_pressed_1300[[i]]<-c(R2=summary(lignin_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$lignin,lignin_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$lignin,lignin_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(lignin_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$lignin,na.rm=T))
perC_jack_val_pred_pressed_1300<-as.vector(predict(perC_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_perC_pressed_1300)[,,1])
perC_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$C~perC_jack_val_pred_pressed_1300)
perC_jack_stats_pressed_1300[[i]]<-c(R2=summary(perC_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$C,perC_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$C,perC_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(perC_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$C,na.rm=T))
perN_jack_val_pred_pressed_1300<-as.vector(predict(perN_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_perN_pressed_1300)[,,1])
perN_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$N~perN_jack_val_pred_pressed_1300)
perN_jack_stats_pressed_1300[[i]]<-c(R2=summary(perN_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$N,perN_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$N,perN_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(perN_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$N,na.rm=T))
LMA_jack_val_pred_pressed_1300<-as.vector(predict(LMA_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_LMA_pressed_1300)[,,1])
LMA_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$LMA~LMA_jack_val_pred_pressed_1300)
LMA_jack_stats_pressed_1300[[i]]<-c(R2=summary(LMA_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$LMA,LMA_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$LMA,LMA_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(LMA_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$LMA,na.rm=T))
LDMC_jack_val_pred_pressed_1300<-as.vector(predict(LDMC_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_LDMC_pressed_1300)[,,1])
LDMC_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$LDMC~LDMC_jack_val_pred_pressed_1300)
LDMC_jack_stats_pressed_1300[[i]]<-c(R2=summary(LDMC_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$LDMC,LDMC_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$LDMC,LDMC_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(LDMC_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$LDMC,na.rm=T))
EWT_jack_val_pred_pressed_1300<-as.vector(predict(EWT_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_EWT_pressed_1300)[,,1])
EWT_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$EWT~EWT_jack_val_pred_pressed_1300)
EWT_jack_stats_pressed_1300[[i]]<-c(R2=summary(EWT_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$EWT,EWT_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$EWT,EWT_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(EWT_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$EWT,na.rm=T))
chlA_jack_val_pred_pressed_1300<-as.vector(predict(chlA_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_chlA_pressed_1300)[,,1])
chlA_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$chlA~chlA_jack_val_pred_pressed_1300)
chlA_jack_stats_pressed_1300[[i]]<-c(R2=summary(chlA_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$chlA,chlA_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$chlA,chlA_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(chlA_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$chlA,na.rm=T))
chlB_jack_val_pred_pressed_1300<-as.vector(predict(chlB_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_chlB_pressed_1300)[,,1])
chlB_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$chlB~chlB_jack_val_pred_pressed_1300)
chlB_jack_stats_pressed_1300[[i]]<-c(R2=summary(chlB_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$chlB,chlB_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$chlB,chlB_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(chlB_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$chlB,na.rm=T))
car_jack_val_pred_pressed_1300<-as.vector(predict(car_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_car_pressed_1300)[,,1])
car_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$car~car_jack_val_pred_pressed_1300)
car_jack_stats_pressed_1300[[i]]<-c(R2=summary(car_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$car,car_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$car,car_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(car_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$car,na.rm=T))
Al_jack_val_pred_pressed_1300<-as.vector(predict(Al_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_Al_pressed_1300)[,,1])
Al_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$Al~Al_jack_val_pred_pressed_1300)
Al_jack_stats_pressed_1300[[i]]<-c(R2=summary(Al_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$Al,Al_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$Al,Al_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(Al_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$Al,na.rm=T))
Ca_jack_val_pred_pressed_1300<-as.vector(predict(Ca_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_Ca_pressed_1300)[,,1])
Ca_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$Ca~Ca_jack_val_pred_pressed_1300)
Ca_jack_stats_pressed_1300[[i]]<-c(R2=summary(Ca_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$Ca,Ca_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$Ca,Ca_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(Ca_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$Ca,na.rm=T))
Cu_jack_val_pred_pressed_1300<-as.vector(predict(Cu_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_Cu_pressed_1300)[,,1])
Cu_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$Cu~Cu_jack_val_pred_pressed_1300)
Cu_jack_stats_pressed_1300[[i]]<-c(R2=summary(Cu_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$Cu,Cu_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$Cu,Cu_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(Cu_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$Cu,na.rm=T))
Fe_jack_val_pred_pressed_1300<-as.vector(predict(Fe_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_Fe_pressed_1300)[,,1])
Fe_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$Fe~Fe_jack_val_pred_pressed_1300)
Fe_jack_stats_pressed_1300[[i]]<-c(R2=summary(Fe_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$Fe,Fe_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$Fe,Fe_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(Fe_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$Fe,na.rm=T))
K_jack_val_pred_pressed_1300<-as.vector(predict(K_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_K_pressed_1300)[,,1])
K_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$K~K_jack_val_pred_pressed_1300)
K_jack_stats_pressed_1300[[i]]<-c(R2=summary(K_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$K,K_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$K,K_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(K_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$K,na.rm=T))
Mg_jack_val_pred_pressed_1300<-as.vector(predict(Mg_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_Mg_pressed_1300)[,,1])
Mg_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$Mg~Mg_jack_val_pred_pressed_1300)
Mg_jack_stats_pressed_1300[[i]]<-c(R2=summary(Mg_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$Mg,Mg_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$Mg,Mg_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(Mg_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$Mg,na.rm=T))
Mn_jack_val_pred_pressed_1300<-as.vector(predict(Mn_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_Mn_pressed_1300)[,,1])
Mn_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$Mn~Mn_jack_val_pred_pressed_1300)
Mn_jack_stats_pressed_1300[[i]]<-c(R2=summary(Mn_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$Mn,Mn_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$Mn,Mn_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(Mn_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$Mn,na.rm=T))
Na_jack_val_pred_pressed_1300<-as.vector(predict(Na_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_Na_pressed_1300)[,,1])
Na_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$Na~Na_jack_val_pred_pressed_1300)
Na_jack_stats_pressed_1300[[i]]<-c(R2=summary(Na_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$Na,Na_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$Na,Na_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(Na_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$Na,na.rm=T))
P_jack_val_pred_pressed_1300<-as.vector(predict(P_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_P_pressed_1300)[,,1])
P_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$P~P_jack_val_pred_pressed_1300)
P_jack_stats_pressed_1300[[i]]<-c(R2=summary(P_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$P,P_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$P,P_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(P_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$P,na.rm=T))
Zn_jack_val_pred_pressed_1300<-as.vector(predict(Zn_pressed_1300_jack,newdata=as.matrix(val_jack_pressed_1300),ncomp=ncomp_Zn_pressed_1300)[,,1])
Zn_jack_val_fit_pressed_1300<-lm(meta(val_jack_pressed_1300)$Zn~Zn_jack_val_pred_pressed_1300)
Zn_jack_stats_pressed_1300[[i]]<-c(R2=summary(Zn_jack_val_fit_pressed_1300)$r.squared,
RMSE=RMSD(meta(val_jack_pressed_1300)$Zn,Zn_jack_val_pred_pressed_1300),
perRMSE=percentRMSD(meta(val_jack_pressed_1300)$Zn,Zn_jack_val_pred_pressed_1300,0.025,0.975),
bias=mean(Zn_jack_val_pred_pressed_1300,na.rm=T)-mean(meta(val_jack_pressed_1300)$Zn,na.rm=T))
solubles_jack_coefs_pressed_1300[[i]]<-as.vector(coef(solubles_pressed_1300_jack,ncomp=ncomp_solubles_pressed_1300,intercept=TRUE))
hemicellulose_jack_coefs_pressed_1300[[i]]<-as.vector(coef(hemicellulose_pressed_1300_jack,ncomp=ncomp_hemicellulose_pressed_1300,intercept=TRUE))
cellulose_jack_coefs_pressed_1300[[i]]<-as.vector(coef(cellulose_pressed_1300_jack,ncomp=ncomp_cellulose_pressed_1300,intercept=TRUE))
lignin_jack_coefs_pressed_1300[[i]]<-as.vector(coef(lignin_pressed_1300_jack,ncomp=ncomp_lignin_pressed_1300,intercept=TRUE))
perC_jack_coefs_pressed_1300[[i]]<-as.vector(coef(perC_pressed_1300_jack,ncomp=ncomp_perC_pressed_1300,intercept=TRUE))
perN_jack_coefs_pressed_1300[[i]]<-as.vector(coef(perN_pressed_1300_jack,ncomp=ncomp_perN_pressed_1300,intercept=TRUE))
LMA_jack_coefs_pressed_1300[[i]]<-as.vector(coef(LMA_pressed_1300_jack,ncomp=ncomp_LMA_pressed_1300,intercept=TRUE))
LDMC_jack_coefs_pressed_1300[[i]]<-as.vector(coef(LDMC_pressed_1300_jack,ncomp=ncomp_LDMC_pressed_1300,intercept=TRUE))
EWT_jack_coefs_pressed_1300[[i]]<-as.vector(coef(EWT_pressed_1300_jack,ncomp=ncomp_EWT_pressed_1300,intercept=TRUE))
chlA_jack_coefs_pressed_1300[[i]]<-as.vector(coef(chlA_pressed_1300_jack,ncomp=ncomp_chlA_pressed_1300,intercept=TRUE))
chlB_jack_coefs_pressed_1300[[i]]<-as.vector(coef(chlB_pressed_1300_jack,ncomp=ncomp_chlB_pressed_1300,intercept=TRUE))
car_jack_coefs_pressed_1300[[i]]<-as.vector(coef(car_pressed_1300_jack,ncomp=ncomp_car_pressed_1300,intercept=TRUE))
Al_jack_coefs_pressed_1300[[i]]<-as.vector(coef(Al_pressed_1300_jack,ncomp=ncomp_Al_pressed_1300,intercept=TRUE))
Ca_jack_coefs_pressed_1300[[i]]<-as.vector(coef(Ca_pressed_1300_jack,ncomp=ncomp_Ca_pressed_1300,intercept=TRUE))
Cu_jack_coefs_pressed_1300[[i]]<-as.vector(coef(Cu_pressed_1300_jack,ncomp=ncomp_Cu_pressed_1300,intercept=TRUE))
Fe_jack_coefs_pressed_1300[[i]]<-as.vector(coef(Fe_pressed_1300_jack,ncomp=ncomp_Fe_pressed_1300,intercept=TRUE))
K_jack_coefs_pressed_1300[[i]]<-as.vector(coef(K_pressed_1300_jack,ncomp=ncomp_K_pressed_1300,intercept=TRUE))
Mg_jack_coefs_pressed_1300[[i]]<-as.vector(coef(Mg_pressed_1300_jack,ncomp=ncomp_Mg_pressed_1300,intercept=TRUE))
Mn_jack_coefs_pressed_1300[[i]]<-as.vector(coef(Mn_pressed_1300_jack,ncomp=ncomp_Mn_pressed_1300,intercept=TRUE))
Na_jack_coefs_pressed_1300[[i]]<-as.vector(coef(Na_pressed_1300_jack,ncomp=ncomp_Na_pressed_1300,intercept=TRUE))
P_jack_coefs_pressed_1300[[i]]<-as.vector(coef(P_pressed_1300_jack,ncomp=ncomp_P_pressed_1300,intercept=TRUE))
Zn_jack_coefs_pressed_1300[[i]]<-as.vector(coef(Zn_pressed_1300_jack,ncomp=ncomp_Zn_pressed_1300,intercept=TRUE))
}
solubles_jack_pred_pressed_1300<-apply.coefs(solubles_jack_coefs_pressed_1300,as.matrix(pressed_1300_spec_all_test))
solubles_jack_stat_pressed_1300<-t(apply(solubles_jack_pred_pressed_1300,1,function(obs) c(mean(obs),quantile(obs,probs=c(0.025,0.975)))))
solubles_jack_df_pressed_1300<-data.frame(pred_mean=solubles_jack_stat_pressed_1300[,1],
pred_low=solubles_jack_stat_pressed_1300[,2],
pred_high=solubles_jack_stat_pressed_1300[,3],
Measured=meta(pressed_1300_spec_all_test)$solubles,
ncomp=ncomp_solubles_pressed_1300,
Project=meta(pressed_1300_spec_all_test)$Project,
Species=meta(pressed_1300_spec_all_test)$Species,
GrowthForm=meta(pressed_1300_spec_all_test)$GrowthForm,
Discoloration=meta(pressed_1300_spec_all_test)$Discoloration,
NDVI=meta(pressed_1300_spec_all_test)$NDVI,
deg_ind=meta(pressed_1300_spec_all_test)$deg_ind,
ID=meta(pressed_1300_spec_all_test)$ID)
hemicellulose_jack_pred_pressed_1300<-apply.coefs(hemicellulose_jack_coefs_pressed_1300,as.matrix(pressed_1300_spec_all_test))
hemicellulose_jack_stat_pressed_1300<-t(apply(hemicellulose_jack_pred_pressed_1300,1,function(obs) c(mean(obs),quantile(obs,probs=c(0.025,0.975)))))
hemicellulose_jack_df_pressed_1300<-data.frame(pred_mean=hemicellulose_jack_stat_pressed_1300[,1],
pred_low=hemicellulose_jack_stat_pressed_1300[,2],
pred_high=hemicellulose_jack_stat_pressed_1300[,3],
Measured=meta(pressed_1300_spec_all_test)$hemicellulose,
ncomp=ncomp_hemicellulose_pressed_1300,
Project=meta(pressed_1300_spec_all_test)$Project,
Species=meta(pressed_1300_spec_all_test)$Species,
GrowthForm=meta(pressed_1300_spec_all_test)$GrowthForm,
Discoloration=meta(pressed_1300_spec_all_test)$Discoloration,
NDVI=meta(pressed_1300_spec_all_test)$NDVI,
deg_ind=meta(pressed_1300_spec_all_test)$deg_ind,
ID=meta(pressed_1300_spec_all_test)$ID)
cellulose_jack_pred_pressed_1300<-apply.coefs(cellulose_jack_coefs_pressed_1300,as.matrix(pressed_1300_spec_all_test))
cellulose_jack_stat_pressed_1300<-t(apply(cellulose_jack_pred_pressed_1300,1,function(obs) c(mean(obs),quantile(obs,probs=c(0.025,0.975)))))
cellulose_jack_df_pressed_1300<-data.frame(pred_mean=cellulose_jack_stat_pressed_1300[,1],
pred_low=cellulose_jack_stat_pressed_1300[,2],
pred_high=cellulose_jack_stat_pressed_1300[,3],
Measured=meta(pressed_1300_spec_all_test)$cellulose,
ncomp=ncomp_cellulose_pressed_1300,
Project=meta(pressed_1300_spec_all_test)$Project,
Species=meta(pressed_1300_spec_all_test)$Species,
GrowthForm=meta(pressed_1300_spec_all_test)$GrowthForm,
Discoloration=meta(pressed_1300_spec_all_test)$Discoloration,
NDVI=meta(pressed_1300_spec_all_test)$NDVI,
deg_ind=meta(pressed_1300_spec_all_test)$deg_ind,
ID=meta(pressed_1300_spec_all_test)$ID)
lignin_jack_pred_pressed_1300<-apply.coefs(lignin_jack_coefs_pressed_1300,as.matrix(pressed_1300_spec_all_test))
lignin_jack_stat_pressed_1300<-t(apply(lignin_jack_pred_pressed_1300,1,function(obs) c(mean(obs),quantile(obs,probs=c(0.025,0.975)))))
lignin_jack_df_pressed_1300<-data.frame(pred_mean=lignin_jack_stat_pressed_1300[,1],
pred_low=lignin_jack_stat_pressed_1300[,2],
pred_high=lignin_jack_stat_pressed_1300[,3],
Measured=meta(pressed_1300_spec_all_test)$lignin,
ncomp=ncomp_lignin_pressed_1300,
Project=meta(pressed_1300_spec_all_test)$Project,
Species=meta(pressed_1300_spec_all_test)$Species,
GrowthForm=meta(pressed_1300_spec_all_test)$GrowthForm,
Discoloration=meta(pressed_1300_spec_all_test)$Discoloration,
NDVI=meta(pressed_1300_spec_all_test)$NDVI,
deg_ind=meta(pressed_1300_spec_all_test)$deg_ind,
ID=meta(pressed_1300_spec_all_test)$ID)
perC_jack_pred_pressed_1300<-apply.coefs(perC_jack_coefs_pressed_1300,as.matrix(pressed_1300_spec_all_test))
perC_jack_stat_pressed_1300<-t(apply(perC_jack_pred_pressed_1300,1,function(obs) c(mean(obs),quantile(obs,probs=c(0.025,0.975)))))
perC_jack_df_pressed_1300<-data.frame(pred_mean=perC_jack_stat_pressed_1300[,1],
pred_low=perC_jack_stat_pressed_1300[,2],
pred_high=perC_jack_stat_pressed_1300[,3],
Measured=meta(pressed_1300_spec_all_test)$C,
ncomp=ncomp_perC_pressed_1300,
Project=meta(pressed_1300_spec_all_test)$Project,
Species=meta(pressed_1300_spec_all_test)$Species,
GrowthForm=meta(pressed_1300_spec_all_test)$GrowthForm,
Discoloration=meta(pressed_1300_spec_all_test)$Discoloration,
NDVI=meta(pressed_1300_spec_all_test)$NDVI,
deg_ind=meta(pressed_1300_spec_all_test)$deg_ind,
ID=meta(pressed_1300_spec_all_test)$ID)
perN_jack_pred_pressed_1300<-apply.coefs(perN_jack_coefs_pressed_1300,as.matrix(pressed_1300_spec_all_test))
perN_jack_stat_pressed_1300<-t(apply(perN_jack_pred_pressed_1300,1,function(obs) c(mean(obs),quantile(obs,probs=c(0.025,0.975)))))
perN_jack_df_pressed_1300<-data.frame(pred_mean=perN_jack_stat_pressed_1300[,1],
pred_low=perN_jack_stat_pressed_1300[,2],
pred_high=perN_jack_stat_pressed_1300[,3],
Measured=meta(pressed_1300_spec_all_test)$N,
ncomp=ncomp_perN_pressed_1300,
Project=meta(pressed_1300_spec_all_test)$Project,
Species=meta(pressed_1300_spec_all_test)$Species,
GrowthForm=meta(pressed_1300_spec_all_test)$GrowthForm,
Discoloration=meta(pressed_1300_spec_all_test)$Discoloration,
NDVI=meta(pressed_1300_spec_all_test)$NDVI,
deg_ind=meta(pressed_1300_spec_all_test)$deg_ind,
ID=meta(pressed_1300_spec_all_test)$ID)
perN_pressed_1300_val_plot<-ggplot(perN_jack_df_pressed_1300,
aes(y=Measured,x=pred_mean,color=GrowthForm))+
theme_bw()+
geom_errorbarh(aes(y=Measured,xmin=pred_low,xmax=pred_high),
color="darkslategrey",alpha=0.7)+
geom_point(size=2)+
geom_smooth(method="lm",se=F)+
geom_abline(slope=1,intercept=0,linetype="dashed",size=2)+
coord_cartesian(xlim=c(perN_lower,perN_upper),ylim=c(perN_lower,perN_upper))+
theme(text = element_text(size=20),
legend.position = c(0.8, 0.25))+
labs(y=expression("Measured N"[mass]*" (%)"),x=expression("Predicted N"[mass]*" (%)"))+
guides(color=F)
LMA_jack_pred_pressed_1300<-apply.coefs(LMA_jack_coefs_pressed_1300,as.matrix(pressed_1300_spec_all_test))
LMA_jack_stat_pressed_1300<-t(apply(LMA_jack_pred_pressed_1300,1,function(obs) c(mean(obs),quantile(obs,probs=c(0.025,0.975)))))
LMA_jack_df_pressed_1300<-data.frame(pred_mean=LMA_jack_stat_pressed_1300[,1],
pred_low=LMA_jack_stat_pressed_1300[,2],
pred_high=LMA_jack_stat_pressed_1300[,3],
Measured=meta(pressed_1300_spec_all_test)$LMA,
ncomp=ncomp_LMA_pressed_1300,
Project=meta(pressed_1300_spec_all_test)$Project,
Species=meta(pressed_1300_spec_all_test)$Species,
GrowthForm=meta(pressed_1300_spec_all_test)$GrowthForm,
Discoloration=meta(pressed_1300_spec_all_test)$Discoloration,
NDVI=meta(pressed_1300_spec_all_test)$NDVI,
deg_ind=meta(pressed_1300_spec_all_test)$deg_ind,
ID=meta(pressed_1300_spec_all_test)$ID)
LDMC_jack_pred_pressed_1300<-apply.coefs(LDMC_jack_coefs_pressed_1300,as.matrix(pressed_1300_spec_all_test))
LDMC_jack_stat_pressed_1300<-t(apply(LDMC_jack_pred_pressed_1300,1,function(obs) c(mean(obs),quantile(obs,probs=c(0.025,0.975)))))
LDMC_jack_df_pressed_1300<-data.frame(pred_mean=LDMC_jack_stat_pressed_1300[,1],
pred_low=LDMC_jack_stat_pressed_1300[,2],
pred_high=LDMC_jack_stat_pressed_1300[,3],
Measured=meta(pressed_1300_spec_all_test)$LDMC,
ncomp=ncomp_LDMC_pressed_1300,
Project=meta(pressed_1300_spec_all_test)$Project,
Species=meta(pressed_1300_spec_all_test)$Species,
GrowthForm=meta(pressed_1300_spec_all_test)$GrowthForm,
Discoloration=meta(pressed_1300_spec_all_test)$Discoloration,
NDVI=meta(pressed_1300_spec_all_test)$NDVI,
deg_ind=meta(pressed_1300_spec_all_test)$deg_ind,
ID=meta(pressed_1300_spec_all_test)$ID)
EWT_jack_pred_pressed_1300<-apply.coefs(EWT_jack_coefs_pressed_1300,as.matrix(pressed_1300_spec_all_test))
EWT_jack_stat_pressed_1300<-t(apply(EWT_jack_pred_pressed_1300,1,function(obs) c(mean(obs),quantile(obs,probs=c(0.025,0.975)))))
EWT_jack_df_pressed_1300<-data.frame(pred_mean=EWT_jack_stat_pressed_1300[,1],
pred_low=EWT_jack_stat_pressed_1300[,2],
pred_high=EWT_jack_stat_pressed_1300[,3],
Measured=meta(pressed_1300_spec_all_test)$EWT,
ncomp=ncomp_EWT_pressed_1300,
Project=meta(pressed_1300_spec_all_test)$Project,
Species=meta(pressed_1300_spec_all_test)$Species,
GrowthForm=meta(pressed_1300_spec_all_test)$GrowthForm,
Discoloration=meta(pressed_1300_spec_all_test)$Discoloration,
NDVI=meta(pressed_1300_spec_all_test)$NDVI,
deg_ind=meta(pressed_1300_spec_all_test)$deg_ind,
ID=meta(pressed_1300_spec_all_test)$ID)
chlA_jack_pred_pressed_1300<-apply.coefs(chlA_jack_coefs_pressed_1300,as.matrix(pressed_1300_spec_all_test))
chlA_jack_stat_pressed_1300<-t(apply(chlA_jack_pred_pressed_1300,1,function(obs) c(mean(obs),quantile(obs,probs=c(0.025,0.975)))))
chlA_jack_df_pressed_1300<-data.frame(pred_mean=chlA_jack_stat_pressed_1300[,1],
pred_low=chlA_jack_stat_pressed_1300[,2],
pred_high=chlA_jack_stat_pressed_1300[,3],
Measured=meta(pressed_1300_spec_all_test)$chlA,
ncomp=ncomp_chlA_pressed_1300,
Project=meta(pressed_1300_spec_all_test)$Project,
Species=meta(pressed_1300_spec_all_test)$Species,
GrowthForm=meta(pressed_1300_spec_all_test)$GrowthForm,
Discoloration=meta(pressed_1300_spec_all_test)$Discoloration,
NDVI=meta(pressed_1300_spec_all_test)$NDVI,
deg_ind=meta(pressed_1300_spec_all_test)$deg_ind,
ID=meta(pressed_1300_spec_all_test)$ID)
chlB_jack_pred_pressed_1300<-apply.coefs(chlB_jack_coefs_pressed_1300,as.matrix(pressed_1300_spec_all_test))
chlB_jack_stat_pressed_1300<-t(apply(chlB_jack_pred_pressed_1300,1,function(obs) c(mean(obs),quantile(obs,probs=c(0.025,0.975)))))
chlB_jack_df_pressed_1300<-data.frame(pred_mean=chlB_jack_stat_pressed_1300[,1],
pred_low=chlB_jack_stat_pressed_1300[,2],
pred_high=chlB_jack_stat_pressed_1300[,3],
Measured=meta(pressed_1300_spec_all_test)$chlB,
ncomp=ncomp_chlB_pressed_1300,
Project=meta(pressed_1300_spec_all_test)$Project,
Species=meta(pressed_1300_spec_all_test)$Species,
GrowthForm=meta(pressed_1300_spec_all_test)$GrowthForm,
Discoloration=meta(pressed_1300_spec_all_test)$Discoloration,
NDVI=meta(pressed_1300_spec_all_test)$NDVI,
deg_ind=meta(pressed_1300_spec_all_test)$deg_ind,
ID=meta(pressed_1300_spec_all_test)$ID)
car_jack_pred_pressed_1300<-apply.coefs(car_jack_coefs_pressed_1300,as.matrix(pressed_1300_spec_all_test))
car_jack_stat_pressed_1300<-t(apply(car_jack_pred_pressed_1300,1,function(obs) c(mean(obs),quantile(obs,probs=c(0.025,0.975)))))
car_jack_df_pressed_1300<-data.frame(pred_mean=car_jack_stat_pressed_1300[,1],
pred_low=car_jack_stat_pressed_1300[,2],
pred_high=car_jack_stat_pressed_1300[,3],
Measured=meta(pressed_1300_spec_all_test)$car,
ncomp=ncomp_car_pressed_1300,
Project=meta(pressed_1300_spec_all_test)$Project,
Species=meta(pressed_1300_spec_all_test)$Species,
GrowthForm=meta(pressed_1300_spec_all_test)$GrowthForm,
Discoloration=meta(pressed_1300_spec_all_test)$Discoloration,
NDVI=meta(pressed_1300_spec_all_test)$NDVI,
deg_ind=meta(pressed_1300_spec_all_test)$deg_ind,
ID=meta(pressed_1300_spec_all_test)$ID)