spatstat wiht R: Ошибка определения окна пространственного точечного массива

См. Изображение ниже. Это изображение создается путем преобразования фрейма данных с двумя столбцами в окно исследования (назовите его study_win) с помощью as.owin, а затем построения другого фрейма данных с двумя столбцами (назовите его study_points) поверх окна.

Понятно, что очки лежат внутри окна! Однако когда я звоню

ppp(study_points[,1],study_points[,2],win = study_window) 

там написано, что большинство моих очков отвергаются как лежащие за окном. Может кто-нибудь сказать мне, что происходит?

Спасибо!

введите описание изображения здесь


person wudanao    schedule 24.09.2015    source источник
comment
Приведите воспроизводимый пример. Я вижу по крайней мере одну точку за пределами окна на графике, и может быть больше точек, которые вообще не нанесены, учитывая пределы XY на графике.   -  person Andy W    schedule 24.09.2015
comment
Боюсь, я не могу сделать воспроизводимый пример ... это очень сложное окно, и оно определяется большим файлом csv. Их около 185, и когда я звоню в ppp, он говорит, что 180 баллов неверны и отклоняются как лежащие за окном.   -  person wudanao    schedule 24.09.2015
comment
Тогда никто ничего не может сделать, кроме как догадываться. Вы уверены, что ваше окно определено правильно и не является лицевой стороной той области, которую вы показываете на своем графике (т.е. мы видим отверстие, а не контур окна)?   -  person Andy W    schedule 24.09.2015


Ответы (2)


Сначала вы могли бы сделать шаг назад, чтобы убедиться, что объект окна study_window соответствует вашим намерениям. Вы могли бы нарисовать или распечатать этот объект отдельно. График study_window покажет (и вы также можете увидеть это на графике, который вы указали в вопросе), что граница окна представляет собой несвязанный разброс точек, а не соединенный многоугольник. Распечатка study_window показала бы, что это двоичная пиксельная маска с очень маленькой площадью, а не многоугольная область. В справке для as.owin объясняется, что когда as.owin применяется к фрейму данных, содержащему столбцы с x,y координатами, он интерпретирует их как пиксельные координаты пикселей, которые находятся внутри окна.

Итак, что случилось, так это то, что as.owin создал окно, состоящее из одного пикселя в каждом из положений (x, y) в кадре данных. Это не то, что вы хотели; координаты (x, y) должны были быть вершинами многоугольной границы.

Чтобы получить желаемое окно, сделайте что-нибудь вроде study_window <- owin(poly=df), где df - это фрейм данных с координатами (x, y) вершин.

Чтобы сделать все за один шаг, введите что-нибудь вроде mypattern <- ppp(x, y, poly=df), где x и y - векторы координат точек в окне.

person Adrian Baddeley    schedule 26.09.2015

поэтому я решил проблему, используя "owin" и указав область как многоугольник; вместо "as.owin". Понятия не имею, в чем разница между owin и as.owin, но я просто рад, что это сработало ...

person wudanao    schedule 25.09.2015
comment
Метод as.owin.dataframe используется для импорта окна в пиксельном формате. В файле справки указано, что ввод должен быть: «data.frame» ровно с двумя столбцами. Каждая строка кадра данных содержит координаты x и y пикселя, который находится внутри окна. - person Ege Rubak; 25.09.2015
comment
это именно то, что я передал as.owin - фрейм данных с двумя столбцами. Я подозреваю, что as.owin создает двоичную маску, что означает, что только пиксели, которые точно совпадают с любой из строк в фрейме данных, считаются находящимися внутри окна. Однако это только мое предположение .. - person wudanao; 25.09.2015
comment
Это то, что я пытался сказать. Когда вы передаете углы многоугольника as.owin.dataframe, они будут интерпретироваться как отдельные пиксели, которые являются частью окна, а все остальное находится за пределами окна. Если вы, например, определите углы треугольника d = data.frame(x=c(0,1,1), y=c(0,1,3)) и выполните as.owin(d), вы получите окно размером 2x4 пикселя, в котором 3 пикселя (0,0), (1,1) и (1,3) находятся внутри окна, а 5 пикселей (0,1) , (0,2), (0,3), (1,0) и (1,2) находятся за окном. - person Ege Rubak; 26.09.2015