【发布时间】:2020-08-02 06:28:42
【问题描述】:
我正在尝试运行一个回归模型,其中包含美国城市的固定效应。我有超过 10,000,000 百万行和 600 个城市。下面的代码有效,但它真的很慢。当为具有很多级别的变量包含一个因子时,有什么方法可以更快地运行模型。
x <- data.frame(
a = sample( 1:1000, 1000000 , replace=T),
cityfips = sample( 1:250, 1000000 , replace=T),
d = sample( 1:4, 1000000 , replace=T)
)
system.time(a1 <- lm( a~cityfips+d , x ) )
system.time(a2 <- lm( a~as.factor(cityfips) + d , x ) )
> system.time(a1 <- lm( a~cityfips+d , x ) )
user system elapsed
0.22 0.00 0.22
> system.time(a2 <- lm( a~as.factor(cityfips) + d , x ) )
user system elapsed
95.65 0.97 96.62
> system.time(a3 <- slm( a~as.factor(cityfips) + d , x ) )
user system elapsed
4.58 2.06 6.65
【问题讨论】:
-
嗯,我实际上看到了您可能遇到的问题.. 是 model.matrix 正在杀死您的 lm,而重复的问题实际上并没有解决这个问题
-
您可以尝试使用稀疏矩阵,web.mit.edu/r/current/lib/R/library/SparseM/html/slm.html,但似乎它非常具有实验性
-
@StupidWolf - 做到了,我更新了给你归属的问题,希望我能投票给你。谢谢
-
不用担心...好吧,我检查了一下,好像系数是一样的。是的,您需要小心,配件的完成方式略有不同。你可以阅读更多econ.uiuc.edu/~roger/research/sparse/SparseM.pdf
-
一般来说,您不应该编辑您的问题以包含答案。如果现有答案未涵盖答案的某些方面,您可以发布自己的答案。