Я хотел бы сравнить спектр излучения с эталонным спектром.Я думаю, что подходящим способом оценки их сходства может быть расчет коэффициента Пирсона или Спирмена.Я не совсем уверен, какой коэффициент больше подходит.С одной стороны, коэффициент Пирсона скорее используется для линейных данных, что не относится к моим наборам данных.С другой стороны, коэффициент Спирмена подходит, когда у нас есть порядковые данные.
Здесь вы можете увидеть мой код для расчета коэффициента Пирсона.Я сгенерировал два фиктивных набора данных, чтобы проиллюстрировать ситуацию.
x = 250:262
y = c(809,834,477,478,307,122,96,102,324,476,540,629,670)
data = cbind(x,y)
y2 = c(805,820,480,475,307,101,94,110,324,480,539,634,657)
ref = cbind(x,y2)
plot(data, col="red")
lines(data, col ="red")
plot(ref, col="blue")
lines(ref, col="blue")
cor.test(data, ref, method = "pearson")
Есть ли у вас другие предложения, как количественно оценить сходство кривых?Использование функции отображения спектрального угла может быть возможным решением.
Чтобы реализовать функцию отображения спектральных углов, я нашел этот фрагмент кода.
library(RStoolbox)
library(raster)
library(ggplot2)
View(lsat)
## Sample endmember spectra
## First location is water, second is open agricultural vegetation
pts <- data.frame(x = c(624720, 627480), y = c(-414690, -411090))
endmembers <- extract(lsat, pts)
rownames(endmembers) <- c("water", "vegetation")
## Calculate spectral angles
lsat_sam <- sam(lsat, endmembers, angles = TRUE)
plot(lsat_sam)
## Classify based on minimum angle
lsat_sam <- sam(lsat, endmembers, angles = FALSE)
ggR(lsat_sam, forceCat = TRUE, geom_raster=TRUE) +
scale_fill_manual(values = c("blue", "green"), labels = c("water", "vegetation"))
Входом для функции sam является изображение.Затем, насколько я понимаю, вы определяете, из каких пикселей вы хотите извлечь информацию.Можно ли напрямую ввести спектры излучения, которые вы хотите сравнить?