【发布时间】:2014-04-01 16:33:21
【问题描述】:
我的大脑有些僵硬,希望你们中的某个人能指出我正确的方向。我的最终目标是各种回归系数的输出(主要对价格弹性感兴趣),我使用“by”函数通过简单的多元回归实现了这一目标。
我正在使用“by”函数循环遍历“State.UPC”变量的每次迭代的回归公式。由于我的数据非常大(~1MM 行),我不得不将我的数据分成 3-4 个状态组(参见 mystates1...mystates10)。然后我对这些子集执行回归,每次都在“datastep3”数据框中更改我的数据源。这就是我需要你帮助的地方:
结合我现有的“by”回归函数和“for”循环,有效地重写它的最佳方法是什么,这样我就可以绕过在“datastep3”中不断更改数据框名称的步骤和“write.csv”步骤。本质上是 R 循环遍历每个“mystates”数据子集并通过“State.UPC”属性进行回归?
我尝试了几种组合都没有成功。请原谅这个业余问题...仍在学习 R。这是我的代码:
data <-read.csv("PriceData.csv")
datastep1 <-subset(data, subset=c(X..Vol>0, Unit.Vol>0))
datastep2 <- transform(datastep1, State.UPC = paste(State,UPC, sep="."))
mystates1 <- c("AL","AR","AZ")
mystates2 <- c("CA","CO","FL")
mystates3 <- c("GA","IA","IL")
mystates4 <- c("IN","KS","KY")
mystates5 <- c("LA","MI","MN")
mystates6 <- c("MO","MS","NC")
mystates7 <- c("NJ","NM","NV")
mystates8 <- c("NY","OH","OK")
mystates9 <- c("SC","TN","TX")
mystates10 <- c("UT","VA","WI","WV")
datastep3 <-subset(datastep2, subset=State %in% mystates10)
datastep4 <-na.omit(datastep3)
PEbyItem <- by(datastep4, datastep4$State.UPC, function(df)
lm(log(Unit.Vol)~log(Price) + Distribution+Independence.Day+Labor.Day+Memorial.Day+Thanksgiving+Christmas+New.Years+
Year+Month, data=df))
x <- do.call("rbind",lapply(PEbyItem, coef))
y <-data.frame(x)
write.csv(x, file="mystates10.csv", row.names=TRUE)
【问题讨论】:
标签: r regression