R 如何从“惩罚”包导出Penized回归模型的所有系数?需要它们来报告滚动回归估计

R 如何从“惩罚”包导出Penized回归模型的所有系数?需要它们来报告滚动回归估计,r,regression,linear-regression,R,Regression,Linear Regression,我已经能够用一些约束到正区域的系数来运行回归,但是我在面临问题的地方做了很多滚动回归。以下是我的示例代码: library(penalized) set.seed(1) x1=rnorm(100)*10 x2=rnorm(100)*10 x3=rnorm(100)*10 y=sin(x1)+cos(x2)-x3+rnorm(100) data <- data.frame(y, x1, x2, x3) win <- 10 coefs <- matrix(NA, ncol=4

我已经能够用一些约束到正区域的系数来运行回归,但是我在面临问题的地方做了很多滚动回归。以下是我的示例代码:

library(penalized)
set.seed(1)
x1=rnorm(100)*10
x2=rnorm(100)*10
x3=rnorm(100)*10
y=sin(x1)+cos(x2)-x3+rnorm(100)

data <- data.frame(y, x1, x2, x3)

win <- 10

coefs <- matrix(NA, ncol=4, nrow=length(y))

for(i in 1:(length(y)-win)) {
  d <- data[(1+i):(win+i),]
  p <- win+i
  # Linear Regression
  coefs[p,] <- as.vector(coef(penalized(y, ~ x1 + x2 + x3, ~1, 
                                      lambda1=0, lambda2=0, positive = c(F, F, T), data=data)))}
库(受处罚)
种子(1)
x1=rnorm(100)*10
x2=rnorm(100)*10
x3=rnorm(100)*10
y=sin(x1)+cos(x2)-x3+rnorm(100)

数据也许您不知道“penfit”对象的
coef
参数。看看:

getMethod(coef, "penfit")

#function (object, ...) 
#{
#    .local <- function (object, which = c("nonzero", "all", "penalized", 
#        "unpenalized"), standardize = FALSE) 
#    {
#        coefficients(object, which, standardize)
#    }
#    .local(object, ...)
#}
#<environment: namespace:penalized>

实际上,我希望看到那些0个COEF,因为现在我不知道什么COEF属于什么变量。我将要做一些时间序列分析,所以从这些时间序列中构建y将是相当困难的。我试图重现普通线性模型的例子就是使用它并试图模仿它。所以不能故意说,只是模仿例子而已。唯一不同的是,它们从根本上限制了一些系数为正。太好了,这正是我想要的。谢谢!矩阵维度在我的真实数据中保持不变,现在已更正。
getMethod(coef, "penfit")

#function (object, ...) 
#{
#    .local <- function (object, which = c("nonzero", "all", "penalized", 
#        "unpenalized"), standardize = FALSE) 
#    {
#        coefficients(object, which, standardize)
#    }
#    .local(object, ...)
#}
#<environment: namespace:penalized>
library(penalized)
set.seed(1)
x1 = rnorm(100)*10
x2 = rnorm(100)*10
x3 = rnorm(100)*10
y = sin(x1) + cos(x2) - x3 + rnorm(100)

data <- data.frame(y, x1, x2, x3)

win <- 10

coefs <- matrix(NA, ncol=4, nrow=length(y))

for(i in 1:(length(y)-win)) {
  d <- data[(1+i):(win+i),]
  p <- win + i
  pen <- penalized(y, ~ x1 + x2 + x3, ~1, lambda1 = 0, lambda2 = 0,
                   positive = c(F, F, T), data = data)
  beta <- coef(pen, which = "all")
  coefs[p,] <- unname(beta)
  }