如何解决一致的 LM 模型然后预测 - 循环数据直接在 lm 和预测函数中进行子集
我希望有一种半简单的方法来实现这一点。
为此,我构建了一个示例数据集(CountryCode 是国家名称的代理——我只是想证明一个示例数据集以帮助理解问题);
```
set.seed(20)
House <- data.frame(Price = sample(350000:625000,200,replace=TRUE),LotSize = sample(5000:45000,SqFt = sample(18000:32000,Bedroom = sample(3:5,HomeAge = rnorm(200,mean=15,sd=5),CountryCode = sample(300:305,replace=TRUE))
```
我有一个类似于下面的线性模型;
model<-lm(HomePrice ~ LotSize+SqFt+Bedroom+HomeAge,data=House[House$CountryCode==300,])
如果我想运行相同的模型,但是在每个国家/地区代码的循环中运行(因此 x 会根据国家/地区代码更改),可以这样做吗?
由于汇率的原因,HomePrice 的值不是典型的连续因子;美国 (USD) 的 300,000 价格与法国 (EUR) 的 300,000 价格不同。甚至 300,000 欧元在欧洲也会有所不同。但是,如果模型中只考虑模型建立在同一个国家,价格就会有一个连续的方面。
基本上,一个循环,其中 i=CountryCode
和循环将执行 model_i<-lm(HomePrice ~ LotSize+SqFt+Bedroom+HomeAge,data=House[House$CountryCode==i,])
,它基于 i(或每个 CountryCode)的子集运行并将其保存为 model_i(each Country)
我最希望看到的最终结果是;
```
model_300<-lm(HomePrice ~ LotSize+SqFt+Bedroom+HomeAge,])
model_301<-lm(HomePrice ~ LotSize+SqFt+Bedroom+HomeAge,data=House[House$CountryCode==301,])
model_302<-lm(HomePrice ~ LotSize+SqFt+Bedroom+HomeAge,data=House[House$CountryCode==302,])
```
是否可以使用类似的循环来进行预测?
```
predict_i<-predict(model_i,newdata=(House[House$CountryCode==i,]),interval="confidence",level=.70)
````
我希望这是有道理的。
编辑 - 所以我越来越近了(我认为),但是希望能得到一些帮助以帮助它越过终点线;
set.seed(20)
House <- data.frame(Price = sample(350000:625000,replace=TRUE))
Country<-unique(House$CountryCode)
n=length(Country)
for (i in 1:length(Country)) {
Country[i]->Testing
allModels = lapply(Country,function(x){
lm(Price~Bedroom,data=House[House$CountryCode==Testing,])})}
对于最后一个“Testing”实例或在本例中为 305,它运行模型六次。
解决方法
我能够通过下面的代码让它按照我想要的方式工作;
Country<-unique(House$CountryCode)
CountryCodeModel <- list()
for (i in 1:length(Country)) {
Model<-lm(Price~LotSize+SqFt+Bedroom+HomeAge,data=House[House$CountryCode==Country[i],])
CountryCodeModel[[i]] <- summary(Model)}
names(CountryCodeModel) = Country
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。