R语言 基本数据分析
来源:互联网 发布:淘宝云客服一个月多少 编辑:程序博客网 时间:2024/03/29 23:12
原文地址:http://blog.csdn.net/abcjennifer/article/details/18997587
本文基于R语言进行基本数据统计分析,包括基本作图,线性拟合,逻辑回归,bootstrap采样和Anova方差分析的实现及应用。
不多说,直接上代码,代码中有注释。
1. 基本作图(盒图,qq图)
- #basic plot
- boxplot(x)
- qqplot(x,y)
2. 线性拟合
- #linear regression
- n = 10
- x1 = rnorm(n)#variable 1
- x2 = rnorm(n)#variable 2
- y = rnorm(n)*3
- mod = lm(y~x1+x2)
- model.matrix(mod) #erect the matrix of mod
- plot(mod) #plot residual and fitted of the solution, Q-Q plot and cook distance
- summary(mod) #get the statistic information of the model
- hatvalues(mod) #very important, for abnormal sample detection
3. 逻辑回归
- #logistic regression
- x <- c(0, 1, 2, 3, 4, 5)
- y <- c(0, 9, 21, 47, 60, 63) # the number of successes
- n <- 70 #the number of trails
- z <- n - y #the number of failures
- b <- cbind(y, z) # column bind
- fitx <- glm(b~x,family = binomial) # a particular type of generalized linear model
- print(fitx)
- plot(x,y,xlim=c(0,5),ylim=c(0,65)) #plot the points (x,y)
- beta0 <- fitx$coef[1]
- beta1 <- fitx$coef[2]
- fn <- function(x) n*exp(beta0+beta1*x)/(1+exp(beta0+beta1*x))
- par(new=T)
- curve(fn,0,5,ylim=c(0,60)) # plot the logistic regression curve
3. Bootstrap采样
- # bootstrap
- # Application: 随机采样,获取最大eigenvalue占所有eigenvalue和之比,并画图显示distribution
- dat = matrix(rnorm(100*5),100,5)
- no.samples = 200 #sample 200 times
- # theta = matrix(rep(0,no.samples*5),no.samples,5)
- theta =rep(0,no.samples*5);
- for (i in 1:no.samples)
- {
- j = sample(1:100,100,replace = TRUE)#get 100 samples each time
- datrnd = dat[j,]; #select one row each time
- lambda = princomp(datrnd)$sdev^2; #get eigenvalues
- # theta[i,] = lambda;
- theta[i] = lambda[1]/sum(lambda); #plot the ratio of the biggest eigenvalue
- }
- # hist(theta[1,]) #plot the histogram of the first(biggest) eigenvalue
- hist(theta); #plot the percentage distribution of the biggest eigenvalue
- sd(theta)#standard deviation of theta
- #上面注释掉的语句,可以全部去掉注释并将其下一条语句注释掉,完成画最大eigenvalue分布的功能
4. ANOVA方差分析
- #Application:判断一个自变量是否有影响 (假设我们喂3种维他命给3头猪,想看喂维他命有没有用)
- #
- y = rnorm(9); #weight gain by pig(Yij, i is the treatment, j is the pig_id), 一般由用户自行输入
- #y = matrix(c(1,10,1,2,10,2,1,9,1),9,1)
- Treatment <- factor(c(1,2,3,1,2,3,1,2,3)) #each {1,2,3} is a group
- mod = lm(y~Treatment) #linear regression
- print(anova(mod))
- #解释:Df(degree of freedom)
- #Sum Sq: deviance (within groups, and residuals) 总偏差和
- # Mean Sq: variance (within groups, and residuals) 平均方差和
- # compare the contribution given by Treatment and Residual
- #F value: Mean Sq(Treatment)/Mean Sq(Residuals)
- #Pr(>F): p-value. 根据p-value决定是否接受Hypothesis H0:多个样本总体均数相等(检验水准为0.05)
- qqnorm(mod$residual) #plot the residual approximated by mod
- #如果qqnorm of residual像一条直线,说明residual符合正态分布,也就是说Treatment带来的contribution很小,也就是说Treatment无法带来收益(多喂维他命少喂维他命没区别)
如下面两图分别是
(左)用 y = matrix(c(1,10,1,2,10,2,1,9,1),9,1)和
(右)y = rnorm(9);
的结果。可见如果给定猪吃维他命2后体重特别突出的数据结果后,qq图种residual不在是一条直线,换句话说residual不再符合正态分布,i.e., 维他命对猪的体重有影响。
0 0
- R语言 基本数据分析
- R语言 基本数据分析
- R语言 基本数据分析
- R语言 基本数据分析
- R语言 基本数据分析
- R语言案例分析:多元数据的基本统计分析
- R语言数据基本管理
- R与数据分析学习总结之一:R语言基本操作
- R语言数据分析基础
- R语言数据分析基础
- R语言网络数据分析
- R语言--股票数据分析
- 【R语言 数据分析】R语言获取Excel数据
- R语言数据统计分析的基本函数
- R语言系列:数据的基本运算
- R语言系列:数据的基本运算
- R语言对数据的基本管理
- R语言数据基本类型与操作
- ftp服务器相关
- 心若天地宽,放眼尽欢颜
- 基于Grunt&mocha JavaScript自动化测试框架的实践
- stdin,stdout 和STDOUT_FILENO,STDIN_FILENO--linux
- [LeetCode] Word Ladder
- R语言 基本数据分析
- C#版本拉格朗日插值算法 — 用于MsChart 绘图控件进行插值算法绘图。
- 一步步学习SPD2010--附录A--SPD工作流条件和操作(6)--任务操作
- jsp在线聊天
- Android TraceView工具使用
- Oracle Data Guard 零停机数据库维护
- 《代码重构 可以这么简单》 一 什么是不好的代码
- java中static作用详解
- Android sharepreference 简单的使用