Файл: Анализ и оценка средств реализации структурных методов и проектирования экономической информационной системы.pdf
Добавлен: 25.04.2023
Просмотров: 693
Скачиваний: 2
СОДЕРЖАНИЕ
1.1. Метод взвешенных тангенсов и метод фазовых трендов
1.2. Анализ временных рядов на базе графов и матриц подобия
1.3. Метод внешне несвязанных регрессий
ГЛАВА 2. ПОСТРОЕНИЕ МОДЕЛИ ПРОГНОЗИРОВАНИЯ ФИНАНСОВОЙ УСТОЙЧИВОСТИ ПРЕДПРИЯТИЯ
2.1. Анализ данных и описательная статистика переменных
2.2. Построение модели внешне несвязанных регрессий
2.3. Построение регрессионной модели
2.5. Прогнозирование финансовой устойчивости предприятия на 2017 год
ГЛАВА 3. РАЗРАБОТКА ВЕБ-ПРИЛОЖЕНИЯ
3.1. Этапы анализа и проектирования
foreach (double el in inverse_cov)
{
int k = 0;
for (int i = str; i < kroneker_icount; i++)
{
int m = 0;
for (int j = stl; j < kroneker_jcount; j++)
{
kroneker[i, j] = el * one_matr[k, m];
m++;
}
k++;
}
if (k == count)
{
kroneker_jcount = kroneker_jcount + count;
stl = stl + count;
}
if (stl == count * 3)
{
kroneker_jcount = count;
str = kroneker_icount;
kroneker_icount = kroneker_icount + count;
stl = 0;
}
}
return kroneker;
}
public double[,] Transp(double[,]x, int count)
{
double[,] trans = new double[12,count * 3];
for (int i = 0; i < count*3; i++)
for (int j = 0; j < 12; j++)
trans[j, i] = x[i, j];
return trans;
}
public double[,] Multipl(double[,] a, double[,] b)
{
int a_rows=a.GetLength(0);
int b_rows=b.GetLength(0);
int b_col=b.GetLength(1);
double[,] multi = new double[a_rows, b_col];
for (int i = 0; i < a_rows; i++) // каждая строка A
{
for (int j = 0; j < b_col; j++) // каждый столбец B
for (int k = 0; k < b_rows; k++)
multi[i, j] += a[i, k] * b[k, j];
}
return multi;
}
public double[] Multipl_1(double[,] a, double[] b)
{
double[] result = new double[a.GetLength(0)];
for (int i = 0; i < a.GetLength(0); ++i) // каждая строка A
for (int k = 0; k < a.GetLength(1); ++k)
result[i] += a[i, k] * b[k];
return result;
}
public double[,] inverse_matrix(double[,] hhh)
{ //'единичная матрица
// h = 3; //активаровать для проверки. результат найдите тут: http://matrixcalc.org/
int h = hhh.GetLength(0);
double[,] ggg = new double[h, h];// единичная матрица
// Dim A_edin(k + 1, k + 1) As Double 'затем она перейдёт в обратную
for (int i = 0; i < h; )
{
for (int j = 0; j < h; )
{
if (i == j)
{ ggg[i, j] = 1; }
else
{ ggg[i, j] = 0; }
j++;
}
i++;
}
for (int i = 0; i < h; i++)
{
// normalizing row (making first element =1)
double tmp = hhh[i, i];
for (int j = h - 1; j >= 0; j--)
{
ggg[i, j] /= tmp;
hhh[i, j] /= tmp;
}
// excluding i-th element from each row except i-th one
for (int j = 0; j < h; j++)
if (j != i)
{
tmp = hhh[j, i];
for (int k = h - 1; k >= 0; k--)
{
ggg[j, k] -= ggg[i, k] * tmp;
hhh[j, k] -= hhh[i, k] * tmp;
}
}
}
// now e contains inverted matrix so we need only to copy e to matrix
for (int i = 0; i < h; i++)
for (int j = 0; j < h; j++)
hhh[i, j] = ggg[i, j];
return hhh;
}
public string Lis (DataSet data, double pr)
{
double obor_capital = (double)data.Tables["XLData2"].Rows[0][2] - (double)data.Tables["XLData2"].Rows[0][5];
double x1 = obor_capital / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);
double x2 = (double)data.Tables["XLData2"].Rows[0][9] / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);
double x3 = pr / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);
double x4 = (double)data.Tables["XLData2"].Rows[0][3] / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);
double lis = Math.Round(0.063 * x1 + 0.092 * x2 + 0.057 * x3 + 0.001 * x4, 4);
string inter = "";
if (lis > 0.037) inter = " - низкая вероятность";
else inter = "- высокая вероятность";
string result = "расчетный показатель = " + lis.ToString() + inter;
return result;
}
public string Sprin(DataSet data, double tek)
{
double obor_capital = (double)data.Tables["XLData2"].Rows[0][2] - (double)data.Tables["XLData2"].Rows[0][5];
double x1 = obor_capital / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);
double x2 = (double)data.Tables["XLData2"].Rows[0][8] / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);
double x3 = (double)data.Tables["XLData2"].Rows[0][9] / tek;
double x4 = (double)data.Tables["XLData2"].Rows[0][6] / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);
double spr = Math.Round(1.03 * x1 + 3.07 * x2 + 0.66 * x3 + 0.4 * x4, 4);
string inter = "";
if (spr > 0.862) inter = " - низкая вероятность";
else inter = "- высокая вероятность";
string result = "расчетный показатель = " + spr.ToString() + inter;
return result;
}
public string Dav (DataSet data, double sr_act, double zat)
{
double obor_capital = (double)data.Tables["XLData2"].Rows[0][2] - (double)data.Tables["XLData2"].Rows[0][5];
double x1 = obor_capital / ((double)data.Tables["XLData2"].Rows[0][1] + (double)data.Tables["XLData2"].Rows[0][2]);
double x2 = (double)data.Tables["XLData2"].Rows[0][10] / (double)data.Tables["XLData2"].Rows[0][3];
double x3 = (double)data.Tables["XLData2"].Rows[0][6] / sr_act;
double x4 = (double)data.Tables["XLData2"].Rows[0][10] / zat;
double dav = Math.Round(8.38 * x1 + x2 + 0.054 * x3 + 0.063 * x4, 4);
string inter = "";
if (dav > 0.42) inter = " - вероятность банкротства меньше 10%";
else if (dav > 0.32) inter = "- вероятность банкротства от 10% до 35%";
else if (dav > 0.18) inter = "- вероятность банкротства от 35% до 50%";
else if (dav > 0) inter = "- вероятность банкротства от 60% до 80%";
else inter = "- вероятность банкротства от 90% до 100%";
string result = "расчетный показатель = " + dav.ToString() + inter;
return result;
}
public string Say(DataSet data, double sr_act, double tek)
{
double x1 = (double)data.Tables["XLData2"].Rows[0][3] / (double)data.Tables["XLData2"].Rows[0][2];
double x2 = (double)data.Tables["XLData2"].Rows[0][2] / tek;
double x3 = (double)data.Tables["XLData2"].Rows[0][6] / sr_act;
double x4 = (double)data.Tables["XLData2"].Rows[0][8] / (double)data.Tables["XLData2"].Rows[0][6];
double x5 = (double)data.Tables["XLData2"].Rows[0][10] / (double)data.Tables["XLData2"].Rows[0][3];
double say = Math.Round(2 * x1 + 0.1 * x2 + 0.08 * x3 + 0.045 * x4 + x5, 4);
string inter = "";
if (say >= 1) inter = " - низкая вероятность";
else inter = "- высокая вероятность";
string result = "расчетный показатель = " + say.ToString() + inter;
return result;
}
}
}
Приложение Г. Тесты
Таблица Г.1. Тесты по стратегии черного ящика
Входные данные
Ожидаемый результат
Полученный результат
Тест
Excel-файл с числовыми данными не по шаблону.
Год {2009, 2010, 2011}
1 переменная {23,24,25}
….
Ошибка загрузки
Сообщение «Ошибка: неверных формат заголовков. Заполните данные в подготовленном шаблоне»
+
Excel-файл с числовыми данными по шаблону.
Год {2009, 2010, 2011}
X1 {23,24,25}
….
Загрузка данных, расчет результатов
Значение прогноза коэффициента финансовой стабильности:
по SUR-модели: 0,5112 или 51,12%
по регрессионной модели: 0,4852 или 48,52%
Таблица с данными
+
Excel-файл не с числовыми данными не по шаблону.
Год {2009, 2010, 2011}
1 переменная {23,24,25}
….
Ошибка загрузки
Сообщение «Ошибка: неверных формат данных»
+
Excel-файл не с числовыми данными по шаблону.
Год {2009, 2010, 2011}
X1{23,24,25}
….
Ошибка загрузки
Сообщение «Ошибка: неверных формат данных»
+
Не выбрана ни одна модель:
галочка не проставлена
Ошибка
Сообщение: «Необходимо выбрать хотя бы одно значение»
+
Выбор моделей: модель Лиса
Доступ к вводу верных доп. полей
Доп. поле «Нераспределенная прибыль»
+
Выбор моделей: модель Спрингейта
Доступ к вводу верных доп. полей
Доп. поле «Текущие обязательства»
+
Выбор моделей: модель Давыдовой-Беликова
Доступ к вводу верных доп. полей
Доп. поля «Средняя стоимость активов» и «Затраты компании»
+
Выбор моделей: модель Сайфулина-Кадыкова
Доступ к вводу верных доп. полей
Доп. поля «Средняя стоимость активов» и «Текущие обязательства»
+
Выбор моделей: модель Лиса и модель Спрингейта
Доступ к вводу верных доп. полей
Доп. поля «Нераспределенная прибыль» и «Текущие обязательства»
+
Выбор моделей: модель Лиса, модель Спрингейта и модель Давыдовой-Беликова
Доступ к вводу верных доп. полей
Доп. поля «Нераспределенная прибыль», «Текущие обязательства», «Средняя стоимость активов» и «Затраты компании»
+
Выбор моделей: все модели
Доступ к вводу верных доп. полей
Доп. поля «Нераспределенная прибыль», «Текущие обязательства», «Средняя стоимость активов» и «Затраты компании»
+
Выбор моделей: модель Спрингейта и модель ДавыдовойБеликова
Доступ к вводу верных доп. полей
Доп. поля «Текущие обязательства», «Средняя стоимость активов» и «Затраты компании»
+
Таблица Г.1. Тесты по стратегии черного ящика (продолжение)
Входные данные
Ожидаемый результат
Полученный результат
Тест
Выбор моделей: модель Спрингейта, модель ДавыдовойБеликова и модель Сайфулина-Кадыкова
Доступ к вводу верных доп. полей
Доп. поля «Текущие обязательства», «Средняя стоимость активов» и «Затраты компании»
+
Выбор моделей: модель ДавыдовойБеликова и модель Сайфулина-Кадыкова
Доступ к вводу верных доп. полей
Доп. поля «Текущие обязательства», «Средняя стоимость активов» и «Затраты компании»
+
Ввод не числовых дополнительных данных: раыарворлвы
Ошибка ввода
Блокировка ввода
+
Ввод слишком больших числовых значений: 4342354354355345435435435435455
Ошибка ввода
Блокировка ввода по истечению лимита символов
+
Ввод десятичных значений через запятую:
Нераспределенная прибыль: 10,2
Загрузка данных
Вероятность банкроства компании: