Как экспортировать индекс точек останова в вектор из пакета strucchange? - PullRequest
1 голос
/ 01 декабря 2011

Я использую пакет strucchange , чтобы определить, где мои сегменты модели кривой.

Мой код выглядит так:

l.fit <- loess(data$y~data$x)
px <- predict(l.fit,newdata=data$x)
bp <- breakpoints(px~1)

Теперь вывод bp:

Optimal 6-segment partition: 

Call:
breakpoints.formula(formula = px ~ 1)

Breakpoints at observation number:
161 254 347 440 533 

Corresponding to breakdates:
0.2571885 0.4057508 0.5543131 0.7028754 0.8514377 

Брейкдаты отчасти бесполезны, так как моя шкала х идет от 1 до 700 или около того. Но сами точки останова - это именно то, чего я хочу, особенно последняя, ​​533.

Если я наберу:

bp[1]

Я получаю:

$breakpoints
[1] 161 254 347 440 533

но если я попытаюсь присвоить bp[1] новому вектору, я ничего не получу. Можно ли в любом случае изолировать последнюю точку останова, т.е. 533, и назначить ее переменной, чтобы я мог построить вертикальную линию в точке останова? Мне нужно сделать это для пары сотен наборов данных, поэтому возможность изолировать точки останова была бы действительно полезной.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 01 декабря 2011

[ извлечение не опускается до самой простой формы, поэтому оно остается списком. Вместо этого используйте извлечение [[ или $, чтобы получить числовой вектор.

bps <- bp[[1]]

или

bps <- bp$breakpoints

Чтобы получить последний, вам нужно либо посчитать его длину и выбрать последний, либо повернуть вспять и выбрать первый:

bps[length(bps)]

или

rev(bps)[1]
0 голосов
/ 01 декабря 2011

Я не могу сказать, настолько ли вы новичок в R, что думаете, что выполнение этого кода должно привести к выводу любой консоли:

vec <- bp[1]

Что произойдет, если вы введете сейчас:

vec

Вы должны использовать либо bp [["точки останова"]] [5], либо bp $ точки останова [5], чтобы получить последнюю точку останова.Затем вы захотите использовать его как индекс для данных $ x:

 data$x[ bp$breakpoints[5] ]

Если вы делаете это «программно», возможно, было бы безопаснее использовать версию [["quoted-name»]]доступ, так как версия $ имеет некоторые недооцененные гоча.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...