Skip to content

Instantly share code, notes, and snippets.

@mgechev
Created March 29, 2011 10:51
Show Gist options
  • Save mgechev/892158 to your computer and use it in GitHub Desktop.
Save mgechev/892158 to your computer and use it in GitHub Desktop.
Statistics - 29.03.2011
smokes = c("Y", "N", "N", "Y", "N", "Y", "Y", "Y", "N", "Y");
amount = c(1, 2, 2, 3, 3, 1, 2, 1, 3, 2);
table(smokes, amount);
tmp = table(smokes, amount); #записва таблицата
old.digits = options("digits"); #запазва броят на цифрите
options(digit=3); #само три знака след десетичната запетая
prop.table(tmp, 1); #сумата по редове да е 1
prop.table(tmp, 2) #сумата по стълбове да е 1
prop.table(tmp) #сумата на всички да е 1
options(digit=old.digits); #връща старата сума
barplot(table(smokes, amount));
barplot(table(amount, smokes));
smokes = factor(smokes);
barplot(table(smokes, amount),
beside = TRUE, #поставя ги едно до друго
ledend.text = T); #добавя легенда
barplot(table(amount, smokes),
main = "table(amount, smokes)",
beside = TRUE,
legend.text = c("less than 5", "5-10", "more than 10"));
prop = function(x) #дава x/sum(x)
apply(x, 2, prop) #по колони
#apply(x, 1, prop) по редове
#Тест за лекарство
#разделяме групите, които са го използвали на 2 групи
#експериментална и контролна група
#Експериментална: 5,5,5,13,7,11,11,9,8,9
#Контролна: 11,8,4,5,9,5,10,5,4,10
x = c(5, 5, 5, 13, 7, 11, 11, 9, 8, 9);
y = c(11, 8, 4, 5, 9, 5, 10, 5, 4, 10);
boxplot(x, y);
# Друг начин за въвеждане на данните
#
# amount = scan()
# ...
# category = scan()
# ...
boxplot(x~y)
###########################################################################
################################### НЕ РАБОТИ #############################
###########################################################################
library("UsingR");
data(home);
attach(home);
boxplot(scale(old), scale(new)); #прави boxplot, след като оразмерява всички
detach(home);
names(home);
scale() #поставя двете променливи в една и съща скала,
#стават по-лесни за сравняване
#dotplots/stripcharts
stripcharts(scale(old), scale(new));
#density; сравнява формите на разпределение на една и съща графика
simple.violinplot(scale(old), scale(new)); #сравняваме честоти
scatterplots
data(home);
plot(old, new);
detach(home)
#графиката е нарисувана от цялото множество данни
data(homedata)
attach(homedata)
plot(old, new)
detach(homedata)
###########################################################################
x=1:2
y=c(2, n)
df = data.frame(x=x, y=y)
ls() #изобразява всички познати променливи
rm(y) #изтрива y променливата
attach(df)
ls() #y е видима, но не се показва
ls(pos=2) #y е на второ място от attach-ването
y #видима е защото df е attached
x
x = c(1,3) #задаваме x
df
detach(df)
x #показва истинската променлива x
y #изписва грешка - y not found (404) ^^
###########################################################################
############################# Линейна регресия ############################
###########################################################################
#
# Съставя права, която спомага за предсказване на стойността на y
# за известни x.
#
# x - нещо, което контролираме
# y - нещо, което мерим
#
# y = b0 + b1*x - линейна регресия
# y = a + bx
#
# всяко xi => yi = b0 + b1*xi
# yi - оразмерената стойност
# b0 и b1 се намират чрез метода на най-малките квадрати
#
# Sum(1, n)[yi - Yi]^2 - МНМК
#
# b1 = Sxy/Sx^2 = Sum[(xi - x_)*(yi - y_)] / Sum[(xi-x_)^2]
# b0 = y_ - b1*x_
#
###########################################################################
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment