【发布时间】:2019-10-02 11:39:34
【问题描述】:
我不想将预测变量指定为回归参数,而是只传递一个字符串并将其更改为正确的语法,然后再将其用于惩罚回归。在Loop function to add large numbers of predictors in regression function 或How to use paste to get formula 中已经解释了如何为 lm 做到这一点,但它不适用于惩罚回归。
这是我的代码:
df<-data.frame(date=seq(as.Date("2018-01-01"), as.Date("2018-10-01"), by="days"))
df$month<-format(as.Date(df$date), "%m")
df$y<-runif(nrow(df),1,100)
df$time<- -floor(nrow(df)/2):(ceiling(nrow(df)/2)-1)/1000
df$month<-as.factor(df$month)
yname<-"y"
xnames<-colnames(training)
xnames<-xnames[-which(xnames==yname)]
xnames<-xnames[-which(xnames=="date")]
yname<-paste(yname,",")
formula<-paste(yname,"~",paste(xnames,collapse="+"))
ens<-penalized(formula, ~ 0,lambda1=1, lambda2=1, positive =TRUE, data=training)
我尝试使用 as.formula 作为公式,但它不适用于逗号。如果我手动输入变量名并且它适用于 lm 但不适用于受到惩罚,这一切都可以正常工作。有什么想法吗?
请注意,我已对问题进行了编辑,以使其更具体地用于惩罚。
【问题讨论】:
标签: r regression paste