Я пытаюсь реализовать следующий статистический тест с использованием симуляции Монте-Карло. Этот метод основан на следующей статье:
https://journals.ametsoc.org/doi/full/10.1175/JCLI4217.1
Детали:
В вышеприведенном документе вычисляется значимость разницы в средних значениях между двумя периодами: 1961-1983 и 1984-2000 гг. Частоты прохождения тропического циклона (не нормально распределенного) с использованием моделирования Монте-Карло.
Это должен быть двусторонний тест.
Были предоставлены следующие шаги:
1). Сначала подготовлено 9999 случайно отсортированных 40-летних временных рядов частоты прохождения тайфуна.
2). Рассчитаны средние значения первых 23-летних (1961-1983) минус средние значения последних 17-летних.
3). По рангу исходного значения разности среди 10000 выборок оценивается уровень значимости.
Вот что у меня пока есть
Предположим, у меня есть следующий набор данных. Столбцы показывают количество в год, в то время как строки предназначены для латинских координат (здесь цифры приведены для простоты).
A<-matrix(floor(runif(100,min=0,max=20)),nrow=5,ncol=40)
colnames(A)<-c("X1961","X1962","X1963","X1964","X1965","X1966","X1967","X1968","X1969","X1970","X1971","X1972","X1973","X1974","X1975","X1976","X1977","X1978","X1979","X1980","X1981","X1982","X1983","X1984","X1985","X1986","X1987","X1988","X1989","X1990","X1991","X1992","X1993","X1994","X1995","X1996","X1997","X1998","X1999","X2000")
set.seed(1)
rand <- sample(nrow(A),9999,replace=TRUE)
A[rand,]
Проблема (обновлена)
Я не совсем понимаю, как правильно сделать это в R. Я должен выполнять тест Монте-Карло на ряд. Делаем это в один ряд:
A[rand[1],]
X1961 X1962 X1963 X1964 X1965 X1966 X1967 X1968 X1969 X1970 X1971 X1972
X1973
5 14 11 17 16 17 11 2 8 3 13 10
1
X1974 X1975 X1976 X1977 X1978 X1979 X1980 X1981 X1982 X1983 X1984 X1985
X1986
10 15 5 3 6 15 19 5 14 11 17 16
17
X1987 X1988 X1989 X1990 X1991 X1992 X1993 X1994 X1995 X1996 X1997 X1998
X1999
11 2 8 3 13 10 1 10 15 5 3 6
15
X2000
19
оригинал:
A[1,]
X1961 X1962 X1963 X1964 X1965 X1966 X1967 X1968 X1969 X1970 X1971 X1972
X1973
18 1 6 7 3 12 19 0 17 17 0 10
16
X1974 X1975 X1976 X1977 X1978 X1979 X1980 X1981 X1982 X1983 X1984 X1985
X1986
3 4 0 15 8 17 1 18 1 6 7 3
12
X1987 X1988 X1989 X1990 X1991 X1992 X1993 X1994 X1995 X1996 X1997 X1998
X1999
19 0 17 17 0 10 16 3 4 0 15 8
17
X2000
1
Ожидаемый результат *
Я хочу добавить столбец pvalue в исходную матрицу для этого теста. Тест значимости должен быть сделан за ряд. Конечно, этого можно добиться с помощью функции apply ().
Проблемы
Как я могу реализовать третье условие?
Кроме того, имеет ли значение порядок для шага 1 в тесте Монте-Карло?
Мне кажется, что я неправильно интерпретирую шаг 1, должен ли я использовать replicate () для этого? Как то так?
rand<-replicate(40,sample(nrow(A),9999,replace=T))
Есть предложения, как это правильно сделать?
Буду признателен за любую помощь по этому поводу.