Скачиваний:
0
Добавлен:
06.02.2025
Размер:
809.22 Кб
Скачать

Федеральное государственное автономное образовательное учреждение высшего образования «Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»

им. В.И. Ульянова (Ленина)»

Кафедра биотехнических систем

ОТЧЕТ

по лабораторной работе №1

по дисциплине «Моделирование биологических процессов и систем»

ТЕМА: ПРОСТАЯ ЛИНЕЙНАЯ РЕГРЕССИЯ

Вариант 1

Студентки гр. 0501

________________

Слободина Ю.А

 

________________

 

Преподаватель

 

Тероева Ю. А.

 

 

 

Санкт-Петербург

2023

1

ЛАБОРАТОРНАЯ РАБОТА № 2

ПРОСТАЯ ЛИНЕЙНАЯ РЕГРЕССИЯ

Цель работы: исследовать свойства модели простой линейной регрес-

сии.

Задачи: написать код, построить графики.

Основные теоретические положения

Простая ЛР используется для установления зависимости между двумя непрерывными переменными. Одна переменная считается предиктором или независимой переменной, другая – целевой или зависимой переменной.

Формула модели линейной регрессии представлена на рисунке 1.

Рисунок 1 – Модель линейной регрессии Данная модель может быть применена только в случае, если между пе-

ременными существует линейная зависимость. Ошибки регрессии можно представить как «неучтенные факторы», влияющие на Y помимо фактора X.

Таким образом, уравнение регрессии отражает представления о характере за-

висимости между факторами.

Относительно ошибок регрессии будем предполагать выполнения сле-

дующих условий, называемых иногда условиями Гаусса – Маркова.

1. E(εi) = 0, i = 1, . . . , n – среднее значение ошибки равно нулю, т.е.

ошибки регрессии несистематические);

2.var(εi) = σ2 – дисперсия постоянная и не зависит от i;

3.cov(εi, εj ) = 0 при i ≠ j - некоррелируемость ошибок для разных наблю-

дений;

2

4. εi N (0, σ2), i = 1, . . . , n - нормальная распределенность ошибок регрессии.

Пусть есть выборка, состоящая из пар значений предиктора и целевой переменной, X и Y соответственно. При расчету уравнения регрессионной прямой необходимо найти такое положение этой прямой, которое даст наименьшее значение отклонения этой прямой от точек, т.е. минимизировать ошибку. С вероятностной точки зрения, в случае нормального распределения выборочных данных «наилучшими вероятностными и статистическими свой-

ствами» обладают оценки параметров прямой, полученным минимизацией суммы квадратов отклонений. Этот метод получения оценок параметров опти-

мальной прямой называется Методом Наименьших Квадратов (сокращенно МНК) или Ordinary Least Squares (сокращенно OLS), а полученные оценки па-

раметров называются МНКили OLS-оценками.

Коэффициенты прямой могут быть определены по формулам:

,

(1)

 

 

 

(2)

,

 

 

 

где ̅̅̅– среднее значение произведений пар (x, y), ̅– среднее значение пре-

диктора, ̅– среднее значение целевой переменной.

Разность между действительным значением и предсказанным называют остатком или отклонением

= − ̂.

(3)

 

Можно считать, что остатки в некотором смысле «моделируют» ошибки регрессии и «наследуют» их свойства.

Величина RSS называется остаточной суммой квадратов (residual sum of squares) в модели регрессии. Это и есть суммарная ошибка регрессии. Фор-

мула расчета:

3

. (4)

Величина SSE называется суммой квадратов ошибки. Она показывает степень варьирования целевого значения вокруг линии регрессии. Формула расчета следующая:

. (5)

Величина SST называется общей суммой квадратов. Она дает информа-

цию о том, насколько далеко распределенные значения находятся от простого среднего выборочного. Формула расчета следующая:

. (6)

Коэффициент детерминации 2 отражает качество модели и определя-

ется через остаточную сумму квадратов и общую дисперсию , таким обра-

зом выражая, какая доля дисперсии целевой переменной может быть объяс-

нена предиктором. Формула расчёта:

. (7)

Для получения качественных оценок параметров уравнения регрессии необходимо следить за выполнимостью предпосылок МНК. Применяя МНК мы предполагаем, что остатки εi подчиняются условиям Гаусса-Маркова, дан-

ное предположение необходимо проверить, после построения уравнения ре-

грессии.

4

Использование графического представления отклонений позволяет определиться с наличием гетероскедастичности. В этом случае по оси абсцисс откладываются значения объясняющей переменной Х (либо линейной комби-

нации объясняющих переменных , а по оси ординат либо отклонения , либо их квадраты . Если все отклонения нахо-

дятся внутри полуполосы постоянной ширины, параллельной оси абсцисс, то это говорит о независимости дисперсий от значений переменной Х и их посто-

янстве, т.е. в этом случае выполняются условия гомоскедастичности.

При использовании теста ранговой корреляции Спирмена предполага-

ется, что дисперсия отклонения будет либо увеличиваться, либо уменьшаться с увеличением значений Х. Поэтому для регрессии, построенной по МНК, аб-

солютные величины отклонений и значения случайной величины Х будут кор-

релированы. Значения ранжируются (упорядочиваются по величинам). Затем определяется коэффициент ранговой корреляции:

.

где –разность между рангами, n – число наблюдений.

Статистика имеет распределение Стьюдента и находится по формуле

.

(8)

(9)

Доказано, что если коэффициент корреляции для генеральной совокуп-

ности равен нулю, то статистика имеет распределение Стьюдента с числом степеней свободы .

Следовательно, если наблюдаемое значение статистики, вычисленное по формуле (8), превышает (определяемое по таблице критических то-

чек распределения Стьюдента), то необходимо отклонить гипотезу о

5

равенстве нулю коэффициента корреляции, а следовательно, и об отсутствии гетероскедастичности. В противном случае гипотеза об отсутствии гетеро-

скедастичности принимается.

В тесте Гольдфельда-Квандта также предполагается, что стандартное от-

клонение пропорционально значению переменной Х в этом наблю-

дении, т.е. . Предполагается, что имеет нормальное рас-

пределение и отсутствует автокорреляция остатков.

Тест Гольдфельда-Квандта состоит в следующем:

1.Все наблюдений упорядочиваются по величине Х.

2.Вся упорядоченная выборка после этого разбивается на три под-

выборки размерностей соответственно.

3.Оцениваются отдельные регрессии для первой подвыборки (пер-

вых наблюдений) и для третьей подвыборки ( последних наблюдений). Если предположение о пропорциональности дисперсий отклонений значениям Х верно, то дисперсия регрессии по первой подвыборке (сумма квадратов откло-

нений ) будет существенно меньше дисперсии регрессии по третьей

подвыборке (суммы квадратов отклонений ).

4.Для сравнения соответствующих дисперсий строится следующая -

статистика:

 

 

 

.

(10)

Здесь

- число степеней свободы соответствующих выбороч-

ных дисперсий ( - количество объясняющих переменных в уравнении ре-

грессии).

При сделанных предположениях относительно случайных отклонений построенная статистика имеет распределение Фишера с числами степеней сво-

боды

.

 

6

5.Если , то гипотеза об отсутствии гетеро-

скедастичности отклоняется (здесь α - выбранный уровень значимости).

Естественным является вопрос: какими должны быть размеры подвыбо-

рок для принятия обоснованных решений? Для парной регрессии Гольдфельд и Квандт предлагают следующие пропорции: .

Этот же тест может быть использован при предположении об обратной пропорциональности между и значениями объясняющей переменной. При этом статистика Фишера примет вид: .

7

ПОЛНЫЙ КОД ПРОГРАММЫ

using CSV

using DataFrames using Statistics using Plots

var = 1

dfA = CSV.read("A_$var.csv", DataFrame) name = "A"

#dfA = CSV.read("B_$var.csv", DataFrame) #name = "B"

function ols_coeff(x::Vector, y::Vector) #вычисление коэффициентов регрессии mean_x = mean(x)

mean_y = mean(y) mean_x_square = mean(x.*x) mean_xy = mean(x.*y)

b1 = (mean_xy - mean_x*mean_y)/(mean_x_square - mean_x*mean_x) b0 = mean_y - b1*mean_x

return b0, b1

end

function parametres_of_model(x::Vector, y::Vector) #вычисление параметров модели SSR, SSE, SSTO, R_square = 0, 0, 0, 0

residuals, var = [], [] y_mean = mean(y)

(b0, b1) = ols_coeff(x, y) y_model = x.*b1.+b0

residuals = y.-y_model #остатки

var = residuals.*residuals #остатки в квадрате

SSR = sum((residuals.- y_mean).*(residuals.- y_mean)) #регрессия суммы квад-

ратов

SSE = sum(var) #суммарная ошибка регрессии

SSTO = sum((y.- y_mean).*(y.- y_mean)) #общая дисперсия

R_square = 1 - SSE/SSTO #коэффициент детерминации

return y_model, residuals, var, round(SSR,digits = 3), round(SSE, digits = 3), round(SSTO,digits = 3), round(R_square,digits = 3)

end

function Goldfeld_Quandt_test(data::DataFrame) #тест Голдфелда-Квандта data_sort = sort(data, :x)

k = 25 # число элементов в каждой выборке sample_1 = first(data_sort, k) #первая выборка sample_2 = last(data_sort, k) #вторая выборка

b0_1, b1_1 = ols_coeff(sample_1.x, sample_1.y) #расчет коэффициентов

8

b0_2, b1_2 = ols_coeff(sample_2.x, sample_2.y) y_model_1 = b0_1.+sample_1.x.*b1_1

y_model_2 = b0_2.+sample_2.x.*b1_2

er_1 = sample_1.y.-y_model_1 #ошибки первой выборки er_2 = sample_2.y.-y_model_2

SSE_1 = sum(er_1.^2) #суммарная ошибка регрессии для первой вбыорки

SSE_2 = sum(er_2.^2)

F = SSE_2/SSE_1#вычисление F

return (k, round(F, digits = 4))

end

function Spirmen_test(x::Vector, er::Vector) #вычислении коэфф. ранг. корр. Спир-

мена

er = abs.(er)

x_sort = sort(x) # сортировка er_sort = sort(er)

rang_x, rang_er = [], [] n = length(x)

for item in x #сопоставление элементу из начального вектора его индекса в сортированном,

#это и будет его ранг

# !!! предполагаем, что одинаковых значений в векторе нет rang = indexin(item, x_sort)

append!(rang_x, rang) # добавление индекса/ранга в соотвествующий вектор

end

for item in er

rang = indexin(item, er_sort) append!(rang_er, rang)

end

r_Spirmen = 1 - 6*(sum((rang_x.-rang_er).^2))/(n^3-n) #вычисление статистики t = r_Spirmen*sqrt(n-2)/sqrt(1-r_Spirmen^2) #вычисление её t-критерия

return t, r_Spirmen end

y_model, er, var, SSR, SSE, SSTO, R_square = parametres_of_model(dfA.x, dfA.y)

println(Spirmen_test(dfA.x, er)) println(Goldfeld_Quandt_test(dfA))

p1 = scatter(dfA.x, dfA.y, label = "исходные данные", xlabel = "x", ylabel = "y", title = "Выборка $name")

plot!(dfA.x, y_model, label = "модель", annotate = [

9

(-2.5, 1, text("SSR = $SSR", 7, :left)), (-2.5, 0.7, text("SSE = $SSE", 7, :left)), (-2.5, 0.4, text("SSTO = $SSTO", 7, :left)), (-2.5, 0.1, text("R^2 = $R_square", 7, :left)),

]

)

p2 = scatter(dfA.x, er, xlabel = "x", ylabel = "ошибка регрессии", title = "Ошибка регрессии $name", legend = false)

p3 = scatter(dfA.x, var, xlabel = "x", ylabel = "дисперсия регрессии", title = "Дисперсия регрессии $name", legend = false)

p4 = histogram(er, title = "Распределение остатков $name", legend = false) xlims!(minimum(er)*1.2, maximum(er)*1.2)

plot(p1) savefig("sample_$name.png")

plot(p2) savefig("er_$name.png")

plot(p3) savefig("var_$name.png")

plot(p4) savefig("hist_$name.png")

10

Соседние файлы в предмете Моделирование биологических процессов и сетей