Как преобразовать значения квартилей на графике с усами в порядковую шкалу, чтобы их можно было использовать в качестве зависимой переменной в порядковой логистической регрессии?

Моей зависимой переменной является частота встречаемости выдры, которую я нанес на график с усами. Мой профессор предложил мне преобразовать это в порядковые значения для использования в порядковой регрессии вместе с параметрами среды обитания в качестве независимых переменных. Я делаю все анализы в R. Любая помощь будет высоко оценена.


person Sayanti    schedule 26.10.2020    source источник


Ответы (2)


Чтобы преобразовать значения квартиля как порядковую переменную, вам необходимо преобразовать значения как факторы с уровнями факторов в последовательном порядке.

Вот пример:

library(tidyverse) # to use the functions below

df <- data.frame(
  otter_encounter = 1:100, # original dependent variable
  habitat_1 = rnorm(100), # independent variable 1
  habitat_2 = rnorm(100) # independent variable 2
) %>% 
  mutate(encounter_quartile = factor(ntile(otter_encounter, 4), levels = 1:4)) # your ordinal quartile values

ntile() — это функция, которая может создавать квартили. Если у вас уже есть столбец квартиля во фрейме данных, вы можете заменить код ntile(...) именем столбца квартиля.
Назовите четыре значения квартиля в порядке ранжирования для levels из factor().

Вы можете запустить порядковую логистическую регрессию, начиная с polr():

library(MASS)

m <- polr(encounter_quartile ~ habitat_1 + habitat_2, data = df, Hess=TRUE) 
summary(m)

где m — ваша формула регрессии.

Вам понадобится больше, чтобы завершить анализ, но это не ваш вопрос, поэтому я его опускаю.
Учебник R по порядковой логистической регрессии см. на https://stats.idre.ucla.edu/r/dae/ordinal-logistic-regression/.

person LC-datascientist    schedule 26.10.2020

Что-то вроде этого, что вы после?

df <- tibble(num = 1:10)


df %>% 
  mutate(num_ordinal = case_when(
    num > 7 ~ "high",
    num <= 7 & num > 5 ~ "med",
    num <= 5 ~ "small"
    ) %>% as.factor()
  ) 

выход

# A tibble: 10 x 2
     num num_ordinal
   <int> <fct>      
 1     1 small      
 2     2 small      
 3     3 small      
 4     4 small      
 5     5 small      
 6     6 med        
 7     7 med        
 8     8 high       
 9     9 high       
10    10 high  
person Moh    schedule 26.10.2020