R中的%in%的作用
线性回归模型是统计学中的重要模型,它的形式一般为:
y=Xβ+z,
y = X \beta + z,
y=Xβ+z,
这里我们假设噪声序列zzz服从N(0,σ2I)N(0, \sigma^2I)N(0,σ2I).
在变量选择的相关数值模拟实验中,我们通常假设变量的系数β\betaβ是稀疏的,也就是ppp维向量β\betaβ中有很多个元素都是0.
这是我们会在setting中假设维度ppp是多少,稀疏程度kkk是多少. 比如假设 p=30,k=2,p=30, k=2,p=30,k=2, 使用sample()函数随机选择ppp维向量组中哪kkk个元素不为0:
p = 30
k=2
set.seed(1234)
nonzero = sample(p,k)
nonzero中储存了k个整数型数据,代表ppp维向量中的kkk个元素. 然后我们就可以生成β\betaβ. 假设β\betaβ的大小都为2,那么有
amplitude = 2
beta = amplitude * (1:p %in% nonzero)
> beta
[1] 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0
这样就生成了稀疏的系数向量.
其中,1:p %in% nonzero返回的是逻辑型数据,表示nonzero中的数值是否在向量(1,2,…,p)中出现. 若向量(1,2,…,p)中有跟nonzero中的数重合的,就返回“True”,若不重合则返回“False”. 举个例子:
> b = 1:5 %in% 3
> b
[1] FALSE FALSE TRUE FALSE FALSE
> class(b)
[1] "logical"
1194

被折叠的 条评论
为什么被折叠?



