Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 当存在权重时,glmnet如何标准化变量?_R_Machine Learning_Glmnet - Fatal编程技术网

R 当存在权重时,glmnet如何标准化变量?

R 当存在权重时,glmnet如何标准化变量?,r,machine-learning,glmnet,R,Machine Learning,Glmnet,glmnet允许用户通过权重参数输入观测权重向量。glmnet还标准化(默认情况下)预测变量,使其具有零均值和单位方差。我的问题是:当提供权重时,glmnet是否使用每列的加权平均值(和标准偏差)或未加权平均值(和标准偏差)对预测值进行标准化?关于glmnet的标准化描述如下: 在本文中,您可以看到计算标准化的glmnet源代码的Fortran代码片段。(“证明”一段,第二个项目符号) 我不熟悉Fortran,但对我来说,它看起来很像是在使用加权平均值和sd 编辑:从glmnet渐晕图: “we

glmnet允许用户通过
权重
参数输入观测权重向量。glmnet还标准化(默认情况下)预测变量,使其具有零均值和单位方差。我的问题是:当提供
权重时,glmnet是否使用每列的加权平均值(和标准偏差)或未加权平均值(和标准偏差)对预测值进行标准化?

关于
glmnet
的标准化描述如下:

在本文中,您可以看到计算标准化的glmnet源代码的Fortran代码片段。(“证明”一段,第二个项目符号)

我不熟悉Fortran,但对我来说,它看起来很像是在使用加权平均值和sd

编辑:从glmnet渐晕图:

weights
用于观察权重。每个权重的默认值为1 观察。(注:glmnet将权重重新调整为N,即 样本量。)”


Fortran代码中的
w
是重标权重,这似乎与加权平均标准化一致。

在本文中,您可以看到计算标准化的glmnet源代码的Fortran代码片段。(“证明”一段,第二个项目符号)

我不熟悉Fortran,但对我来说,它看起来很像是在使用加权平均值和sd

编辑:从glmnet渐晕图:

weights
用于观察权重。每个权重的默认值为1 观察。(注:glmnet将权重重新调整为N,即 样本量。)”


Fortran代码中的
w
是重定标权重,这似乎与加权平均值标准化一致。

就其价值而言,与公认的答案一致,
glmnet
中的权重是抽样权重,而不是逆方差权重。例如,如果观测值比唯一观测值多得多,则可以压缩数据集并获得相同的系数估计值:

n <- 50
m <- 5

y_norm <- rnorm(n)
y_bool <- rbinom(n,1,.5)
x <- matrix(rnorm(n*m),n)
w <- rpois(n,3) + 1 # weights
w_indx <- rep(1:n,times=w) # weights index

m1 = glmnet(x, y_norm, weights = w)
m2 = glmnet(x[w_indx,] ,y_norm[w_indx])
all.equal(coef(m1,s=.1),
          coef(m2,s=.1))
>>> TRUE

M1 = glmnet(x,y_bool,weights = w,family = "binomial")
M2 = glmnet(x[w_indx,],y_bool[w_indx],family = "binomial")
all.equal(coef(M1,s=.1),
          coef(M2,s=.1))
>>> TRUE

n对于它的价值,与公认的答案一致,
glmnet
中的权重是抽样权重,而不是逆方差权重。例如,如果观测值比唯一观测值多得多,则可以压缩数据集并获得相同的系数估计值:

n <- 50
m <- 5

y_norm <- rnorm(n)
y_bool <- rbinom(n,1,.5)
x <- matrix(rnorm(n*m),n)
w <- rpois(n,3) + 1 # weights
w_indx <- rep(1:n,times=w) # weights index

m1 = glmnet(x, y_norm, weights = w)
m2 = glmnet(x[w_indx,] ,y_norm[w_indx])
all.equal(coef(m1,s=.1),
          coef(m2,s=.1))
>>> TRUE

M1 = glmnet(x,y_bool,weights = w,family = "binomial")
M2 = glmnet(x[w_indx,],y_bool[w_indx],family = "binomial")
all.equal(coef(M1,s=.1),
          coef(M2,s=.1))
>>> TRUE
n