#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] )
?