Как изменить порядок полиномов в for-l oop, используя функцию poly R? - PullRequest
1 голос
/ 08 февраля 2020

Я хотел бы подогнать регрессию, попробовав разные полиномы, и я попытался запустить этот l oop:

for (p_order  in 1:9) {
  assign(paste("RD0", p_order, sep = ""),  electricity_price ~ d1 + gas_price + coal_price +
  oil_price + EUA +  weekday + month + median_windspeed1 + 
  median_windspeed2 +   median_windspeed3 +   median_windspeed4 + 
  sun1 + sun2 + sun3 + sun4 + median_temp1 +   median_temp2 + 
  median_temp3 + median_temp4 + poly(as.numeric(date), p_order, raw=TRUE) + time) 
}

Хотя он правильно создает имена переменных (RD01, RD02 и др. c), вместо сохранения правильного порядка многочлена (1,2, et c) он хранит "p_order" . Например,

> RD04
electricity_price ~ d1 + gas_price + coal_price + oil_price + 
    EUA + weekday + month + median_windspeed1 + median_windspeed2 + 
    median_windspeed3 + median_windspeed4 + sun1 + sun2 + sun3 + 
    sun4 + median_temp1 + median_temp2 + median_temp3 + median_temp4 + 
    poly(as.numeric(date), p_order, raw = TRUE) + time
> RD07
electricity_price ~ d1 + gas_price + coal_price + oil_price + 
    EUA + weekday + month + median_windspeed1 + median_windspeed2 + 
    median_windspeed3 + median_windspeed4 + sun1 + sun2 + sun3 + 
    sun4 + median_temp1 + median_temp2 + median_temp3 + median_temp4 + 
    poly(as.numeric(date), p_order, raw = TRUE) + time

Может кто-нибудь объяснить мне, почему и как с этим разобраться?

Спасибо!

1 Ответ

0 голосов
/ 08 февраля 2020

Сначала создайте формулу, затем назначьте ее. Я опубликую упрощенный пример.

for (p_order  in 1:2) {
  fmla <- paste("electricity_price ~ d1 + poly(as.numeric(date),", p_order, ", raw = TRUE)")
  assign(paste("RD0", p_order, sep = ""),  as.formula(fmla)) 
}

RD01
#electricity_price ~ d1 + poly(as.numeric(date), 1, raw = TRUE)
RD02
#electricity_price ~ d1 + poly(as.numeric(date), 2, raw = TRUE)
...