Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
zewer
1984 / 1575 / 194
Регистрация: 07.01.2011
Сообщений: 9,196
Завершенные тесты: 1
1

Корреляция, не удается подключить System.Web.Ui.DataVisualization.Charting

04.04.2015, 22:46. Просмотров 1516. Ответов 12
Метки нет (Все метки)

Здраствуйте, разбираюсь с корреляцией на шарпе.
Нашел такую инфу:
https://msdn.microsoft.com/en-us/lib...vs.110%29.aspx
Но не удаеться подключить пространство имен
C#
1
using System.Web.UI.DataVisualization.Charting;
Как ее подключить? IntelliSense сообщает что такого пространства нет
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2015, 22:46
Ответы с готовыми решениями:

Не удается подключить System.Threading.Tasks
Здравствуйте! Подскажите как подключить System.Threading.Tasks. Не удается объявить...

Не удается подключить библиотеку, написанную на C
Стоит задача написания программы для связи пока что двух ПК посредством интерфейса CAN. Имеется...

Не удается подключить пакет Npgsql
Приветствую. Устанавливаю через NuGet пакет Npgsql версии 2.2.7. Указано что зависимостей нет....

Using System.Runtime.Serialization.Json; (Не удается найти пространство имен)
Подскажите, как подключить? using System.Runtime.Serialization.Json; Ошибку выдает мол...

Ошибка в System.Net.HttpListener - Системе не удается найти указанный путь
Всем привет. Тему создаю тут, т.к. это все-таки не для web Ситуация следующая: Мне для своего...

12
Ev_Hyper
Заблокирован
04.04.2015, 23:21 2
zewer, добавьте ссылку на System.Web.DataVisualization
1
zewer
1984 / 1575 / 194
Регистрация: 07.01.2011
Сообщений: 9,196
Завершенные тесты: 1
05.04.2015, 14:28  [ТС] 3
спасибо
ссылочку добавил, но
C#
1
double result = Chart1.DataManipulator.Statistics.Correlation("Series1", "Series2");
Выдает ошибку
Код
Ошибка	1	Элемент "chart1" не существует в текущем контексте.
Добавлено через 14 часов 25 минут
может кто то знает другие библиотеки/способы расчета корреляции/автокорреляции набора данных
0
Storm23
Эксперт .NETАвтор FAQ
9200 / 4449 / 1616
Регистрация: 11.01.2015
Сообщений: 5,683
Записей в блоге: 34
05.04.2015, 14:58 4
zewer,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public double ComputeCoeff(double[] values1, double[] values2)
{
    if(values1.Length != values2.Length)
        throw new ArgumentException("values must be the same length");
 
    var avg1 = values1.Average();
    var avg2 = values2.Average();
 
    var sum1 = values1.Zip(values2, (x1, y1) => (x1 - avg1) * (y1 - avg2)).Sum();
 
    var sumSqr1 = values1.Sum(x => Math.Pow((x - avg1), 2.0));
    var sumSqr2 = values2.Sum(y => Math.Pow((y - avg2), 2.0));
 
    var result = sum1 / Math.Sqrt(sumSqr1 * sumSqr2);
 
    return result;
}
1
05.04.2015, 14:58
zewer
1984 / 1575 / 194
Регистрация: 07.01.2011
Сообщений: 9,196
Завершенные тесты: 1
05.04.2015, 15:07  [ТС] 5
Storm23, спасибо, я пользуюсь библиотекой alglib, и результат по вашему методу совпадает с методом Пирсона
C#
1
alglib.pearsoncorr2(x, y);
где x и y
C#
1
2
            double[] x = new double[] { 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 };
            double[] y = new double[] { 0, 1, 2, 3,  4,  5,  6,  7,  8,  9, 10 };
Скажу сразу, в математических понятиях не очень силен, извините , если где то туплю.
Но насколько я искал в вики, я понял что просто корреляция, автокорреляция, корреляция за Пирсоном(умовно говоря) и за Спирманом
C#
1
alglib.spearmancorr2(x, y);
должны возвращать разные коэф, и почему совпадает?
0
Storm23
Эксперт .NETАвтор FAQ
9200 / 4449 / 1616
Регистрация: 11.01.2015
Сообщений: 5,683
Записей в блоге: 34
05.04.2015, 15:09 6
Лучший ответ Сообщение было отмечено zewer как решение

Решение

zewer, "Просто корреляция" и "Корреляция Пирсона" это одно и то же.
1
zewer
1984 / 1575 / 194
Регистрация: 07.01.2011
Сообщений: 9,196
Завершенные тесты: 1
05.04.2015, 15:10  [ТС] 7
Цитата Сообщение от Storm23 Посмотреть сообщение
zewer, "Просто корреляция" и "Корреляция Пирсона" это одно и то же.
хорошо, а автокорреляция? это что?
0
Storm23
Эксперт .NETАвтор FAQ
9200 / 4449 / 1616
Регистрация: 11.01.2015
Сообщений: 5,683
Записей в блоге: 34
05.04.2015, 15:11 8
zewer, Мне вам пересказать весь учебник матстатистики? Откройте хотя бы википедию, там все написано.
0
zewer
1984 / 1575 / 194
Регистрация: 07.01.2011
Сообщений: 9,196
Завершенные тесты: 1
05.04.2015, 15:15  [ТС] 9
Цитата Сообщение от Storm23 Посмотреть сообщение
zewer, Мне вам пересказать весь учебник матстатистики? Откройте хотя бы википедию, там все написано.
нет, я читал, что автокорреляция, это тот же набор данных, но зсув на некоторое число.
Т.е. например я должен сделать автокорреляцию
C#
1
            double[] y = new double[] { 0, 1, 2, 3,  4,  5,  6,  7,  8,  9, 10 };
То будет как корреляция, но с набором
C#
1
2
            double[] x = new double[] { 0, 1, 2, 3, 4 };
            double[] y = new double[] { 3, 4, 5, 6, 7 };
И являеться ли автокорреляция корреляцией за спирманом, или это за Спирманом - вобше 3 корреляция, извините что пишу таким "тупым" набором слов
0
Psilon
Master of Orion
Эксперт .NET
6039 / 4893 / 903
Регистрация: 10.07.2011
Сообщений: 14,477
Записей в блоге: 5
Завершенные тесты: 4
05.04.2015, 15:18 10
zewer, я лично сам писал
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Sd
{
    public class StochasticProcess
    {
        private readonly double[] _data;
        private readonly Lazy<double[]> _kx;
 
        public double[] Data
        {
            get
            {
                return (double[])_data.Clone();
            }
        }
        public double[] Kx
        {
            get
            {
                return _kx.Value;
            }
        }
 
        public double Mean { get; private set; }
        public double Variance { get; private set; }
 
        public StochasticProcess(double[] data)
        {
            _data = data;
            Mean = data.Sum() / data.Length;
            Variance = Data.Sum(d => (d - Mean) * (d - Mean)) / (data.Length - 1);
            _kx = new Lazy<double[]>(() => (double[]) CalculateKx().Clone());
        }
 
        private double[] CalculateKx()
        {
            var result = new double[_data.Length/10];
            Parallel.For(0, result.Length, m =>
                                           {
                                               for (int j = 0; j < _data.Length - m; j++)
                                               {
                                                   result[m] += (_data[j] - Mean)*(_data[j + m] - Mean);
                                               }
                                               result[m] /= _data.Length - m;
                                           });
            return result;
        }
    }
}
только добавить взаимную корреляцию и будет ок.
1
Storm23
Эксперт .NETАвтор FAQ
9200 / 4449 / 1616
Регистрация: 11.01.2015
Сообщений: 5,683
Записей в блоге: 34
05.04.2015, 15:18 11
Цитата Сообщение от zewer Посмотреть сообщение
Т.е. например я должен сделать автокорреляцию
Код C#
1
* * * * * * double[] y = new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Автокорреляция в данном случае считается как корреляция между массивами:

C#
1
2
double[] y1 = new double[] { 0, 1, 2, 3,  4,  5,  6,  7,  8,  9 };
double[] y2 = new double[] { 1, 2, 3, 4,  5,  6,  7,  8,  9, 10 };
1
Psilon
Master of Orion
Эксперт .NET
6039 / 4893 / 903
Регистрация: 10.07.2011
Сообщений: 14,477
Записей в блоге: 5
Завершенные тесты: 4
05.04.2015, 15:20 12
Вы уж определитесь, что вам нужно. Коэф. корреляции и АКФ это совсем не одно и то же. АКФ это свойство случайного процесса, а коэф корреляции - случайной величины, что как бы совершенно разные вещи.
0
zewer
1984 / 1575 / 194
Регистрация: 07.01.2011
Сообщений: 9,196
Завершенные тесты: 1
05.04.2015, 15:27  [ТС] 13
спасибо за помощь, я просто буду работать в дипломе с датамайнингом, и делаю пока краткий вступ в математику и т.д. и ищу либу под шарп с реализоваными математическими функциями, просто было непонятно, что
Цитата Сообщение от Storm23 Посмотреть сообщение
"Просто корреляция" и "Корреляция Пирсона" это одно и то же.
Добавлено через 6 минут
Цитата Сообщение от Psilon Посмотреть сообщение
Вы уж определитесь, что вам нужно. Коэф. корреляции и АКФ это совсем не одно и то же. АКФ это свойство случайного процесса, а коэф корреляции - случайной величины, что как бы совершенно разные вещи.
на данный момент мне надо найти либу под С# с готовыми функциями, и понять что это такое. Я остановился на alglib
0
05.04.2015, 15:27
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2015, 15:27

Не получается подключить System.Security.Cryptography
Не могу разобраться(( В переносимой библиотеке на C# не работает using...

Как подключить System.Windows.Media?
В msdn есть using System.Windows.Media; но у меня такого пространства имен нет. Видел что есть...

Не удается неявно преобразовать тип string в System.Collection.Generic.Queue<int>
Такая во ошибка не удаеться неявно преобразовать тип string в System.Collection.Generic.Queue&lt;int&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru