2017-01-03 5 views
0

Я новичок в R и должен знать, как сохранить переменную «пол» в ее постоянном средстве, чтобы сделать прогноз после использования регрессионного анализа Пуассона по данным о посещениях врача. Это пример моих данных:Пуассон и предсказание

visits gender illness age.category 

    1 female  1   <30 
    1 female  1   <30 
    1 male  3   <30 
    1 male  1   <30 
    1 male  2   <30 
    1 female  5   <30 
    1 female  4   <30 
    1 female  3   <30 
    1 female  2   <30 
    1 male  1   <30 

Я был дан пример (см ниже), как прогнозировать цены визитов к врачу в течение двух недель для мужчин и женщин (в то время как проведение возраст и болезнь при постоянных средствах).

sex <- factor(c('female', 'male',)) 
avg.age <- mean(DoctorVisits$age) 
avg.illness <- mean(DoctorVisits$illness) 

hypothetical.person <- expand.grid(age=avg.age, 
           gender=sex, 
           illness=avg.illness) 

predict(M.dr, 
    newdata = hypothetical.person, 
    type = 'response') 

Но мне нужно, чтобы предсказать цены визитов к врачу в течение двух недель для возрастных групп (в то время как проведение секса и болезни в их постоянных средствах). Тем не менее, я не знаю, как удержать гендер в его постоянном значении. Как это обеспечить?

ответ

0

Вот как я бы создал data.frame для всех различных уровней illness в зависимости от мужчин и женщин и их средней болезни.

xy <- read.table(text = "visits gender illness age.category 
       1 female  1   <30 
       1 female  1   <30 
       1 male  3   <30 
       1 male  1   <30 
       1 male  2   <30 
       1 female  5   <30 
       1 female  4   <30 
       1 female  3   <30 
       1 female  2   <30 
       1 male  1   <30", header = TRUE) 

xy 

sex <- factor(c('female', 'male')) 
age.groups <- c("< 30", "30-50", "> 50") 
avg.illness.by.gender <- aggregate(illness ~ gender, data = xy, FUN = mean) 

out <- expand.grid(gender = sex, age = age.groups) 
out[out$gender == "female", "illness"] <- avg.illness.by.gender[avg.illness.by.gender$gender == "female", "illness"] 
out[out$gender == "male", "illness"] <- avg.illness.by.gender[avg.illness.by.gender$gender == "male", "illness"] 
out 

    gender age illness 
1 female < 30 2.666667 
2 male < 30 1.750000 
3 female 30-50 2.666667 
4 male 30-50 1.750000 
5 female > 50 2.666667 
6 male > 50 1.750000 
+0

Благодарим за помощь. Однако, я думаю, вы неправильно поняли мой вопрос. Я хочу узнать скорость каждой возрастной группы (<30, 30-50, > 50) посетить врачи (отсюда и то, почему я не включал возрастную переменную). Меня здесь не интересуют гендерные различия. Не могли бы вы пролить свет на это? –

+0

@SarahHarding Я переделал свой ответ. Посмотрите, подходит ли это вашим потребностям. –

Смежные вопросы