Извлечение коэффициентов регрессии из выходных данных в r

#r #loops #glm #survey

#r #циклы #glm #опрос

Вопрос:

У меня есть следующие данные и схема опроса:

 province <-
  read.table( text =
                "id str clu wt ue91 meanz hou85 diffhou85 smplrat
        1 1 1 4 4123 2867 26881 -24014 .25
        2 1 4 4 760 2867 4896 -2029 .25
        3 1 5 4 721 2867 3730 -863 .25
        4 1 15 4 142 2867 556 2311 .25
        5 1 18 4 187 2867 1463 1404 .25
        6 1 26 4 331 2867 1946 921 .25
        7 1 30 4 127 2867 834 2033 .25
        8 1 31 4 219 2867 932 1935 .25" ,
              header = TRUE
  )
require(survey)
province.design <-
  svydesign(
    id = ~clu ,
    strata = ~str ,
    data = province ,
    weights = ~wt ,
    
  )

> head(province.design[[7]])
  id str clu wt ue91 meanz hou85 diffhou85 smplrat
1  1   1   1  4 4123  2867 26881    -24014    0.25
2  2   1   4  4  760  2867  4896     -2029    0.25
3  3   1   5  4  721  2867  3730      -863    0.25
 

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

 coef_reg=sapply(c(6:(ncol(province.design[[7]]))), function(i) 
  
{
  svyglm(ue91 ~ province.design[[7]][i], province.design)$coefficients[2];
  
  
  
}
)
 

Но это не работает. Кто-нибудь может помочь мне разобраться в этом?

Это ошибка, которую я получаю:

 Error in svyglm.survey.design(ue91 ~ province.design[[7]][i], province.design) : 
  all variables must be in design= argument 
 

Спасибо за вашу помощь.

Комментарии:

1. Что именно означает «не работает» в этом случае? Вы получаете сообщение об ошибке? Если да, то что это говорит?

2. @MrFlick Спасибо за ответ. Я обновил вопрос с ошибкой

3. Похоже, что переменных, к которым вы обращаетесь через функцию (i), недостаточно для вычисления коэффициентов… верно? Вам не хватает параметра в svydesign ?

4. @Ben Я не уверен в этом. Похоже, что зацикливание на svydesign не может быть выполнено очень легко.

5. что-то вроде sapply( names( province )[seq( 6 , ncol( province ) ) ] , function( i ) svyglm( as.formula( paste( 'ue91 ~' , i ) ) , province.design )$coefficients[2] ) ?