R语言基本数据分析

2024-05-13

1. R语言基本数据分析

R语言基本数据分析
本文基于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., 维他命对猪的体重有影响。

R语言基本数据分析

2. 网络数据的统计分析-R语言实战

 资料:《Statistical Analysis of Network Data with R》
   语言R常见的网络分析包:
   网络分析研究大部分是描述性的工作。   网络的可视化 即是一门艺术,也是一门科学。
   三元闭包体现了社会网络的“传递性”(transitivity),枚举所有节点三元组中构成三角形的比值来表征。
   网络的可视化和数值特征化是网络分析的首要步骤之一。   网络可视化视图将数据的多个重要反面整合在一个图表中。
                                           该节点在多大程度上会与同类型或者不同类型的其他节点进行匹配,可以通过一种相关性统计量(所谓的同配系数)进行量化。
   将复杂系统中感兴趣的问题与合适的网络概括性度量匹配起来,是网络特征化方法起作用的关键所在。
   网络中的频繁子图模式
    网络聚类系数的分布,用来检验社会网路的聚集性上 
   sand安装包   网络数据统计分析 statistical analysis of network data   在CRAN上
   G=(V,E)   节点 :vertices 或者 nodes   边:edges 或者 links   节点数量:图的阶数 order   边的数量:图的规模 size
   同构图 isomorphic
   无向 undirected   有向 directed graph 或者 digraph   边:有向边 directed edges 或 弧 arcs   双向 mutual
   小的图形用 formulate来创建
                                                                                                                                                                                                                                                                                                                                                                           把mg转化为wg2
                                                                                                                                                                                                                                                                                                                                   Zachary 空手道俱乐部网络 (karate club network)   数据集合实际上只存在两个社团,分别以教练为中心和以主管为中心。
                                                                                   Lazega律师网络可视化
                                           srt() 不能用使用 upgrade_graph()d代替
                                           DrL算法,针对大型网络可视化设计的布局算法。
                                           节点的节点,即社区节点(主题节点)
                                           即一个中心节点,一其直接相连的邻居,以及这些节点至今的边。
                                                                                                                                                                   度值不同的节点以何种方式彼此连接
                                                                                                                                                                   图的密度
   全局聚类系数
   局部聚类系数
   互惠性 reciprocity   二元组普查

3. R语言之实战分析

 采编自 DataMiningWithR 
   
                                                                                   
    2.1 观察各个变量数据的规范性    几乎每个变量都有异常值存在,多是异常大值
                                            2.2 观察变量间的相关性 
                                                                                    2.3 双变量间的相关性    由上可知,"oPO4"和"PO4"高度相关,达到0.91
                                            2.4 观察单个变量的数据分布情况 
                                                                                                                           左图可明显判断异常值的存在,右图可展现数据在不同范围内的分布集中度
                                                                                    3.1 了解缺失值的基本分布情况 
                                            3.2 直接删除缺失值,在缺失值占比很少的情况采用 
    3.3 基于一定的规则填充缺失值 
    4.1 数据准备和聚类预览 
   初步判断,可分为4组
                                            4.2 层次聚类 
                                            4.3 kmeans均值聚类 (1) 
                                            4.3 kmeans均值聚类 (2) 
                                            4.1 盖帽法处理异常值    即分别设定数据的上下限,高于上限的用上限替换,低于下限的用下限替换
    4.2 盖帽法处理异常值后重现考察数据的分布情况 

R语言之实战分析

4. 《R语言实战》自学笔记5-数据框

 数据框(data.frame)是R中最常处理的数据结构。   函数:data.frame(col1,col2,col3,....,row.name=NULL, check.rows = FALSE, check.names=TRUE, stringsAsFactors = default.stringsAsFactors())
   其中的列向量col1, col2, col3,...可为任何类型(如字符型、数值型或逻辑型),每一列的名称可由函数names指定;   row.name用于指定各行(样本)的名称,默认没有名称,使用从1开始自增的序列来标识每一行;   check.rows用于用来检查行的名称和数量是否一致,默认为FALSE;   check.names来检查变量(列)的名称是否唯一且符合语法,默认为TRUE;   stringsAsFactors用来描述是否将字符型向量自动转换为因子,默认转换,若不改变的话使用stringsAsFactors = FALSE来指定即可。   每一列数据的模式必须唯一,不过你却可以将多个模式的不同列放到一起组成数据框。
   先构建向量,再组成数据框。
                                           直接用data.frame函数构建数据框。
                                           R语言的下标索引是从1开始的,且下标索引为负数的话表示删除某个元素。   [] 可进行索引,括号内对应的是[行下标, 列下标]。
                                           [1] 1 2 3 4 5 6 7 8
   [1] "four"
                                                                                                                           [1] 1 2 3 4 5 6 7 8
                                           [1] "four"
                                           [1] 1 2 3 4 5 6 7 8
                                                                                   [1] "one"   "two"   "three"
                                                                                                                           attach、detach和with()   函数attach()可将数据框添加到R的搜索路径中。   函数detach()将数据框从搜索路径中移除。   函数attach()和detach()最好在你分析一个单独的数据框,并且不太可能有多个同名对象时使用。   with()就是把所有操作都限制在数据框上。
   The following objects are masked  by  .GlobalEnv:
   [1] 1 2 3 4 5 6 7 8
                                                                                   [1] "n1" "n2" "n3" "n4" "n5" "n6" "n7" "n8"
                                                                                                                                                                                                                                                   [1] 8
   [1] 3
   [1] 8
   [1] "name"    "values"  "values2"
   [1] "r1" "r2" "r3" "r4" "r5" "r6" "r7" "r8"
   [1] 8 3
                                           [1] "data.frame"
   [1] "numeric"
   [1] "character"
   Length:8           Min.   :1.00   Min.   :1.00   Class :character   1st Qu.:2.75   1st Qu.:2.75   Mode  :character   Median :4.50   Median :4.50   Mean   :4.50   Mean   :4.50   3rd Qu.:6.25   3rd Qu.:6.25   Max.   :8.00   Max.   :8.00
   [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

5. 《R语言实战》自学笔记22-数据整理

  数据准备 
   向一个数值型向量中添加一个字符串会将此向量中的所有元素转换为字符型。   is.datatype()用于判断数据类型,返回值为TRUE或FALSE,常见类型包括数值型numeric、字符型character、逻辑型logical、数据框data.frame等。  as.datatype()可将数据类型进行转化。   
                                           
   查看数据类型:mode(), class(), typeof(), storage.mode()   逻辑值转换成数值时,TRUE转换成1,FALSE转换成0。
   函数:order(x,decreasing=F,na.last=NA)   x是要排序的数据,可以是数据框也可以是向量,decreasing=F是默认升序,在排序变量前加一个减号可得到降序排序结果,na.last =NA表示将NA元素移到最后,否则,将NA放在第一个。
   函数:cbind(A, B) ,不需要指定一个公共索引对数据框进行合并。   cbind:根据列进行合并,即叠加所有列,m列的矩阵与n列的矩阵cbind()最后变成m+n列,合并前提:cbind(a, c)中矩阵a、c的行数必需相符。
   merge(A, B) :横向合并两个数据框(数据集),在多数情况下,两个数据框是通过一个或多个共有变量进行联结的(即一种内联结,inner join)。
   rbind(A, B) :纵向合并两个数据框(数据集),两个数据框必须拥有相同的变量,不过它们的顺序不必一定相同。   rbind:根据行进行合并,就是行的叠加,m行的矩阵与n行的矩阵rbind()最后变成m+n行,合并前提:rbind(a, c)中矩阵a、c的列数必需相符。
   函数:dataframe[row indices, column indices] dataframe为要索引的数据框,[]中,前面的是行,后面是列。
   在某一列或行的下标之前加一个减号(-)就会剔除那一列或行。
   subset(x, subset, select, drop = FALSE, ...)   x是要进行操作的数据框,subset是对数据的某些字段进行操作,select是选取要显示的字段。
   sample(x, size, replace = FALSE, prob = NULL)   x表示所要抽样数据,size表示抽样元素个数,replace为T表示采取有重复的抽样,prob用于指定抽样的概率。
   参考资料:

《R语言实战》自学笔记22-数据整理

6. R语言与统计分析的介绍

《R语言与统计分析》以数据的常用统计分析方法为基础,在简明扼要地阐述统计学基本概念、基本思想与基本方法的基础上,讲述与之相对应的R函数的实现,并通过具体的例子说明统计问题求解的过程。《R语言与统计分析》注重统计的思想性、方法的实用性和计算的可操作性。

7. R语言与统计分析的内容简介

《R语言与统计分析》在内容的安排上不仅包含了基础统计分析中的探索性数据分析、参数估计与假设检验,还包括了非参数统计分析的常用方法、多元统计分析方法及贝叶斯统计分析方法。每一部分都通过具体例子重点讲述解决问题的思想、方法和在R中的实现过程。

R语言与统计分析的内容简介

8. R语言对应分析

 @[toc]
   Q型分析:样本之间的关系(聚类算法等)   R型分析:变量之间的关系(主成分分析、因子分析等)。   有时候我们不仅要弄清样本之间和变量之间的关系,还要弄清 样本与变量之间的关系 ,而对应分析就是这样一种分析方法。(变量就是指特征)
   对应分析为我们可以提供三个方面的信息
   上述三方面信息都可以通过二维图呈现出来
   当对两个分类变量进行的对应分析称为 简单对应分析 ;   对两个以上的分类变量进行的对应分析称为 多重对应分析 。
   对应分析将变量及变量之间的联系同时反映在一张二维或三维的散点图上,并使联系密切的类别点较集中,联系疏远的类别点较分散;通过观察对应分布图就能直观地把握变量类别之间的联系。
    对于该方法,在减少维度方面与因子分析相似,在作分布图方面与多维尺度方法相似。 
   在对数据作对应分析之前,需要先了解因素间是否独立。如果因素之间相互独立,则没有必要进行对应分析,当因素间在统计学上具有显著的关联性时,在此基础上使用对应分析方法,其分析结果才具有意义。
   p-value < 0.001,两组变量显著不独立,说明具有相关性。
最新文章
热门文章
推荐阅读