Рассчет простой статистики
-
- Интересующийся
- Сообщения: 48
- Зарегистрирован: 20 ноя 2007, 22:17
- Репутация: 16
- Откуда: Mсква
Рассчет простой статистики
Уважаемые коллеги !
Не подскажете ли как реализовать следующую задачу в R
есть файл данных (.csv) - сезонные значения NDVI для набора тестовых полигонов . Формат следующий:
NDVI1 NDVI2 NDVI3 NDVI4 NDVI5 ID
8217 8571 8485 8706 8464 65
8153 8498 8578 8808 8542 65
8179 8508 8578 8810 8468 65
8390 8759 8686 8947 8635 65
8390 8759 8686 8947 8635 66
8339 8664 8648 8847 8622 66
8339 8664 8648 8847 8622 66
8255 8581 8590 8283 8596 66
NDVI1- значения индекса (*1000) за определенный период, ID - номер полигона , всего 150 , а (всего записей порядка 15000)
Нужно:
1) для каждого полигона посчитать статистику сезонного изменения значения индекса : среднее и станд.откл. (напр для NDVI1 для ID = 65 и т.д.)
Не подскажете ли как реализовать следующую задачу в R
есть файл данных (.csv) - сезонные значения NDVI для набора тестовых полигонов . Формат следующий:
NDVI1 NDVI2 NDVI3 NDVI4 NDVI5 ID
8217 8571 8485 8706 8464 65
8153 8498 8578 8808 8542 65
8179 8508 8578 8810 8468 65
8390 8759 8686 8947 8635 65
8390 8759 8686 8947 8635 66
8339 8664 8648 8847 8622 66
8339 8664 8648 8847 8622 66
8255 8581 8590 8283 8596 66
NDVI1- значения индекса (*1000) за определенный период, ID - номер полигона , всего 150 , а (всего записей порядка 15000)
Нужно:
1) для каждого полигона посчитать статистику сезонного изменения значения индекса : среднее и станд.откл. (напр для NDVI1 для ID = 65 и т.д.)
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Рассчет простой статистики
никак не могу понять, почему одному полигону ID=65 соответствует несколько записей, он составной чтоли? из нескольких частей? Тогда неNDVI1 NDVI2 NDVI3 NDVI4 NDVI5 ID
8217 8571 8485 8706 8464 65
8153 8498 8578 8808 8542 65
а ID - класс, категория и т.п., так? и считать надо не для полигонов, а для классов?ID - номер полигона
пристегивайтесь, турбулентность прямо по курсу
-
- Интересующийся
- Сообщения: 48
- Зарегистрирован: 20 ноя 2007, 22:17
- Репутация: 16
- Откуда: Mсква
Re: Рассчет простой статистики в R
Для каждого полигона имеется несколько значений NDVI (точки внутри полигона) -т.е. это можно назвать классом (в данном примере 2 класса - 65,66)
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Рассчет простой статистики
А, так это точки были, понял. В общем считается просто, буквально одной командой, следующим образом:
Команде aggregate задается список уникальных идентификаторов, который также берется из самих данных, кстати это причина, почему результат имеет в конце колонку ID, так как при этом из анализируемых данных она не удаляется, можно сделать изящнее, вот так, ограничив то, что считается первыми 5 столбцами, результат будет тот же, но от лишнего столбца в конце избавимся:
По-моему очень круто
Код: Выделить всё
data = read.table("c:\\temp\\test.csv",header=T,sep=" ")
aggregate(data,list(ID = data$ID),sum)
Код: Выделить всё
aggregate(data[1:5],list(ID = data$ID),sum)
- Вложения
-
- test.csv
- (264 байт) 1188 скачиваний
пристегивайтесь, турбулентность прямо по курсу
-
- Интересующийся
- Сообщения: 48
- Зарегистрирован: 20 ноя 2007, 22:17
- Репутация: 16
- Откуда: Mсква
Re: Рассчет простой статистики
Ага , спасибо - проверил работает)
Но по ходу, возникла еще одна проблема: нужно убрать значения меньше определенной величины (например все меньше 8200)
Но по ходу, возникла еще одна проблема: нужно убрать значения меньше определенной величины (например все меньше 8200)
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Рассчет простой статистики
в два шага, очень просто
1. сначала создать матрицу, где все меньшие значения будут FALSE, а большие TRUE
результат такой
2. обнулить, все что False
результат
1. сначала создать матрицу, где все меньшие значения будут FALSE, а большие TRUE
Код: Выделить всё
acase = data < 8200
Код: Выделить всё
NDVI1 NDVI2 NDVI3 NDVI4 NDVI5 ID
[1,] FALSE FALSE FALSE FALSE FALSE TRUE
[2,] TRUE FALSE FALSE FALSE FALSE TRUE
[3,] TRUE FALSE FALSE FALSE FALSE TRUE
[4,] FALSE FALSE FALSE FALSE FALSE TRUE
[5,] FALSE FALSE FALSE FALSE FALSE TRUE
[6,] FALSE FALSE FALSE FALSE FALSE TRUE
[7,] FALSE FALSE FALSE FALSE FALSE TRUE
[8,] FALSE FALSE FALSE FALSE FALSE TRUE
Код: Выделить всё
acase*data
Код: Выделить всё
NDVI1 NDVI2 NDVI3 NDVI4 NDVI5 ID
1 0 0 0 0 0 65
2 8153 0 0 0 0 65
3 8179 0 0 0 0 65
4 0 0 0 0 0 65
5 0 0 0 0 0 66
6 0 0 0 0 0 66
7 0 0 0 0 0 66
8 0 0 0 0 0 66
пристегивайтесь, турбулентность прямо по курсу
-
- Интересующийся
- Сообщения: 48
- Зарегистрирован: 20 ноя 2007, 22:17
- Репутация: 16
- Откуда: Mсква
Re: Рассчет простой статистики
Спасибо!
-
- Интересующийся
- Сообщения: 48
- Зарегистрирован: 20 ноя 2007, 22:17
- Репутация: 16
- Откуда: Mсква
Re: Рассчет простой статистики
нашел как еще проще)
data[data > 8000]<-NA
data[data > 8000]<-NA
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Рассчет простой статистики
чистый восторг! спасибо
пристегивайтесь, турбулентность прямо по курсу
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей