Я пытаюсь сделать максимизацию в R, которую я сделал ранее в Excel с помощью решателя. Проблема в том, что я не знаю, как с этим бороться (у меня нет хорошего уровня в R).
давайте немного поговорим о моих данных. У меня есть 26 швейцарских кантонов и швейцарское правительство (которое представляет собой сумму стоимости 26 кантонов) с их населением и их «богатством». Итак, у меня есть 27 наблюдений по переменной. Я не уверен, что следующие описания полезны, но я их все же привожу. Исходя из этого, я вычисляю некоторые переменные с помощью циклов while. Для каждого кантона [i]:
- ресурсный потенциал = среднее (богатство 2011 [i], богатство 2012 [i], богатство 2013 [i])
- Среднее значение населения = среднее (население 2011 [i], население 2012 [i], население 2013 [i])
- ресурсный потенциал на душу населения = 1000*ресурсный потенциал [i]/население [i]
- ресурсный индекс = 100 * ресурсный потенциал на душу населения [i] / ресурсный потенциал на душу населения [правительство Швейцарии]
Вот небольшой пример того, какие циклы я использовал:
RI=0
i = 1
while(i<28){
RI[i]=resource potential capita [i]/resource potential capita [27]*100
i = i+1
}
Индекс ресурсов (RI) для швейцарского правительства (i = 27) равен 100, потому что мы делим ресурсный потенциал на душу населения швейцарского правительства (когда i = 27) сам по себе и умножаем на 100. Следовательно, все кантоны с RI>100 являются богатыми кантонами, а остальные (IR‹100) – бедными кантонами. До этого момента проблем не было. Я только что объяснил, как я построил свой набор данных.
Теперь проблема, с которой я столкнулся: мне нужно создать переменную взвешенная разница (wd). Он принимает значение:
- 0, если RI>100 (богатый кантон)
- (100-RI[i])^(1+P)*Pop[i], если RI‹100 (бедный кантон)
Я создаю эту переменную так: (извините за слабость кода, я старался).
wd=-1
i = 1
a = 0
c = 0
tot = 0
while(i<28){
if(i == 27) {
wd[i] = a
} else if (RI[i] < 100) {
wd[i] = (100-RI[i])^(1+P)*Pop[i]
c = wd[i]
a = a+c
} else {
wd[i]= 0
}
i = i+1
}
Тем не менее, я не знаю значение "p". Это значение от 0 до 1. Чтобы найти значение p, я должен выполнить максимизацию, используя следующие функции:
- RI_26 = 65,9, это минимум RI в моих данных
- RI_min = 100-((x*wd [27])/((1+p)*z*100))^(1/p), где x и z — фиксированные значения (x = 8'677, z = 4'075'977'077) и wd [27] сумма wd для каждого кантона.
У нас есть p в двух уравнениях: RI_min и wd. Чтобы решить ее в Excel, я использовал решатель Excel со следующими функциями:
- p_dot = RI_26/RI_min* p ==> p_dot = [65,9/100-((x* wd [27])/((1+p)*z*100))^(1/ р)]*р
- RI_26 = RI_min ==>65,9 =100-((x*wd [27])/((1+p)*z*100))^(1/p)
В Excel p — это моя ячейка переменной (единственное значение, которое можно изменить), p_dot — это моя цель для определения, а RI_26 = RI_min — это моя ограничение.
Поэтому я хотел бы максимизировать p и я не знаю, как это сделать в R. Моя главная проблема — наличие p в RI_min и wd. Нам нужно сделать итерацию, чтобы решить ее, но это слишком далеко от моих навыков.
Может ли кто-нибудь помочь мне с информацией, которую я предоставил?