相关疑难解决方法(0)

用dplyr拟合几个回归模型

我想使用dplyr为每小时(因子变量)拟合一个模型,我得到一个错误,我不太确定什么是错的.

df.h <- data.frame( 
  hour     = factor(rep(1:24, each = 21)),
  price    = runif(504, min = -10, max = 125),
  wind     = runif(504, min = 0, max = 2500),
  temp     = runif(504, min = - 10, max = 25)  
)

df.h <- tbl_df(df.h)
df.h <- group_by(df.h, hour)

group_size(df.h) # checks out, 21 obs. for each factor variable

# different attempts:
reg.models <- do(df.h, formula = price ~ wind + temp)

reg.models <- do(df.h, .f = lm(price ~ wind + temp, data …
Run Code Online (Sandbox Code Playgroud)

r dplyr

62
推荐指数
8
解决办法
3万
查看次数

为什么在分组data.table中使用lm更新丢失其模型数据?

好的,这是一个奇怪的.我怀疑这是一个内部的错误data.table,但是如果有人能够解释为什么会发生这种情况会有用 - 这究竟是update做什么的?

我正在使用list(list())里面的技巧data.table存储适合的模型.当您lm为不同的分组创建一系列对象,然后创建update这些模型时,所有模型的模型数据将成为最后一个分组的模型数据.这似乎是一个参考是挂在应该已经制作副本的地方,但我找不到哪里,我无法重现这个lmupdate.

具体例子:

从虹膜数据开始,首先使三种不同的样本大小,然后将lm模型拟合到每个物种,更新那些模型:

set.seed(3)
DT = data.table(iris)
DT = DT[rnorm(150) < 0.9]
fit = DT[, list(list(lm(Sepal.Length ~ Sepal.Width + Petal.Length))),
          by = Species]
fit2 = fit[, list(list(update(V1[[1]], ~.-Sepal.Length))), by = Species]
Run Code Online (Sandbox Code Playgroud)

原始数据表具有不同数量的每个物种

DT[,.N, by = Species]
#       Species  N
# 1:     setosa 41
# 2: versicolor 39
# 3:  virginica 42
Run Code Online (Sandbox Code Playgroud)

第一次证实了这一点:

fit[, nobs(V1[[1]]), by = Species]
#       Species …
Run Code Online (Sandbox Code Playgroud)

r lm data.table

11
推荐指数
1
解决办法
640
查看次数

标签 统计

r ×2

data.table ×1

dplyr ×1

lm ×1