【发布时间】:2021-05-29 07:54:34
【问题描述】:
我希望有一种半简单的方法来实现这一点。
为此,我构建了一个示例数据集(CountryCode 是国家名称的代理 - 我只是想证明一个示例数据集以帮助理解问题);
```
set.seed(20)
House <- data.frame(Price = sample(350000:625000, 200, replace=TRUE),
LotSize = sample(5000:45000, 200, replace=TRUE),
SqFt = sample(18000:32000, 200, replace=TRUE),
Bedroom = sample(3:5, 200, replace=TRUE),
HomeAge = rnorm(200, mean=15, sd=5),
CountryCode = sample(300:305, 200, replace=TRUE))
```
我有一个类似于下面的线性模型;
model<-lm(HomePrice ~ LotSize+SqFt+Bedroom+HomeAge, data=House[House$CountryCode==300,])
如果我想运行相同的模型,但是在每个国家/地区代码的循环中(因此 x 会根据国家/地区代码而改变),可以这样做吗?
由于外汇汇率,HomePrice 的值不是典型的连续因子;美国 300,000 美元 (USD) 的价格与法国 300,000 欧元 (EUR) 的价格不同。在欧洲,甚至 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,
data=House[House$CountryCode==300,])
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, 200, replace=TRUE),
LotSize = sample(5000:45000, 200, replace=TRUE),
SqFt = sample(18000:32000, 200, replace=TRUE),
Bedroom = sample(3:5, 200, replace=TRUE),
HomeAge = rnorm(200, mean=15, sd=5),
CountryCode = sample(300:305, 200, 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,它运行模型六次。
【问题讨论】:
-
为什么不:
integrated_model <- model_50006<-lm(HomePrice ~ LotSize + SqFt + Bedroom + HomeAge + factor(ZipCode), data=House) -
我用一个小改动更新了这个问题;而不是邮政编码,将其更改为反映国家/地区。我遇到的问题是,由于汇率,像价格这样的值不是真正的连续变量。 300,000 欧元 =! 300,000 美元,理想情况下,希望为每个不同的国家运行相同的模型。它归结为“类似术语”的分组,在我的情况下,就是国家。谢谢。