Skip to content

Instantly share code, notes, and snippets.

@mgechev
Created April 5, 2011 09:46
Show Gist options
  • Save mgechev/903347 to your computer and use it in GitHub Desktop.
Save mgechev/903347 to your computer and use it in GitHub Desktop.
Statistics - 05.04.2011
#Линейна регресия
#y^ = b0 + b1*x - уравнение на линейната регресия
#ei = yi - (yi^)i
#b1 = Sum((xi - x_)(yi - y_))/(Sum(xi - x_))^2
#b0 = y_ - b1*x
#Намират се чрез метода на най-малките квадрати
#Sum(1,n,(yi - (y^)i));
#(y^) - y колибка
#y_ - y черта
#y = b0 + h1(x) - x - предиктор
#y - отговаряща променлива (отклик)
#1) Рисува т.
#2) Намира b0 и b1
#3) Добавя регрес. линия
data(home);
attach(home);
x = old;
y = new;
plot(x,y);
abline(lm(y~x)); #чертае регр. права
detach(home);
#Две функции за линейна регресия в R
#lm и simple.lm
#simple.lm дава и коефициентите на регресията ^_^
data(home);
attach(home);
x = old;
y = new;
simple.lm(x, y);
detach(home);
lm.res = simple.lm(x, y); #запазва резултата в lm.res
coef(lm.res); #дава регр. коефициенти
coef(lm.res)[1] #връща само 1-я
coef(lm.res)[2] #връща само 2-я
simple.lm(x,y,show.residuals=TRUE);
# | __
# | / \
# | / \
# | | |
# | / \
# |_/ \_
# |_____________ #Стандартен статистически модел, за хистиграмата
# на остатъците
#последната 4-та графика показва как са разпределени остатъците
lm.res = simple.lm(x,y);
the.residmals = resid(lm.res);
plot(the.residmals);
#графика на минималната регресия +
#графика на остатъците спрямо (y^), но
#без линията y=0;
#Корелация на Pearson:
# R = Sum((xi - x_)(yi - y_))/Sqrt((Sum(xi-x_)^2)*(Sum(yi - y_)^2));
#оразмерената версия на ковар. между X и Y
#cor [-1,1]
#Ако R^2 е близо до 1 => силна мн. връзка
#ако R^2 е близо до 0 => слаба мн. връзка
data(home);
attach(home);
x = old;
y = new;
cor(x, y); #намира R
cor(x, y)^2; #намира R^2
summary(lm(y~x));
rank(c(2,3,5,7,11));
rank(c(5,3,2,7,11));
rank(c(5,5,2,7,5));
#Spearman rank corr
#коеф. на cor спрямо ранговете
cor(rank(x), rank(y)); #Spearman rank cor, ако числото, което получа
#тук е близо до 1 => ф-та е строго растяща, ако е близо до -1, то тя
#е строго намаляваща
data("florida");
names(florida);
attach(florida);
simple.lm(BUSH, BUCHANAN); #двете най-отдалечени точки
#се наричат outline
identify(BUSH, BUCHANAN, n=2); #n = 2, дава 2-те точки, мога да кликна на
#двете най-тдалечени точки
#за да се изключат най-отдалечените точки от данните ще използваме "-"
BUSH[50];
BUCHANAN[50];
BUSH[-50]; #всички без 50-тия елемент
simple.lm(BUSH[-50], BUCHANAN[-50]); #двете най-отдалечени точки
#y^ = 65.57350 + 0.00348x
#y^ = 45.28986 + 0.00492x
#BUSH - 152.846(BUSH[50]) =>
#BUCHANAN: 65.57350 + 0.00348*BUSH[50]
65.57350 + 0.00348*BUSH[50]; #597
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment