Я хотел бы создать кривые накопления, в частности, метри c кривые накопления, используя начальную загрузку и циклы. Меня интересует выборка (с заменой) общего числа графиков в моем примере набора данных, начиная с 1 и заканчивая общим числом ( n = 1… max n ) , Каждый будет отбираться 1000 раз.
Я не верю, что пакет, такой как Vegan, поможет в этом, так как я не ищу кривые накопления видов, а вместо этого должен рассчитывать метрики на основе данных численности и коэффициент консервативности видов растений (поправьте меня, если я ошибаюсь!).
Мой примерный набор данных представляет собой матрицу с графиками, названиями видов растений, значениями численности и c -значениями (коэффициентами консерватизма):
https://docs.google.com/spreadsheets/d/1v-93sV4ANUXpObVbtixTo2ZQjiOKemvQ_cfubZPq9L4/edit?usp=sharing
Для каждой из 1000 итераций для каждого n -го образца мне нужно построить матрицу, которая будет содержать 1000 результатов итерации, которые имеют название вида, численность и c - оценить, а затем удалить все дубликаты видов из этого образца. Затем для каждой итерации я должен рассчитать показатели растительности. Важно, чтобы я не вычислял metri c для всей 1000 итераций, а для каждой отдельной итерации.
Я буду повторять для n + 1 до максимума n . В конце, в идеале, я буду затем вводить эти результаты в матрицу моих окончательных результатов со строками n … max n и 1000 столбцами с вычисленными метриками для каждого из этих показателей. 1000 итераций. Затем я буду усреднять по итерациям, а затем составлять кривую накопления моего желаемого показателя c из этих средних.
Код, который я считал полезным , приведен ниже, с другим примером набора данных, включая метрики, которые меня интересуют в расчете.
https://docs.google.com/spreadsheets/d/1GcH2aq3qZzgTv2YkN-uMpnShblgsuKxAPYKH_mLbbh8/edit?usp=sharing
d<-Example2
d<-data.matrix(d)
MEANC<-function(x){
mean(x, na.rm=TRUE)
}
FQI<-function(x){
mean(x, na.rm=TRUE)*sqrt(sum(!is.na(x)))
}
RICH<-function(x){
totalsprich<-sum(x)
sum(x!=0, na.rm=TRUE)
}
shannon <- function(x){
totalCov <- sum(x, na.rm=TRUE)
(sum(x / totalCov * log(x / totalCov), na.rm=TRUE)) * -1
}
#for this particular example, the only two functions (metrics) that will work will be RICH and shannon
nrep<-1000
totalQuads<-nrow(d)
bootResultSD<-data.frame(matrix(nrow=nrep, ncol=totalQuads) )
bootResultMean<-data.frame(matrix(nrow=nrep, ncol=totalQuads) )
for(j in 1:totalQuads){
for(i in 1:nrep){
bootIndex<-sample(1:totalQuads, j, replace=FALSE)
bootSample<-d[bootIndex, na.rm=TRUE, drop=FALSE]
VALUES<-apply(bootSample, 1, shannon)
bootResultSD[i, j]<-sd(VALUES, na.rm=TRUE)
bootResultMean[i, j]<-mean(VALUES, na.rm=TRUE)
}
}
VALUES
bootResultSD
bootResultMean
meanDATA <- apply(bootResultMean, 2, mean, na.rm=TRUE)
meanDATASD <- apply(bootResultSD[-1], 2, mean, na.rm=TRUE)
Проблема с тем, что я создал ранее, заключается в том, что он рассчитывает показатели для каждого графика, а не накапливает графики и повторный расчет показателей на основе каждой совокупной выборки. Вот что я придумала до сих пор, основываясь на моем коде сверху, но я не думаю, что это то, что мне нужно:
for(j in 1:totalQuads){
for(i in 1:nrep){
bootIndex<-sample(1:totalQuads, 10, replace=TRUE)
bootSample<-d[bootIndex, na.rm=TRUE, drop=FALSE]
booted<-bootSample[!duplicated(bootSample[,2]),]
bootResultSD[i, j]<-sd(booted, na.rm=TRUE)
bootResultMean[i, j]<-mean(booted, na.rm=TRUE)
}
}
Я не знаю, как пройти дальше эта точка. Заранее спасибо!