R中子集的回归

Car*_*ter 2 regression r subset plyr

我是R的新手,我试图对单个文件中的多个子集("案例")进行线性回归.我有50个不同的案例,所以我不想要运行50个不同的回归...很好自动化这个.我已经找到并尝试了该ddply方法,但由于某种原因,这会为每种情况返回相同的系数.我正在使用的代码如下:

ddply(MyData, "Case", function(x) coefficients(lm(Y~X1+X2+X3, MyData)))

结果我再次得到每个"案例"的相同系数.关于如何改进我的代码以便每个案例的回归运行一次并为每个案例提供唯一系数的任何想法?

Rol*_*and 7

ddply将data.frames(从拆分输入data.frame)传递给函数.你可能想要这个:

ddply(MyData, "Case", function(df) coefficients(lm(Y~X1+X2+X3, data=df)))
Run Code Online (Sandbox Code Playgroud)

(未进行测试,因为您没有提供可重现的示例.)

您将整个输入data.frame传递lm给每个组.


Mic*_*ick 6

您也可以只使用基本功能:

# load data
data(warpbreaks)

# fit linear model to each subset
fits <- by(warpbreaks, warpbreaks[,"tension"],
           function(x) lm(breaks ~ wool, data = x))

# Combine coefficients from each model
do.call("rbind", lapply(fits, coef))
Run Code Online (Sandbox Code Playgroud)