From 1fe3bbbe2eef405adb34cb0ef005d3cf3a264458 Mon Sep 17 00:00:00 2001 From: SEK1RO Date: Thu, 25 Dec 2025 14:29:00 +0300 Subject: [PATCH] ds: r7 octave --- ds/25-1/r/6.R | 2 +- ds/25-1/r/7.R | 48 ++ ds/25-1/r/7/ex2.pdf | Bin 0 -> 258794 bytes ds/25-1/r/7/mlclass-ex2/costFunction.m | 30 + ds/25-1/r/7/mlclass-ex2/costFunctionReg.m | 27 + ds/25-1/r/7/mlclass-ex2/ex2.m | 135 ++++ ds/25-1/r/7/mlclass-ex2/ex2_reg.m | 124 +++ ds/25-1/r/7/mlclass-ex2/ex2data1.txt | 100 +++ ds/25-1/r/7/mlclass-ex2/ex2data2.txt | 118 +++ ds/25-1/r/7/mlclass-ex2/mapFeature.m | 21 + ds/25-1/r/7/mlclass-ex2/plotData.m | 27 + .../r/7/mlclass-ex2/plotDecisionBoundary.m | 48 ++ ds/25-1/r/7/mlclass-ex2/predict.m | 23 + ds/25-1/r/7/mlclass-ex2/sigmoid.m | 16 + ds/25-1/r/7/mlclass-ex2/submit.m | 333 ++++++++ ds/25-1/r/7/mlclass-ex2/submitWeb.m | 349 ++++++++ ds/25-1/r/survey.csv | 751 ++++++++++++++++++ 17 files changed, 2151 insertions(+), 1 deletion(-) create mode 100644 ds/25-1/r/7.R create mode 100644 ds/25-1/r/7/ex2.pdf create mode 100644 ds/25-1/r/7/mlclass-ex2/costFunction.m create mode 100644 ds/25-1/r/7/mlclass-ex2/costFunctionReg.m create mode 100644 ds/25-1/r/7/mlclass-ex2/ex2.m create mode 100644 ds/25-1/r/7/mlclass-ex2/ex2_reg.m create mode 100644 ds/25-1/r/7/mlclass-ex2/ex2data1.txt create mode 100644 ds/25-1/r/7/mlclass-ex2/ex2data2.txt create mode 100644 ds/25-1/r/7/mlclass-ex2/mapFeature.m create mode 100644 ds/25-1/r/7/mlclass-ex2/plotData.m create mode 100644 ds/25-1/r/7/mlclass-ex2/plotDecisionBoundary.m create mode 100644 ds/25-1/r/7/mlclass-ex2/predict.m create mode 100644 ds/25-1/r/7/mlclass-ex2/sigmoid.m create mode 100644 ds/25-1/r/7/mlclass-ex2/submit.m create mode 100644 ds/25-1/r/7/mlclass-ex2/submitWeb.m create mode 100644 ds/25-1/r/survey.csv diff --git a/ds/25-1/r/6.R b/ds/25-1/r/6.R index c2dd49a..ddbb585 100644 --- a/ds/25-1/r/6.R +++ b/ds/25-1/r/6.R @@ -24,7 +24,7 @@ summary(lmmod) # mr = sd / sqrt(n): вариация # t = (xm1 - xm2) / sqrt(mr1 ^ 2 + mr2 ^ 2) # f = (n1 + n2) - 2: степень свободы -# p: по таблице: Отличаются с вероятностью ошибки ... +# p = 0,03 probability of obtaining test results at least as extreme as the result actually observed ggplot(df, aes(x = education, y = log_income)) + geom_point() + diff --git a/ds/25-1/r/7.R b/ds/25-1/r/7.R new file mode 100644 index 0000000..4f27def --- /dev/null +++ b/ds/25-1/r/7.R @@ -0,0 +1,48 @@ +setwd('/home/sek1ro/git/public/lab/ds/25-1/r') +survey <- read.csv('survey.csv') + +head(survey) + +survey$price20 <- ifelse(survey$Price == 20, 1, 0) +survey$price30 <- ifelse(survey$Price == 30, 1, 0) +head(survey) + +survey$one <- 1 + +#https://stats.stackexchange.com/questions/48178/how-to-interpret-the-intercept-term-in-a-glm + +model <- glm( + MYDEPV ~ Income + Age + price20 + price30, + binomial(link = "logit"), + survey +) +summary(model) +quantile(residuals(model)) +#https://library.virginia.edu/data/articles/understanding-deviance-residuals +#Residuals are the differences between what we observe and what our model predicts. +#Residuals greater than the absolute value of 3 are in the tails of a standard normal distribution and usually indicate strain in the model. + +beta_income <- coef(model)["Income"] +pct_income <- (exp(beta_income) - 1) * 100 +pct_income + +beta_price30 <- coef(model)["price30"] +pct_price30 <- (exp(beta_price30 * 20) - 1) * 100 +pct_price30 + +survey$odds_ratio <- exp(predict(model)) +survey$prediction <- survey$odds_ratio / (1 + survey$odds_ratio) +head(survey) + +sum(survey$MYDEPV) +sum(survey$prediction) + +new_person <- data.frame( + Income = 58, + Age = 25, + price20 = 1, + price30 = 0 +) + +prob <- predict(model, new_person, type="response") +prob diff --git a/ds/25-1/r/7/ex2.pdf b/ds/25-1/r/7/ex2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..78d3d35b5fdcf9b72e8984c96684a8eb9f817925 GIT binary patch literal 258794 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

CCi~BBp=f9aYHSmP z`?UW%EtnSqFWCH@^sg}GZ`gt%@K(FOsUqb4S<-(GQ{X*p9H8&DdcV~3{pgT_cTRBw zIIa#yfg6_;7Zm=-_e#H?QO>W(<{zpEetPQQw(+Mxzrzt>QGa`}W?tZXwz)hAXgZpv5`nIMsH3rYE znMgk$%kIg3`GMx9n6)p3eUHW++;~;*Bn+%gE^~*d+!z>WsuG(9HR=ueJz>cXHegL0 zw*T6(J;e5yzV6Fmg}z&V>2mEe{ewAk!;;hn{hQo7#KQW1hbJXii$qJdPpg%M_P(0e z4jKEs(y}gGp|on^AAZ!DmI6t|eFdIwRCtN1OW-R1er8NSOEUK1IxS(pbgX3qi7d%M zhGVToO8<5NuWNsJ;qhUAvk-ZUXv`{Yab=s%V5MIL4HF-$&5M;o+$HU;U5_Va?|j}> zPDv@^+61xTXh~_%9!%4gOnlr_yF*n032UC_IPjgheau#tin7~-0AA2V-dF<@8vyhOb|N=4eP7%?9_?p^c3Afefaqq&!q z3WG$*(HCd@<~YziSQY%g^f>8E(Z3|ajYx9IF6OLZf)}U`GNzvxdqy4vNr3p zI|ktT2Tsb3I4T_3px*eP-UiI%^t$ok@Ek@9IU2pPc46mDBUIa0?qZ3Ldr~9{q|M0Q zpgr;{b;fQB)FVaB^{9C!{}^K2APCDg?<3^lL58{07*9A)7d-A%<1IJAa*dmAN_b09P*Wi`+JLQ9CYH}5fZU#4cLe6E7%|AJKbTF zM6xvVD~K4KB4o}skqbn8Dv==0)wsb$SlR^^vx^)Ir`%a9^BzTsCAIb~iv>z6RM?5Y2}cslLn2fZwpC zZd*PIJtfik;SJy!!gJX3_Uj@Ehvw*70-q;Red>qY9aRsJC^*`Lb3<38S1BDlEBjA4 z+C(3#GRDVfyf)o9k$!5cTXvmVfOfZL+V-Y3rBGk5hQ#|| zL2o|E#U%4Ze_%QqW_*sSh%<(cxZ{oFZPi9_!nB&7oh=5?lD6`DzAD?oWZpJkxSMvX zUlk7xU0H?{mU(ls3#8w|jj2Z*9UzC>0iGKFszF9Vo6ir#5CnZT?@~bHC+}vncB&$!=bdz^3Z9}BPtO~?wJwdo+r+vt_x2a44_p7W$epVinam*F^eW+Bm+<)9rt~hQa`wsl}C|~I<-_fr8(VDe5_>eFY-nX$L4YU! zA<7!M(2&uIxsuu*>$~eJU5RMjio_^PmR9t`V@i29KaN4nlS+pUUTN%f1L;&I&ZE%p zPRSq#HM*h!N9j}QJZYO1xERG0sr(Fm*G>}C{t zMv+lZs{6g(t+A&<%E=4f9!m!sEoj@WpgfaUmkP4a(I3W&84b