|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Есть массив данных состоящий из факторов (10-140) и результата (W) Необходимо найти такое сочетание факторов которое бы давало максимальную корреляцию с результатом W. Т.е. предположим коэффициент корреляции 0,8 может быть получен между фактором 10 и фактором 130 при их отношении 10/130. Или предположим, получиться что отношение факторов (110-60)/20 даёт к. коррел 0,85. Понимаю что вариантов масса, но пример хотелось бы так: Задаётся условие 1- взять только два фактора 2 – задать возможные комбинации (деление умножение, сложение вычитание) 3- задаётся коэф. корреляции 4 - далее произвести подбор отношение факторов. Задаётся условие 1- взять только три фактора 2 – задать возможные комбинации (деление умножение, сложение вычитание, (фактор1- фактор2)/фактор3; (фактор1+ фактор2)/фактор2 и т.п. 3- задаётся коэф. корреляции 4 - далее произвести подбор отношение факторов. Помогите пожалуйста в создании такого кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 15:42 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Алекс82, цикл. в цикле производишь все возможные действия(сложение, вычитание. всё, что твоей душе угодно). в переменной хранишь значение максимума. смущает только твоя "корреляция". неясно, как именно она высчитывается. всё остальное просто, как 2 пальца ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 21:02 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Клевер, у меня мало опыта по кодированию (т.е. совсем нет :) Подскажите хоть на примере как такое сделать. Корреляция это так =коррел(). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2013, 14:44 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Клевер, Как можно что то советовать в данном посте ели ты даже не знаком с корреляцией? Или великому прогрограммисту этого не надо знать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2013, 15:12 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Алекс82, Кросс-пост 15292270 Для начала, пример массива данных. Судя по всему речь идет об Excel, раз =коррел()? И судя по всему корреляция линейная? Про сочетание факторов, если я правильно уловил, то шаг изменения фактора 10 или? Из описания задач не ясно, что понимается под шагами 3 и 4... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2013, 15:07 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Алекс82, Кстати, сочетание любых двух факторов дает либо 1, либо -1, то есть максимум и минимум... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2013, 15:42 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
lbppb, прилагаю массив (часть массива). 10,20 и т.д. это наименование факторов изначально там текст названия. В примере реализовал некоторые действия. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2013, 16:34 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
lbppb, опубликовывал там вопрос до вашего ответа, думал так и никто и не ответит, время пожимает с анализом. как удалить не могу найти. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2013, 17:55 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Алекс82lbppb, прилагаю массив (часть массива). 10,20 и т.д. это наименование факторов изначально там текст названия. В примере реализовал некоторые действия. Все-таки живой пример многое проясняет. Лучше один раз увидеть, чем... В общем, первую задачу, в принципе и вторую, можно решить по примеру в файле, я слегка прокомментировал код, надеюсь проблем с английским нет. Что касается общего случая, т.е. если нужно перебрать все массивы массивов, то нужно понимать по какой закономерности будут вычисляться итоговые данные (факторы). Ну и конечно сам подход изменится. Алекс82lbppb, опубликовывал там вопрос до вашего ответа, думал так и никто и не ответит, время пожимает с анализом. как удалить не могу найти. Так я думал, что вашим вопросом уже занимается профи, которому только 2 пальца. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2013, 04:26 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
lbppb, это круто!!! прогнал по 800 факторам получил ответ, низковатый конечно коэф., но работает! Спасибо больше!!! Для нахождения соотношения факторов которое давало бы более высокий коэф. корреляции попытался вставить в код поиск по 4 четырём факторам. Смог только добавить в начало и то не знаю так или нет...дальше вообще темный лес. Если возможно помогите пожалуйста сделать для 4-х факторов, это максимум, что мне необходимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2013, 11:08 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Алекс82lbppb, это круто!!! прогнал по 800 факторам получил ответ, низковатый конечно коэф., но работает! Спасибо больше!!! Для нахождения соотношения факторов которое давало бы более высокий коэф. корреляции попытался вставить в код поиск по 4 четырём факторам. Смог только добавить в начало и то не знаю так или нет...дальше вообще темный лес. Если возможно помогите пожалуйста сделать для 4-х факторов, это максимум, что мне необходимо. Уточню на всякий случай, в моем примере реализована задача только по двум факторам. Касательно адаптации кода, вы объявили несколько новых перменных и две старых, что само по себе ничего не меняет, кроме того, что компилятор ругается на продублированные перменные. А раз темный лес, то давайте разбираться. Как работает код вам понятно или вы даже не пытались разобраться? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2013, 15:04 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
lbppb, изменил массив, поменял все ссылки в коде (проверил на несколько раз), но VB пишет, что Run time error 9 в строке arrW1(r) = arr(r, c) на другом массиве была ошибка с номером 11, разобрался, что это из-за нулевых данных, здесь интернет пишет что это возможно из-за выхода за границу массива подскажите пожалуйста здесь чём причина. А раз темный лес, то давайте разбираться. Как работает код вам понятно или вы даже не пытались разобраться? я не понял хоть и распечатал на 3-х листах, склеил последовательно все листы, маркером пометил, что где менять в ссылках на ячейках, перевёл все ваши комментарии, но с нуля программирование это сложно. Понял что оператор Dim размещает в памяти переменные, в начальном примере использовали 2 фактора - ввели четыре переменные (с какой целью не понятно). По аналогии если надо 4 фактора, то либо надо ввести 4*2=8 или 4^2=16? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2013, 16:25 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Алекс82lbppb, изменил массив, поменял все ссылки в коде (проверил на несколько раз), но VB пишет, что Run time error 9 в строке arrW1(r) = arr(r, c) на другом массиве была ошибка с номером 11, разобрался, что это из-за нулевых данных, здесь интернет пишет что это возможно из-за выхода за границу массива подскажите пожалуйста здесь чём причина. Это я вчера не доглядел, при объявлении размера массивов должно быть так: Код: vbnet 1. 2.
Алекс82 А раз темный лес, то давайте разбираться. Как работает код вам понятно или вы даже не пытались разобраться? я не понял хоть и распечатал на 3-х листах, склеил последовательно все листы, маркером пометил, что где менять в ссылках на ячейках, перевёл все ваши комментарии, но с нуля программирование это сложно. Понял что оператор Dim размещает в памяти переменные, в начальном примере использовали 2 фактора - ввели четыре переменные (с какой целью не понятно). По аналогии если надо 4 фактора, то либо надо ввести 4*2=8 или 4^2=16? Тогда пройдемся по переменным. sh - рабочий (активный) лист книги. rng - область для хранения факторов. rngRes - область для хранения результата W. arr - массив для хранения факторов, в нем то же, что и в rng, но осуществлять операции с массивом намного быстрее, чем с областью. arrRes - по аналогии, массив для хранения результата W. arrW1, arrW2 - рабочие массивы, в которые будут помещаться поочередно сочетания факторов. Если факторов будет 4, то и массивов потребуется тоже 4. Ну и перменные модуля: MaxCorr - переменная для хранения максимальной корреляции. MaxArr() -массив для хранения результирующего фактора (т.е. результат умножения, деления, сложения и т.п. от рабочих факторов), соответствующий максимальной корреляции. MaxArrW1 - массив, для хранения номера столбца первого фактора, соответствующий максимальной корреляции, чтобы потом можно было его идентифицировать. MaxArrW2 - по аналогии, массив, для хранения номера столбца второго фактора. MaxType - текстовая перменная, определяющая тип действия над факторами, соответсвующая максимальной корреляции, в сочетании с MaxArrW1 и MaxArrW2, дает возможность определить какое действие над какими факторам совершалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2013, 19:59 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Алекс82Задаётся условие 1- взять только два фактора 2 – задать возможные комбинации (деление умножение, сложение вычитание) 3- задаётся коэф. корреляции 4 - далее произвести подбор отношение факторов. А могут в выражении быть константы: (Fact1+Const1*Fact2)/(Const2*Fact1+Const3*Fact2)? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2013, 22:45 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
lbppb, спасибо, мне надо время разобраться с этой новой инф. на другом массиве попробовал код, все работает, но стал смотреть 170 фактор минус 90 вроде не может дать -45 (я обновил код как вы написали), может это из-за этого? x1ca4064, да наверно может, но как это учесть я не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2013, 15:48 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Алекс82lbppb, спасибо, мне надо время разобраться с этой новой инф. на другом массиве попробовал код, все работает, но стал смотреть 170 фактор минус 90 вроде не может дать -45 (я обновил код как вы написали), может это из-за этого? x1ca4064, да наверно может, но как это учесть я не знаю. Разбирайтесь, это в ваших интересах. А считает не так, потому что вы W переместили на первую позицию. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2013, 19:55 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Алекс82x1ca4064, да наверно может, но как это учесть я не знаю. Метод наименьших квадратов не рассматривали? Хотелось бы больше узнать про суть задачи: Вы, почему-то, решили ограничиться только 4 операциями с начальными данными, возможно, имея больше информации, можно предложить более адекватную математическую модель, после подобрать ее параметры каким-либо методом. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2013, 20:17 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
x1ca4064, я и мел в виду как это через код сделать не знаю. Конечно вывести регресс. уравнение это самое простое решение, программ для этого много. Но мне нужно макс. простое соотношение факторов по которым можно быстро потом оценивать годится вещество для использования или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 15:58 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Алекс82x1ca4064, я и мел в виду как это через код сделать не знаю. Конечно вывести регресс. уравнение это самое простое решение, программ для этого много. Если проблема только в коде, посмотрите ALGLIB - там есть реализация на разных языках ( в т.ч. VBA) многих численных алгоритмов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 21:18 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
ALGLIB - исправил ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 21:23 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
lbppb, спасибо а что означает это Dim arrR As Long Dim arrC As Long Dim r As Long Dim c As Long Dim c2 As Long Dim r2 As Long если будет 4 переменные, то я должен так сделать ? : Dim arrR As Long Dim arrC As Long Dim arrS As Long Dim arrY As Long Dim r As Long Dim c As Long Dim c2 As Long Dim r2 As Long Dim s As Long Dim y As Long Dim s2 As Long Dim y2 As Long ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2014, 15:13 |
|
сочетание факторов - корреляция
|
|||
---|---|---|---|
#18+
Алекс82lbppb, спасибо а что означает это Dim arrR As Long Dim arrC As Long Dim r As Long Dim c As Long Dim c2 As Long Dim r2 As Long если будет 4 переменные, то я должен так сделать ? : Dim arrR As Long Dim arrC As Long Dim arrS As Long Dim arrY As Long Dim r As Long Dim c As Long Dim c2 As Long Dim r2 As Long Dim s As Long Dim y As Long Dim s2 As Long Dim y2 As Long Настоятельно рекоменую использовать тэги оформления кода, поэтому ознакомтесь с помощью . От того, что вы объявите новых переменных логика подбора не измениться. А раз вы задаете вопрос таким образом, то я могу смело сделать вывод, что в логике вы не разобрались. Тем не менее, в arrR хранится колчество строк массива. В arrC количество столбцов. r, c, r2, c2 - счетчики текущих строк и столбцов в циклах подбора сочетаний факторов. Если факторов будет четыре, то увеличится и количество переменных для счетчиков, т.е. r, c, r2, c2, r3, c3, r4, c4. Хотя в таком случае скорее стоит полностью пересмотреть подход. Логику подбора сочетаний в циклах придется менять в любом случае, равно как и логику расчета, которая, кстати, станет существенно больше, если не менять подход кардинально. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2014, 16:26 |
|
|
start [/forum/topic.php?fid=60&msg=38502677&tid=2156594]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 146ms |
0 / 0 |