Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / сочетание факторов - корреляция / 22 сообщений из 22, страница 1 из 1
12.12.2013, 15:42
    #38498744
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Есть массив данных состоящий из факторов (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 - далее произвести подбор отношение факторов.

Помогите пожалуйста в создании такого кода.
...
Рейтинг: 0 / 0
12.12.2013, 21:02
    #38499229
Клевер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Алекс82,

цикл. в цикле производишь все возможные действия(сложение, вычитание. всё, что твоей душе угодно). в переменной хранишь значение максимума. смущает только твоя "корреляция". неясно, как именно она высчитывается. всё остальное просто, как 2 пальца
...
Рейтинг: 0 / 0
13.12.2013, 14:44
    #38500130
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Клевер,

у меня мало опыта по кодированию (т.е. совсем нет :) Подскажите хоть на примере как такое сделать.
Корреляция это так =коррел().
...
Рейтинг: 0 / 0
13.12.2013, 15:12
    #38500187
коррел()
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Клевер,

Как можно что то советовать в данном посте ели ты даже не знаком с корреляцией? Или великому прогрограммисту этого не надо знать?
...
Рейтинг: 0 / 0
14.12.2013, 15:07
    #38500846
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Алекс82,

Кросс-пост 15292270

Для начала, пример массива данных. Судя по всему речь идет об Excel, раз =коррел()? И судя по всему корреляция линейная?
Про сочетание факторов, если я правильно уловил, то шаг изменения фактора 10 или?
Из описания задач не ясно, что понимается под шагами 3 и 4...
...
Рейтинг: 0 / 0
14.12.2013, 15:42
    #38500854
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Алекс82,

Кстати, сочетание любых двух факторов дает либо 1, либо -1, то есть максимум и минимум...
...
Рейтинг: 0 / 0
14.12.2013, 16:34
    #38500871
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
lbppb, прилагаю массив (часть массива). 10,20 и т.д. это наименование факторов изначально там текст названия. В примере реализовал некоторые действия.
...
Рейтинг: 0 / 0
14.12.2013, 17:55
    #38500897
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
lbppb, опубликовывал там вопрос до вашего ответа, думал так и никто и не ответит, время пожимает с анализом.
как удалить не могу найти.
...
Рейтинг: 0 / 0
15.12.2013, 04:26
    #38501225
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Алекс82lbppb, прилагаю массив (часть массива). 10,20 и т.д. это наименование факторов изначально там текст названия. В примере реализовал некоторые действия.

Все-таки живой пример многое проясняет. Лучше один раз увидеть, чем... В общем, первую задачу, в принципе и вторую, можно решить по примеру в файле, я слегка прокомментировал код, надеюсь проблем с английским нет. Что касается общего случая, т.е. если нужно перебрать все массивы массивов, то нужно понимать по какой закономерности будут вычисляться итоговые данные (факторы). Ну и конечно сам подход изменится.

Алекс82lbppb, опубликовывал там вопрос до вашего ответа, думал так и никто и не ответит, время пожимает с анализом.
как удалить не могу найти.

Так я думал, что вашим вопросом уже занимается профи, которому только 2 пальца.
...
Рейтинг: 0 / 0
15.12.2013, 11:08
    #38501271
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
lbppb, это круто!!! прогнал по 800 факторам получил ответ, низковатый конечно коэф., но работает!
Спасибо больше!!!
Для нахождения соотношения факторов которое давало бы более высокий коэф. корреляции попытался вставить в код поиск по 4 четырём факторам. Смог только добавить в начало и то не знаю так или нет...дальше вообще темный лес. Если возможно помогите пожалуйста сделать для 4-х факторов, это максимум, что мне необходимо.
...
Рейтинг: 0 / 0
15.12.2013, 15:04
    #38501389
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Алекс82lbppb, это круто!!! прогнал по 800 факторам получил ответ, низковатый конечно коэф., но работает!
Спасибо больше!!!
Для нахождения соотношения факторов которое давало бы более высокий коэф. корреляции попытался вставить в код поиск по 4 четырём факторам. Смог только добавить в начало и то не знаю так или нет...дальше вообще темный лес. Если возможно помогите пожалуйста сделать для 4-х факторов, это максимум, что мне необходимо.

Уточню на всякий случай, в моем примере реализована задача только по двум факторам.

Касательно адаптации кода, вы объявили несколько новых перменных и две старых, что само по себе ничего не меняет, кроме того, что компилятор ругается на продублированные перменные.

А раз темный лес, то давайте разбираться. Как работает код вам понятно или вы даже не пытались разобраться?
...
Рейтинг: 0 / 0
15.12.2013, 16:25
    #38501424
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
lbppb, изменил массив, поменял все ссылки в коде (проверил на несколько раз), но VB пишет, что Run time error 9 в строке arrW1(r) = arr(r, c)
на другом массиве была ошибка с номером 11, разобрался, что это из-за нулевых данных, здесь интернет пишет что это возможно из-за выхода за границу массива подскажите пожалуйста здесь чём причина.

А раз темный лес, то давайте разбираться. Как работает код вам понятно или вы даже не пытались разобраться?
я не понял хоть и распечатал на 3-х листах, склеил последовательно все листы, маркером пометил, что где менять в ссылках на ячейках, перевёл все ваши комментарии, но с нуля программирование это сложно.
Понял что оператор Dim размещает в памяти переменные, в начальном примере использовали 2 фактора - ввели четыре переменные (с какой целью не понятно). По аналогии если надо 4 фактора, то либо надо ввести 4*2=8 или 4^2=16?
...
Рейтинг: 0 / 0
15.12.2013, 19:59
    #38501525
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Алекс82lbppb, изменил массив, поменял все ссылки в коде (проверил на несколько раз), но VB пишет, что Run time error 9 в строке arrW1(r) = arr(r, c)
на другом массиве была ошибка с номером 11, разобрался, что это из-за нулевых данных, здесь интернет пишет что это возможно из-за выхода за границу массива подскажите пожалуйста здесь чём причина.

Это я вчера не доглядел, при объявлении размера массивов должно быть так:
Код: vbnet
1.
2.
ReDim arrW1(1 To arrR)
ReDim arrW2(1 To arrR)



Алекс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, дает возможность определить какое действие над какими факторам совершалось.
...
Рейтинг: 0 / 0
15.12.2013, 22:45
    #38501611
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Алекс82Задаётся условие 1- взять только два фактора 2 – задать возможные комбинации (деление умножение, сложение вычитание) 3- задаётся коэф. корреляции 4 - далее произвести подбор отношение факторов.



А могут в выражении быть константы: (Fact1+Const1*Fact2)/(Const2*Fact1+Const3*Fact2)?
...
Рейтинг: 0 / 0
16.12.2013, 15:48
    #38502340
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
lbppb, спасибо, мне надо время разобраться с этой новой инф.

на другом массиве попробовал код, все работает, но стал смотреть 170 фактор минус 90 вроде не может дать -45 (я обновил код как вы написали), может это из-за этого?

x1ca4064, да наверно может, но как это учесть я не знаю.
...
Рейтинг: 0 / 0
16.12.2013, 19:55
    #38502658
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Алекс82lbppb, спасибо, мне надо время разобраться с этой новой инф.

на другом массиве попробовал код, все работает, но стал смотреть 170 фактор минус 90 вроде не может дать -45 (я обновил код как вы написали), может это из-за этого?

x1ca4064, да наверно может, но как это учесть я не знаю.

Разбирайтесь, это в ваших интересах.

А считает не так, потому что вы W переместили на первую позицию.
...
Рейтинг: 0 / 0
16.12.2013, 20:17
    #38502677
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Алекс82x1ca4064, да наверно может, но как это учесть я не знаю.

Метод наименьших квадратов не рассматривали?

Хотелось бы больше узнать про суть задачи: Вы, почему-то, решили ограничиться только 4 операциями с начальными данными, возможно, имея больше информации, можно предложить более адекватную математическую модель, после подобрать ее параметры каким-либо методом.
...
Рейтинг: 0 / 0
17.12.2013, 15:58
    #38503808
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
x1ca4064, я и мел в виду как это через код сделать не знаю.
Конечно вывести регресс. уравнение это самое простое решение, программ для этого много.
Но мне нужно макс. простое соотношение факторов по которым можно быстро потом оценивать годится вещество для использования или нет.
...
Рейтинг: 0 / 0
17.12.2013, 21:18
    #38504280
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Алекс82x1ca4064, я и мел в виду как это через код сделать не знаю.
Конечно вывести регресс. уравнение это самое простое решение, программ для этого много.


Если проблема только в коде, посмотрите ALGLIB - там есть реализация на разных языках ( в т.ч. VBA) многих численных алгоритмов.
...
Рейтинг: 0 / 0
17.12.2013, 21:23
    #38504285
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
ALGLIB - исправил
...
Рейтинг: 0 / 0
02.01.2014, 15:13
    #38516962
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
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
...
Рейтинг: 0 / 0
02.01.2014, 16:26
    #38516991
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сочетание факторов - корреляция
Алекс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. Хотя в таком случае скорее стоит полностью пересмотреть подход. Логику подбора сочетаний в циклах придется менять в любом случае, равно как и логику расчета, которая, кстати, станет существенно больше, если не менять подход кардинально.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / сочетание факторов - корреляция / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]