Как получить оптимальные веса, которые привели бы к лучшей корреляции между стоком и API в R? - PullRequest
0 голосов
/ 08 июля 2019

Я хотел бы получить наилучшую возможную корреляцию между стоком и API (индекс осадков предшествующих периодов), подгоняя веса к моим месяцам осадков до замораживания (июль-октябрь) в пределах определенного диапазона.Сумма установленных весов любой комбинации за все месяцы никогда не должна превышать 1.

Вот мой частично выполненный код (извините, я не знаю, как действовать дальше).Я пытаюсь использовать 100 различных комбинаций весов для каждого месяца в пределах определенного диапазона до замораживания осадков.

weights=data.frame(July=runif(100, min = 0.01, max = 0.1), August=runif(100, min = 0.11, max = 0.25),
                       Sept=runif(100, min = 0.26, max = 0.40), Oct=runif(100, min = 0.41, max = 0.6))

# Precipitation before freezup
July_rain=runif(31*20, min = 45, max = 55)
Aug_rain=runif(31*20, min = 35, max = 45)
Sep_rain=runif(30*20, min = 30, max = 38)
Oct_rain=runif(31*20, min = 28, max = 32)

# Winter Precipitation 
Dec_rain=runif(31*20, min = 20, max = 25)
Jan_rain=runif(31*20, min = 20, max = 25)
Feb_rain=runif(31*20, min = 20, max = 25)
Mar_rain=runif(31*20, min = 35, max = 40)

# Runoff
Runoff=runif(30*20, min = 10, max = 400)

# placing data into multiple Dataframe
max.len = max(length(July_rain), length(Aug_rain), length(Sep_rain), length(Oct_rain), length(Dec_rain), length(Jan_rain), length(Feb_rain), length(Mar_rain), length(Runoff))
July_rain = c(July_rain, rep(NA, max.len - length(July_rain)))
Aug_rain = c(Aug_rain, rep(NA, max.len - length(Aug_rain))) 
Sep_rain = c(Sep_rain, rep(NA, max.len - length(Sep_rain)))
Oct_rain = c(Oct_rain, rep(NA, max.len - length(Oct_rain))) 
Dec_rain = c(Dec_rain, rep(NA, max.len - length(Dec_rain)))
Jan_rain = c(Jan_rain, rep(NA, max.len - length(Jan_rain))) 
Feb_rain = c(Feb_rain, rep(NA, max.len - length(Feb_rain)))
Mar_rain = c(Mar_rain, rep(NA, max.len - length(Mar_rain)))
Runoff=c(Runoff, rep(NA, max.len - length(Runoff)))

DF_1=data.frame(July_rain,Aug_rain, Sep_rain, Oct_rain) # before freezeup
DF_2=data.frame(Dec_rain, Jan_rain, Feb_rain, Mar_rain) # winter precipitation

Вот уравнение, в которое я пытаюсь вписаться

API_beforeFreezup (or DF_1) = 0.5*(0.01 - 0.10)*July_rain + (0.11 - 0.25)*Aug_rain + (0.26 - 0.40)*Sep_rain + (0.41 - 0.60)*Oct_rain 
API_Winter= 0.5*(Sum of winter precipitation) 
API= API_beforeFreezup + API_Winter
Runoff = API # I should get maximum correlation between API and Runoff.
...