将函数应用于 R 数据帧的每个分位数
Applying a function to each quantile of an R dataframe
我有一个 R 数据框,我想为其每个分位数应用估计函数。这是 lm()
:
的示例
df <- data.frame(Y = sample(100), X1 = sample(100), X2 = sample(100))
estFun <- function(df){lm(Y ~ X1 + X2, data = df)}
如果我将它分成中位数两侧的两个子集,我可以用两条线来管理:
fitsLo <- estFun(df[df$Y < median(df$Y),])
fitsHi <- estFun(df[df$Y > median(df$Y),])
但是,我想找到一个更通用的解决方案,我可以任意选择分位数的数量,也许 lapply()
形成一个拟合列表。
您可以将 findInterval
与 by
结合使用;
by(df,findInterval(df$Y,quantile(df$Y,c(0.25,0.5,0.75))),estFun)
尝试
df$grp <- with(df, cut(Y, breaks=quantile(Y)))
by(df, df$grp, FUN=estFun)
我有一个 R 数据框,我想为其每个分位数应用估计函数。这是 lm()
:
df <- data.frame(Y = sample(100), X1 = sample(100), X2 = sample(100))
estFun <- function(df){lm(Y ~ X1 + X2, data = df)}
如果我将它分成中位数两侧的两个子集,我可以用两条线来管理:
fitsLo <- estFun(df[df$Y < median(df$Y),])
fitsHi <- estFun(df[df$Y > median(df$Y),])
但是,我想找到一个更通用的解决方案,我可以任意选择分位数的数量,也许 lapply()
形成一个拟合列表。
您可以将 findInterval
与 by
结合使用;
by(df,findInterval(df$Y,quantile(df$Y,c(0.25,0.5,0.75))),estFun)
尝试
df$grp <- with(df, cut(Y, breaks=quantile(Y)))
by(df, df$grp, FUN=estFun)