1.使用ggplot2进行高级绘图
1.在ggplot2中,图是采用串联起来(+)号函数创建的,每个函数属于自己的部分。library(ggplot2)ggplot(data=mtcars,aes(x=wt,y=mpg))+geom_point()++ labs(title="Automobile Data",x="Weight",y="Miles Per Gallon")
注:aes()函数的功能是指定每个变量扮演的角色,在本例中,变量wt的值以映射到沿x轴的距离,变量mpg的值是映射到沿y轴的距离。ggplot() 函数设置图形但没有自己的视觉输出。geom_point() 函数在图形中画点,创建了一个散点图。labs() 函数是添加注释的。
2.
ggplot(data=mtcars,aes(x=wt,y=mpg))+geom_point(pch=17,color="blue",size=2)+geom_smooth(method="lm",color="red",linetype=2)+labs(title="Automobile Data",x="Weight",y="Miles Per Gallon")
注:geom_smooth() 函数增加了一条"平滑"曲线。默认情况下,平滑的曲线包括在95%的置信区间(较暗带)内。
mtcars$am<- factor(mtcars$am,levels=c(0,1),labels=c("Automatic","manual"))mtcars$vs<- factor(mtcars$vs,levels=c(0,1),labels=c("V-Engine","Straight Engine"))> mtcars$cyl<- factor(mtcars$cyl)> library(ggplot2)> ggplot(data=mtcars,aes(x=hp,y=mpg,shape=cyl,color=cyl))++ geom_point(size=3)++ facet_grid(am~vs)++ labs(title="Automobile Data by Engine Type",x="Horsepower",y="Miles Per Gallon")
4.用几何函数指定图的类型
geom_bar() 条形图geom_boxplot() 箱线图geom_density() 密度图geom_histogram() 直方图geom_hline() 水平线geom_jitter() 抖动图geom_line() 线图geom_point() 散点图geom_rug() 地毯图geom_smooth() 拟合曲线geom_text() 文字注释geom_violin() 小提琴图geom_vline() 垂线
5.
6.在R中,组通常用分类变量的水平(因子)来定义。ggplot()声明中的aes()函数负责分配变量(图形的视觉特征),所以这是一个分配分组变量的自然的地方。data(Salaries,package="car")library(ggplot2)ggplot(data=Salaries,aes(x=salary,fill=rank))+geom_density(alpha=0.3)
7.刻面facet_wrap(~var,ncol=n) 将每个var水平排列成n列的独立图facet_wrap(~var,nrow=n) 将每个var水平排列成n行的独立图facet_grid(rowvar~colvar) rowvar和colvar组合的独立图,其中rowvar表示行,colvar表示列facet_grid(rowvar~.) 每个rowvar水平的独立图,配置成一个单列facet_grid(.~colvar) 每个colvar水平的独立图,配置成一个单行
8.
10.修改图形外观(1)par()函数或特定图画函数的图形参数来自定义基本函数,但对pplot2图形没有影响。(2)自定义函数scale_x_continuous() scale_y_continuous():breaks=指定刻度标记,labels=指定刻度标记标签,limits=控制要展示的值得范围。scale_x_discrete() scale_y_discrete() :breaks=对因子的水平进行放置和排序,labels=指定这些水平的标签,limits=表示哪些水平应该展示coord_flip() 颠倒x轴和y轴
ggplot(data=Salaries,aes(x=rank,y=salary,fill=sex))+geom_boxplot()+scale_x_discrete(breaks=c("AsstProf","AssocProf","Prof"),labels=c("Assistant\nProfessor","Associate\nProfessor","Full\nProfessor"))+scale_y_continuous(breaks=c(50000,10000,150000,20000),labels=c("$50k","$100K","$150K","$200K"))+labs(title="Faculty Salary by Pank and Sex",x=" ",y="")
12.标尺
> ggplot(mtcars,aes(x=wt,y=mpg,size=disp))+geom_point(shape=21,color="black",fill="cornsilk")+labs(x="Wight",y="Miles Per Gallon",title="hongqianjin",size="Engine\nDisplacement")
15.保存图形ggsave()函数能更好的保存
没有 plot=选项,最近创建的图形会保存
2.
目录
一、 SPSS安装及介绍... 2
1. SPSS的安装... 2
2. SPSS的介绍... 2
二、 统计学基本知识... 3
1. 统计学术语... 3
2. 连续型变量的描述性统计... 5
3. 分类型变量的统计描述... 8
4. -分布... 9
5. T-分布... 9
6. F-分布... 9
7. 参数估计... 9
8. 假设检验... 11
三、 SPSS分析的整体的思路... 13
1. 数据的获取... 13
2. 数据的处理... 13
3. 数据的预分析... 13
4. 模型的建立... 13
5. 报告的攒写... 14
安装说明:
注意:请保持您的计算机连接网络!
第一步:双击IBM SPSS Statistics V21.0进行安装;
第二步:出现选择界面时选择中间选项(即 站点许可证);
QA3AW8U62Z4ZWTSPV44VXI65P59OLE547WHIQVZYWLARL9JEYQEGDUBLH8Z3ZCJAL3FLXMS98V95TSDYI7FOEXUPRR
点击下一步,一直到完成。
软件运行图标默认在程序菜单,请右键创建桌面快捷方式。
(1)软件的名称
最早:Statistical Package for Social Science
现在:IBM SPSS Statistics
(2)发展历史
60年代:美国斯坦福大学三位研究生研制
70年代:SPSS总部成立于芝加哥,推出SPSS中小型机版-SPSSX
80年代:微机版(V1~4)SPSS/PC+
90年代: Windows版(V6~10)
本世纪:11~24版,中文版
从被IBM收购之后,SPSS的更新都是一年一个版本,每年的8月中旬,总能见到
(3)基本特点
功能强大:
囊括了各种成熟的统计方法与模型,如方差分析、回归分析、聚类分析等;在数据准备方面,SPSS提供了各种数据准备与数据整理技术,如利用值标签来快捷录入数据、对连续性变量进行离散型转化、将几个小类别合并为一个大类别、重复记录的发现、异常数据发现等;还有各种常用的统计图形
兼容性好:
在数据方面不仅可在SPSS中直接进行数据录入工作,还可将excel表格数据、文本格式数据导入SPSS中进行分析,并且可以在word等软件中使用中文输出结果
易用性强:
强大的统计功能、简单易用、界面的友好、操作的简单,SPSS也向高级用户提供了编程功能
扩展性高:(以一种不同的方式)
SPSS是针对于初学者的一种专业的统计分析软件,它的操作主要是以菜单式为主,页面的设置与excel很类似,可以增加初学者的亲切感,并且,SPSS在进行操作的时候一定会用到的结果按钮,SPSS软件都会默认为选择,目的就是防止初学者忘记选择,这一方面很人性化,所以,对于一种方法的操作,只要记得步骤结果很快的就会出来,但是,SPSS是一种专业的统计分析软件,所以,它的难点不在于软件的操作,而在于结果的查看,SPSS的结果会用到相应的统计基础知识,所以,在进行操作之前,需要了解一些统计学知识。
(1)变量
从一次观察到下一次观察会出现不同结果的某种特征,在SPSS中一列叫做一个变量,如:观察一个企业的销售额,这个月和上个月有所不同;观察股票市场上涨股票的家数,今天与昨天数量不一样;观察一个班学生的生活费支出,一个人和另一个人不一样;投掷一枚骰子观察其出现的点数,这次投掷的结果和下一次也不一样 “企业销售额”、“上涨股票的家数”、“生活费支出”、“投掷一枚骰子出现的点数”等就是变量;
在统计学里根据变量的形式与性质可以分为两大类:连续型变量与分类型变量,在后期进行分析的时候都是以分类型变量与连续型变量为主进行分析的,这两类变量其实是有原始的四种变量尺度转化而来的,下面展示的是原始的四种变量尺度在SPSS软件中相应的转化:
(2)个案
在SPSS软件中一行叫做一个个案,即为一个调查的主体
(3)总体与样本
总体(population):包含所研究的全部个体(数据)的集合;
样本(sample):从总体中抽取的一部分元素的集合;
样本量(sample size):构成样本的元素的数目
(4)概率
概率是对事件发生的可能性大小的度量;如:明天降水的概率是80%。这里的80%就是对降水这一事件发生的可能性大小的一种数值度量;你购买一只股票明天上涨的可能性是30%,这也是一个概率;
一个介于0和1之间的一个值;
事件A的概率记为P(A)
连续变量的统计描述从以下的几个方面:
集中趋势:大部分数值集中到某区间的趋势;
离散趋势:数值向两边分散的趋势;
分布形状(是否对称,分布曲线的形状);
分布特征(单、双峰,有无极端值等)
(1)集中趋势
A:均值
消除了观测值的随机波动;易受极端值的影响
总体平均数:若一组数据X1,X2,…,XN,代表一个大小为N的有限总体,则其总体平均数为:
样本平均数:若一组数据x1,x2,…,xn,代表一个大小为n的有限样本,则其样本平均数为:
样本数据来自总体。样本的统计描述量可以反映总体数据的特征,但由于抽样等原因,使得样本数据不一定能够完全准确地反映总体,它可能与总体的真实值之间存在一定的差异。进行不同次抽样,会得到若干个不同的样本均值,它们与总体均值存在着不同的差异。
B:中位数
把一组数据按递增或递减的顺序排列,处于中间位置上的变量值就是中位数,它是一种位置代表值,所以不会受到极端数值的影响,具有较高的稳健性。
如果为奇数,那么该数列的中位数就是位置 (N+1)/2上的数;
如果N为偶数,中位数则是该数列中第 N/2与第N /2+1位置上两个数值的平均数。
C:四分位数
四分位数 是将一组个案由小到大(或由大到小)排序后,用3个点将全部数据分为四等份,与3个点上相对应的变量称为四分位数,分别记为Q1(第一四分位数)、Q2(第二四分位数)、Q3(第三四分位数)。其中,Q3到Q1之间的距离的一半又称为四分位差,记为Q。四分位差越小,说明中间的数据越集中;四分位数越大,则意味着中间部分的数据越分散,
四分之一位数=n/4
四份之三位数=3n/4
D:众数
一组数据中出现次数最多的变量值;
适合于数据量较多时使用;
不受极端值的影响;
一组数据可能没有众数或有几个众数
(2)离散趋势
A: 全距
定义:全距也称为极差,是数据的最大值与最小值之间的绝对差。
在相同样本容量情况下的两组数据,全距大的一组数据要比全距小的一组数据更为分散;
离散程度的最简单测度值:
易受极端值影响:
未考虑数据的分布
计算公式:最大值-最小值
B:方差与标准差
定义:方差是所有变量值与平均数偏差平方的平均值,它表示了一组数据分布的离散程度的平均值。标准差是方差的平方根,它表示了一组数据关于平均数的平均离散程度;
方差和标准差越大,说明变量值之间的差异越大,距离平均数这个“中心”的离散趋势越大
(样本方差)
C:四分位差
也称为内距或四分间距;
上四分位数与下四分位数之差:Qd = QU – QL;
反映了中间50%数据的离散程度;
不受极端值的影响;
用于衡量中位数的代表性
D:离散系数
标准差与其相应的均值之比;
对数据相对离散程度的测度;
消除了数据水平高低和计量单位的影响;
用于对不同组别数据离散程度的比较;
(3)分布形状与特征
A:正太分布
定义:若连续型随机变量X的概率分布密度函数为
其中,μ为平均数,𝜎^2为方差,则称随机变量X服从正态分布,
记为X~N( μ,𝜎^2),不同的μ、不同的𝜎,对应于不同的正态分布,正太分布是是关于X=μ对称
B:标准正太分布
标准正态分布 :均数μ为0,、标准差为1的正态分布;
标准正太分布主要是用来进行Z得分的计算,Z得分的特点:
也称标准化值;
对某一个值在一组数据中相对位置的度量;
可用于判断一组数据是否有离群点(outlier);
用于对变量的标准化处理;
均值等于0,方差等于1
C:峰度
定义:峰度(Kurtosis)是描述某变量所有取值分布形态陡缓程度的统计量。这个统计量是与正态分布相比较的量。记为β
β>0 峰的形状比较尖,比正态分布峰要陡峭,数据比正太时更加的集中;
β<0 峰的形状比较缓,比正态分布峰要平坦,数据比正太时分散;
β=0 正态分布峰
D:偏度
定义:偏度是描述数据分布形态的,它是描述某变量取值分布对称性的统计量。
计算公式为:
Skewness >0 正偏或右偏,长尾在右,峰尖偏左;
Skewness <0 负偏或左偏,长尾在左,峰尖偏右;
而偏度的绝对值数值越大表示分布形态的偏斜程度越大。
(1)单个分类变量的统计描述
频数描述:频数就是一个变量在各个变量值上取值的个案数。如要了解学生某次考试的成绩情况,需要计算出学生所有分数取值,以及每个分数取值有多少个人,这就需要用到频数分析
(2)多个分类变量的统计描述
主要是用表格对不同变量下的不同类别的频数进行统计
令Y=X2 ,则 y 服从自由度为1的分布,即Y~X(1);
称为具有n个自由度的X2分布;
分布的变量值始终为正;
分布的形状取决于其自由度n的大小,通常为不对称的正偏分布,但随着自由度的增大逐渐趋于对称;
期望为:E(X2)=n,方差为:D(X2)=2n(n为自由度)
也被称为学生分布(student’s t); t 分布是类似正态分布的一种对称分布,通常要比正态分布平坦和分散。一个特定的分布依赖于称之为自由度的参数。随着自由度的增大,分布也逐渐趋于正态分布,
称F为服从自由度n1和n2的F分布,记为F~F(n1,n2)
A:估计量与估计值
参数估计(parameter estimation)就是用样本统计量去估计总体的参数;
估计量:用于估计总体参数的统计量的名称,如样本均值,样本比例,样本方差等,例如: 样本均值就是总体均值μ的一个估计量;
参数用Θ表示,估计量用Θ表示;
估计值:估计参数时计算出来的统计量的具体值。
B:点估计
用样本的估计量的某个取值直接作为总体参数的估计值,例如:用样本均值直接作为总体均值的估计;用两个样本均值之差直接作为总体均值之差的估计;
无法给出估计值接近总体参数程度的信息,由于样本是随机的,抽出一个具体的样本得到的估计值很可能不同于总体真值;
一个点估计量的可靠性是由它的抽样标准误差来衡量的,这表明一个具体的点估计值无法给出估计的可靠性的度量
C:区间估计
在点估计的基础上,给出总体参数估计的一个估计区间,该区间由样本统计量加减估计误差而得到;
根据样本统计量的抽样分布能够对样本统计量与总体参数的接近程度给出一个概率度量,比如,某班级平均分数在75~85之间,置信水平是95%
D:置信水平
将构造置信区间的步骤重复很多次,置信区间包含总体参数真值的次数所占的比例,也称置信度表示为 (1 –α)% ,为是总体参数未在区间内的比例;
常用的置信水平值有 99%, 95%, 90%;
相应的α为0.01,0.05,0.10
E:置信区间
由样本估计量构造出的总体参数在一定置信水平下的估计区间;
统计学家在某种程度上确信这个区间会包含真正的总体参数,所以给它取名为置信区间;
如果用某种方法构造的所有区间中有95%的区间包含总体参数的真值,5%的区间不包含总体参数的真值,那么,用该方法构造的区间称为置信水平为95%的置信区间。同样,其他置信水平的区间也可以用类似的方式进行表述;
总体参数的真值是固定的,而用样本构造的区间则是不固定的,因此置信区间是一个随机区间,它会因样本的不同而变化,而且不是所有的区间都包含总体参数;
实际估计时往往只抽取一个样本,此时所构造的是与该样本相联系的一定置信水平(比如95%)下的置信区间。我们只能希望这个区间是大量包含总体参数真值的区间中的一个,但它也可能是少数几个不包含参数真值的区间中的一个;
当抽取了一个具体的样本,用该样本所构造的区间是一个特定的常数区间,我们无法知道这个样本所产生的区间是否包含总体参数的真值,因为它可能是包含总体均值的区间中的一个,也可能是未包含总体均值的那一个;
一个特定的区间总是“包含”或“绝对不包含”参数的真值,不存在“以多大的概率包含总体参数”的问题;
置信水平只是告诉我们在多次估计得到的区间中大概有多少个区间包含了参数的真值,而不是针对所抽取的这个样本所构建的区间而言的。
F:评价估计量的标准
无偏性:估计量抽样分布的数学期望等于被估计的总体参数;
有效性:对同一总体参数的两个无偏点估计量,有更小标准差的估计量更有效;
一致性:随着样本量的增大,估计量的值越来越接近被估计的总体参数
(1)假设检验的原理
先对总体的参数(或分布形式)提出某种假设,然后利用样本信息判断假设是否成立的统计方法;
逻辑上运用反证法,统计上依据小概率原理;
小概率是在一次试验中,一个几乎不可能发生的事件发生的概率;
在一次试验中小概率事件一旦发生,我们就有理由拒绝原假设
(2)原假设与备择假设
A:原假设
又称“0假设”,研究者想收集证据予以反对的假设,用H0表示;
所表达的含义总是指参数没有变化或变量之间没有关系;
最初被假设是成立的,之后根据样本数据确定是否有足够的证据拒绝它;
总是有符号=,≤或≥;
H0 :μ= 某一数值;
H0 :μ≤ 某一数值;
H0 :μ≥ 某一数值;
例如, H0 :μ=10cm
B:备择假设
也称“研究假设”,研究者想收集证据予以支持的假设,用H1或Ha表示;
所表达的含义是总体参数发生了变化或变量之间有某种关系;
备择假设通常用于表达研究者自己倾向于支持的看法,然后就是想办法收集证据拒绝原假设,以支持备择假设;
总是有符号≠,>或<;
H1 :μ≠某一数值;
H1 :μ> 某一数值;
H1 :μ< 某一数值
(3)双侧检验与单侧检验
备择假设没有特定的方向性,并含有符号“≠”的假设检验,称为双侧检验或双尾检验(two-tailed test);
备择假设具有特定的方向性,并含有符号“>”或“<”的假设检验,称为单侧检验或单尾检验(one-tailed test);
备择假设的方向为“<”,称为左侧检验;
备择假设的方向为“>”,称为右侧检验;
(4)根据P值做出决策
如果原假设为真,所得到的样本结果会像实际观测结果那么极端或更极端的概率;
P值告诉我们:如果原假设是正确的话,我们得到得到目前这个样本数据的可能性有多大,如果这个可能性很小,就应该拒绝原假设;
被称为观察到的(或实测的)显著性水平;
决策规则:若p值<α, 拒绝 H0;
双侧检验的P值如下:单侧检验的P值如下图的原理一样
我们进行分析的数据主要有两种,一种是二手数据,也就是以其他的形式存在的数据;另一种是新数据,主要是以问卷存在的数据,所以,数据的获取就涉及到两部分,一部分是外部数据的导入,另一种是问卷数据的录入。
将数据获取之后,首先要进行的是数据的处理,主要是重复值、缺失值、数据的验证、加权、选择个案、重组、转置等
数据处理好之后,在建模之前需要进行的是数据的预处理,数据的预处理是进行其他统计分析的基础和前提。通过基本统计方法的学习,可以对要分析数据的总体特征有比较准确的把握,从而有助于选择其他更为深入的统计分析方法,主要是描述统计分析、探索、交叉表等。
根据预分析里面了解到的数据的结构以及业务的要求可以建立一些相应的模型,比如,需要对客户画像可以进行聚类,需要对销售量进行预测可以用回归等。
1.各种GUI(图形用户界面)辅助编程
Rstudio:R语言综合开发环境;
Rattle:数据挖掘
R Commander:统计分析
2.
3.工作空间(workspace):R的当前工作环境,用于存储用户定义的对象。
ls():列出工作空间中的对象
rm(objectlist):移除一个或多个对象;
save(objectlist,file="myfile")保存对象object到文件"myfile";
5.
sink("hongqianjin",append=false)
写代码
sink()//结束
(1).源文件没有则创建,(2)append=Flase,覆盖原来文件,注意原来文件全部删除,一行都不留。
sd()方差
options()显示或设置当前选项
runif()随机数
hist() 数据直方图
q() 退出R
3.高级编程
> setwd("C:/Users/lx/Desktop")//工作空间调整到sourcetest.R中> source("sourcetest.R")
4.
byrow 是按行进行排列,默认是按列排序
5.
6.因子
7.列表
8.数据的输入
9.
#################数据框attach()、detach()和with()summary(mtcars$mpg)plot(mtcars$mpg, mtcars$disp)plot(mtcars$mpg, mtcars$wt)
#attach()attach(mtcars)summary(mpg)plot(mpg, disp)plot(mpg, wt)detach(mtcars)
#with()with(mtcars, {stats <- summary(mpg)stats})
###因子diabetes <- c("Type1", "Type2", "Type1", "Type1")diabetes <- factor(diabetes)
status <- c("Poor", "Improved", "Excellent", "Poor")status <- factor(status, ordered=TRUE)status <- factor(status, order=TRUE, levels=c("Poor", "Improved", "Excellent"))###数值型变量,因子编码gender <- c(1,2,1,2,3)gender <- factor(gender, levels = c(1,2), labels = c("Male", "Female"))
###因子实例patientID <- c(1,2,3,4)age <- c(25, 34, 28, 52)diabetes <- c("Type1", "Type2", "Type1", "Type1")status <- c("Poor", "Improved", "Excellent", "Poor")
str(patientdata)
summary(patientdata)
###列表g <- "My First List"h <- c(25, 26, 18, 39)j <- matrix(1:10, nrow = 5)k <- c("one", "two", "three")mylist <- list(title = g, ages = h, j, k)mylist
#连接MySQL数据库channel <- odbcConnect("MySQL", uid="root", pwd="123")
#查看数据库的表sqlTables(channel)
#读取ODBC数据库中的表到数据库中crs <- sqlFetch(channel, "course")
#向ODBC数据库提交一个查询并保存结果至数据框crs_qry <- sqlQuery(channel, "select * from course")
#关闭连接close(channel)
4.
2.
4.主成分分析:Kaiser-Harris准则建议保留特征值大于1 的主成分,特征值小于1的成分所解释的方差比包含在单个变量中的方差更少。5.探索性因子分析:Kaiser—Haris准则的特征值大于0,而不是大于1.
###加载RODBClibrary(RODBC)
安装mysql驱动,并在管理工具中配置
###连接RMySQL数据库channel <- odbcConnect("RODBC", uid = "root", pwd = "123456")
###查看数据库的表sqlTables(channel)
###读取ODBC数据库中表到Rorderdetail <- sqlFetch(channel, "orderdetail")
###向ODBC数据库提交查询orderdetail_qry <- sqlQuery(channel, "select * from orderdetail where productNo = 'P20050001'")avg_quantity <- sqlQuery(channel, "select *, avg(quantity) from orderdetailgroup by productNo")###关闭连接close(channel)
#################数据框attach()、detach()和with()summary(mtcars$mpg)plot(mtcars$mpg, mtcars$disp)plot(mtcars$mpg, mtcars$wt)
#attach()attach(mtcars)summary(mpg)plot(mpg, disp)plot(mpg, wt)detach(mtcars)
#with()with(mtcars, {stats <- summary(mpg)stats})
###因子diabetes <- c("Type1", "Type2", "Type1", "Type1")diabetes <- factor(diabetes)
status <- c("Poor", "Improved", "Excellent", "Poor")status <- factor(status, ordered=TRUE)status <- factor(status, order=TRUE, levels=c("Poor", "Improved", "Excellent"))###数值型变量,因子编码gender <- c(1,2,1,2,3)gender <- factor(gender, levels = c(1,2), labels = c("Male", "Female"))
###因子实例patientID <- c(1,2,3,4)age <- c(25, 34, 28, 52)diabetes <- c("Type1", "Type2", "Type1", "Type1")status <- c("Poor", "Improved", "Excellent", "Poor")
str(patientdata)
summary(patientdata)
###列表g <- "My First List"h <- c(25, 26, 18, 39)j <- matrix(1:10, nrow = 5)k <- c("one", "two", "three")mylist <- list(title = g, ages = h, j, k)mylist
#连接MySQL数据库channel <- odbcConnect("MySQL", uid="root", pwd="123")
#查看数据库的表sqlTables(channel)
#读取ODBC数据库中的表到数据库中crs <- sqlFetch(channel, "course")
#向ODBC数据库提交一个查询并保存结果至数据框crs_qry <- sqlQuery(channel, "select * from course")
#关闭连接close(channel)
#####RMySQLlibrary(RMySQL)# 创建MySQL数据库的连接
con <- dbConnect(MySQL(), host = "127.0.0.1", dbname = "mysql",username = "root", password = "123", port = 3308)# 获取连接信息summary(con)
dbInfo <- dbGetInfo(con) #返回数据框信息的列表dbInfo[["host"]]dbInfo[[1]]dbInfo $ host# 查看database下的所有表dbListTables(con)
#删除数据库中的表格dbRemoveTable(con, "fruits")
###从数据库读取表fruitdb <- dbReadTable(con, "fruits")
dbSendQuery(con, 'SET NAMES utf8')
Encoding(fruitdb) <- "UTF-8"
##覆盖写testBdbWriteTable(con, "test", testB, overwrite = TRUE)
###dbGetQuery() 和 dbSendQuery()两种方法dbGetQuery(con, "select * from fruits limit 3")
#dbSendQuery()res <- dbSendQuery(con, "select * from fruits")data <- dbFetch(res, n = 2)dbClearResult(res)
dbDisconnect(con)
# 用SQL语句批量查询
sql <- "select * from fruits; select * from test"res1 <- dbSendQuery(con, sql)
dbFetch(res1, n = 6)
if(dbMoreResults(con)) {res2 <- dbNextResult(con)dbFetch(res2, n = -1) }
dbClearResult(res1)dbClearResult(res2)
1.
2.缺失值
4.日期
5.数据的排序
6.数据集的合并
7.分类
8.处理缺失数据的高级方法
# 创建leadership数据框manager <- c(1, 2, 3, 4, 5)date <- c("10/24/08", "10/28/08", "10/1/08", "10/12/08", "5/1/09")country <- c("US", "US", "UK", "UK", "UK")gender <- c("M", "F", "F", "M", "F")age <- c(32, 45, 25, 39, 99)q1 <- c(5, 3, 3, 3, 2)q2 <- c(4, 5, 5, 3, 2)q3 <- c(5, 2, 5, 4, 1)q4 <- c(5, 5, 5, NA, 2)q5 <- c(5, 5, 2, NA, 1)
attach(mydata)mydata$sumx <- x1 + x2mydata$meanx <- (x1 + x2)/2detach(mydata)
mydata <- transform(mydata, sumx = x1 + x2, meanx = (x1 + x2)/2)
###变量的重编码leadership$age[leadership$age == 99] <- NA
leadership$agecat <- NA
leadership$agecat[leadership$age > 75] <- "Elder"leadership$agecat[leadership$age >= 55 & leadership$age <= 75] <- "Middle Aged"leadership$agecat[leadership$age < 55] <- "Young"
###变量的重命名#方式1fix(leadership)
#方式2names(leadership)names(leadership)[2] <- "testDate"names(leadership)[6:10] <- c("item1", "item2", "item3", "item4", "item5")
format(today, format="%A")
###数据排序newdata <- leadership[order(leadership$age),]
attach(leadership)newdata <- leadership[order(gender, age),]detach(leadership)
attach(leadership)newdata <- leadership[order(gender, -age),]detach(leadership)
m1 <- merge(authors, books, by.x = "surname", by.y = "name")
###数据框子集# dataframe[row indices, column indices]
# 列子集# 两种方式:第一种是列下标,第二种方式是列名称
# 删除数据框的列# 三种方式# 第一种方式:逻辑向量leadership[, !names(leadership) %in% c("q3", "q4")]
# 第二种方式:dataframe $ colname <- NULL
# 第三种方式:dataframe[, c(-列下标)]leadership[, -which(names(leadership) == "q3")]
leadership[, -which(names(leadership) %in% c("q3", "q4"))]
#####使用sqldf()函数a <- sqldf("select (q1 + q2 + q3 + q4 + q5)/5 from leadership")leadership $ averge <- a[[1]]View(leadership)
sqldf("select gender, avg(age) from leadership group by gender")
###
#######数值和字符处理函数###数学函数abs(x)
sqrt(x)
ceiling(x)
floor(x)
trunc(x) 获取x中的整数部分
round(x,digits = n) x舍入到指定位的小数
signif(x, digits = n) 舍入x为指定的有效数字位数
log(x, base = n) 对x取以n为底的对数
log(x) 为自然对数log10(x) 为常用对数
exp(x) 指数函数
###统计函数mean() mean(c(1,2,3,4))
median() median(c(1,2,3,4))
sd() sd(c(1, 2, 3, 4))
var() var(c(1,2,3,4))
mad() (median absolute deviation)mad(c(1,2,3,4))quantile(x, probs) 求分位数quantile(x, c(.3, .85))
range()range(c(1,2,3,4))
sum()
diff(x, lag = n) 滞后差分x <- c(1, 5, 23, 29)diff(x)
min(c(1, 2, 3, 4))
max(c(1, 2, 3, 4))
#scale()对矩阵或数据框的指定列进行均值scale(x, center = 1, scale = 1)
#实例x <- 1:8
mean(x)sd(x)
n <- length(x)meanx <- sum(x) / ncss <- sum((x - meanx)^2)sdx <- sqrt(css / (n - 1))
meanxsdx
###字符处理函数nchar(x) #计算x中的字符数量x <- c("ab", "cde", "fghij")length(x)nchar(x[3])
substr(x, start, stop) 提取或替换x <- "abcdef"substr(x, 2, 4)substr(x, 2, 4) <- "222"
grep("A", c("b", "A", "c"), fixed = TRUE)
# 在x中搜索pattern,并以文本replacement将其替换# fixed = FALSE,pattern为一个正则表达式
# 按split分割x, 返回字符向量strsplit(x, split, fixed = FALSE)
y <- strsplit("abc", "")
# 连接字符串,连接符为sep# 可以连接多个向量paste(..., sep = "")
paste("x", 1:3, sep = "")paste("x", 1:3, sep = "M")paste("Today is", date())
# 大写转换toupper(x)toupper("abc")
# 小写转换tolower(x)tolower("ABC")
############其他实用函数length()x <- c(2, 5, 6, 9)length(x)
###seq(from, to, y)生成一个序列indices <- seq(1, 10, 2)
#rep(x, n) 将x重复n次y <- rep(1:3, 2)
#连接...对象,并输出到屏幕cat(...)
name <- "Bob"cat("Hello", name, "\b.\n")
###cat 和 paste 的区别x <- c("x", "x", "x")y <- c("a", "b", "c")
paste(x, y, sep = "") #向量元素依次连接cat(x, y) #向量间连接
x <- c("x", "y")y <- c("a", "b", "c")
paste(x, y, sep="") ###以向量形式保存结果cat(x, y) ###保存结果为空,不保存连接结果,仅输出
mydata <- matrix(rnorm(30), nrow = 6)mydata
apply(mydata, 1, mean)
apply(mydata, 2, mean)
apply(mydata, 2, mean, trim = 0.2)
###控制流——重复和循环for (i in 1:10) print("Hello")
i <- 10while(i > 0) {print("Hello");i <- i - 1;}
### 条件执行grade <- c("A", "A", "B", "B", "C")
#ifelse()score <- 0.6
score <- 0.3ifelse(score > 0.5, print("Passed"), print("Failed"))
outcome <- ifelse(score > 0.5, "Passed", "Failed")
###switch示例feelings <- c("sad", "afraid")
for (i in feelings) {print(switch(i, happy = "I am glad you are happy",afraid = "There is nothing to fear",sad = "Cheer up",angry = "Calm down now"))}
### 用户自编函数# mystats(): 描述性统计量计算函数mystats <- function(x, parametric = TRUE, print = FALSE) {
if (parametric) {center <- mean(x);spread <- sd(x);} else {center <- median(x);spread <- mad(x);}if (print & parametric) {cat("Mean=", center, "\n", "SD=", spread, "\n")} else if (print & !parametric) {cat("Median=", center, "\n", "MAD=", spread, "\n")}result <- list(center = center, spread = spread)return(result)}
y <- mystats(x, parametric = FALSE, print = TRUE)
mydate("long")
mydate("short")
mydate()
mydate("medium")
#####矩阵的转置cars <- mtcars[1:5, 1:4]cars
t(cars)
ID <- c(1, 1, 2, 2)Time <- c(1, 2, 1, 2)X1 <- c(5, 3, 6, 2)X2 <- c(6, 5, 1, 4)
library(reshape2)md <- melt(mydata, id = c("ID", "Time"))
dcast(md, ID ~ variable, mean)dcast(md, Time ~ variable, mean)dcast(md, ID ~ Time, mean)
dcast(md, ID + Time ~ variable)dcast(md, ID + variable ~ Time)
dcast(md, ID ~ variable + Time)
###实例options(digits = 2)
Student <- c("John Davis", "Angela Williams", "Bullwinkle Moose","David Jones", "Janice Markhammer", "Cheryl Cushing","Reuven Ytzrhak", "Greg Knox", "Joel England","Mary Rayburn")Math <- c(502, 600, 412, 358, 495, 512, 410, 625, 573, 522)Science <- c(95, 99, 80, 82, 75, 85, 80, 95, 89, 86)English <- c(25, 22, 18, 15, 20, 28, 15, 30, 27, 18)
### 计算综合得分 z <- scale(roster[,2:4])score <- apply(z, 1, mean)roster <- cbind(roster, score)
### 对学生评分roster $ grade <- NAy <- quantile(score, c(.8, .6, .4, .2))roster $ grade[score >= y[1]] <- "A"roster $ grade[score < y[1] & score >= y[2]] <- "B"roster $ grade[score < y[2] & score >= y[3]] <- "C"roster $ grade[score < y[3] & score >= y[4]] <- "D"roster $ grade[score < y[4]] <- "F"
name <- strsplit((roster$Student), " ")
Lastname <- sapply(name, "[", 2)Firstname <- sapply(name, "[", 1)roster <- cbind(Firstname, Lastname, roster[, -1])
roster <- roster[order(Lastname, Firstname),]
1.R语言的各种分布函数
rnorm(n,mean=0,sd=1)高斯(正态)
rexp(n,rate=1)指数
rgamma(n,shape,scale=1)γ分布
rpois(n,lambda)Poisson分布
rweibull(n,shape,scale=1)Weibull分布
rcauchy(n,location=0,scale=1)Cauchy分布
rbeta(n,shape1,shape2)β分布
rt(n,df)t分布
rf(n,df1,df2) F分布
rchisq(n,df)Χ2 分布
rbinom(n,size,prob)二项
rgeom(n,prob)几何
rhyper(nn,m,n,k)超几何
rlogis(n,location=0,scale=1) logistic分布
rlnorm(n,meanlog=0,sdlog=1)对数正态
rnbinom(n,size,prob)负二项分布
runif(n,min=0,max=1)均匀分布
rwilcox(nn,m,n) ,rsignrnak(nn,n) Wilcoxon分布
1.R语言 prod() 连乘
sort() 排序
rev() 倒序
seq() 按某种规律产生数列
t() 矩阵转置
diag()求矩阵对角线,求向量的为对角线矩阵,求标量为劫数的向量
1.
> x<-rnorm(5)> x[1] -0.1105737 2.5691194 -0.4457731 -0.9396918[5] 1.0528433
创建一个名为x的向量,它包含5个来自标准正态分布的随机偏差。
sd()标准差
demo()图形实例
1.批处理R CMD BATCH options infile outfile
创建数据集
18.函数factor()可为类别型变量创建值标签
19.处理数据对象的使用函数length() 显示对象中元素/成分的数量dim() 显示某个对象的维度str() 显示某个对象的结构class() 显示某个对象的类或类型mode() 显示某个对象的模式names() 显示某对象中各成分的名称c() 将对象合并入一个向量cbind() 按列合并对象rbind() 按行合并对象object() 输出某个对象head() 列出某个对象的开始部分tail() 列出某个对象的最后部分ls() 显示当前的对象列表rm() 删除一个或更多个对象newobject<- edit() 编辑对象并另存为newobjectfix() 直接编辑对象
dose <- c(20, 30, 40, 45, 60)drugA <- c(16, 20, 27, 40, 60)drugB <- c(15, 18, 25, 31, 40)
plot(dose, drugA, type = "b")
par(lty = 2, pch = 17) ###设置参数plot(dose, drugA, type = "b") ###根据设置的参数绘制图形
par(opar) ###还原原始设置
###图形参数 —— 符号和线条plot(dose, drugA, type = "b", lty = 3, lwd = 3, pch = 15, cex = 2)
###添加文本、自定义坐标轴和图例###函数自带参数设置选项plot(dose, drugA, type = "b", col = "red", lty = 2, pch = 2, lwd = 2, main = "Clinical Trials for Drug A", sub = "This is hypothetical data", xlab = "Dosage", ylab = "Drug Response", xlim = c(0, 60), ylim = c(0, 70)) annotation ###自定义坐标轴示例windows()x <- 1:10y <- xz <- 10/x
###增加边界大小par(mar = c(5, 4, 4, 8) + 0.1)
###绘制x对y的图形plot(x, y, type = "b", pch = 21, col = "red", yaxt = "n", lty = 3, ann = FALSE) ###添加x对1/x的直线lines(x, z, type = "b", pch =22, col = "blue", lty =2)
###图例windows()dose <- c(20, 30, 40, 45, 60)drugA <- c(16, 20, 27, 40, 60)drugB <- c(15, 18, 25, 31, 40)
plot(dose, drugA, type = "b", pch = 15, lty =1, col = "red", ylim = c(0, 60), main = "Drug A vs. Drug B", xlab = "Drug Dosage", ylab = "Drug Response") lines(dose, drugB, type = "b", pch = 17, lty = 2, col = "blue") ### 添加图例legend(locator(1), title = "Drug Type", c("A", "B"), lty = c(1, 2), pch = c(15, 17), col = c("red", "blue"))
par(opar)
text(3, 3, "Example of default text")text(4, 4, family = "mono", "Example of mono-spaced text")text(5, 5, family = "serif", "Example of serif text")
par(opar)
plot(wt,mpg, main = "Scatterplot of wt vs. mpg")plot(wt, disp, main = "Scatterplot of wt vs. disp")hist(wt, main = "Histogram of wt")
boxplot(wt, main = "Boxplot of wt")
par(opar)
detach(mtcars)
hist(wt)hist(mpg)hist(disp)
par(opar)
detach(mtcars)
###函数layout()attach()
layout(matrix(c(1, 1, 2, 3), 2, 2, byrow = TRUE))hist(wt)hist(mpg)hist(disp)
detach(mtcars)
attach(mtcars)
layout(matrix(c(1, 1, 2, 3), 2, 2, byrow = TRUE), widths = c(3, 1), heights = c(1, 2)) hist(wt)hist(mpg)hist(disp)
detach(mtcars)
par(fig = c(0, 0.8, 0, 0.8))plot(mtcars $ wt, mtcars $ mpg, xlab = "Miles Per Gallon", ylab = "Car Weight")
par(fig = c(0, 0.8, 0.6, 1), new = TRUE)boxplot(mtcars $ wt, horizontal = TRUE, axes = FALSE)
par(fig = c(0.7, 1, 0, 0.8), new = TRUE)boxplot(mtcars $ mpg, axes = FALSE)
mtext("Enhanced Scatterplot", side = 3, outer = TRUE, line = -3)
图形初阶
2.用于指定符号和线条类型的参数pch:指定绘图时使用的符号cex:指定符号的大小lty:指定线条的类型lwd:指定线条的宽度
3.函数rgb()可基于红-绿-蓝三色值生成颜色,hsv()则基于色相-饱和度-亮度值来生成颜色> rgb(1,1,1)[1] "#FFFFFF"> hsv(0,0,1)[1] "#FFFFFF"
数学知识
1.数学函数abs()绝对值sqrt()平方根ceiling()不小于x的最小整数floor()不大于x的最大整数trunc()向0的方向截取的x中的整数部分round(x,digits=n)将x舍入为指定的小数signif(x,digits=n)将x舍入为指定的有效数字位数cos(),sin()、tan() 余弦、正弦、正切、acos()、asin()、atan()反余弦、反正弦和正切cosh(x)、sinh(x)、tanh(x)双曲余弦、双曲正弦和双曲正切acosh(x)、asinh(x)、atanh(x)反双曲余弦、反双曲正弦和反双曲正切log(x,base n) 对x取以n为底的对数log(x) 为自然对数log10(x)为常用对数exp(x)指数函数
2.统计函数mean() 平均数median() 中位数sd() 标准差var() 方差mad() 绝对中位差quantile() 求分位数range() 求值域sum() 求和diff() 滞后差分min() 求最小值max() 求最大值scale(x,center=TRUE,scale=TRUE) 为数据对象x按列进行中心化(center=TRUE)或标准化(center=TRUE,scale=TRUE)默认情况下,函数scale()对矩阵或数据框的指定列进行均值为0、标准差为1 的标准化公式scale(mydate)*SD+M (SD为想要的标准差、M为想要的均值)
3.概率分布Beta分布 beta二项分布 binom柯西分布 cauchy(非中心)卡方分布 chisq指数分布 expF分布 fGamma分布 gamma几何分布 geom超几何分布 hyper对数正态分布 lnormLogistic分布 logis多项分布 multinom负二项分布 nbinom正态分布 norm泊松分布 poisWilcoxon符号秩分布 signrankt分布 t均匀分布 unifWeibull分布 weibullWilcoxon秩和分布 wilcox注:如果不指定一个均值和一个标准差,则函数将假设其为标准正态分布(均值为0,标准差为1)。
9.R中提供了一个apply()函数,可将一个任意函数“应用”到矩阵、数组、数据框的任何维度上:apply(x,MARGIN,FUN,...) x为数据对象,MARGIN为维度,FUN为函数。 在矩阵或数据框中,MARGIN=1表示行,MARGIN=2表示列
13整合于重构函数函数t()即可对一个矩阵或数据进行转置aggregate(x,by,FUN) 在R中使用一个或多个by变量和一个预先定义好的函数来折叠数据
library(scatterplot3d)attach(mtcars)s3d<- scatterplot3d(wt,disp,mpg,pch=16,highlight.3d=TRUE,type="h",main="qianjin")fit<- lm(mpg~wt+disp)s3d$plane3d(fit)
基本图形
3.棘状图棘状图对堆砌条形图进行了重缩放,这样每个条形的高度均为1,每一段的高度即表示比例spine()
4.饼图面积之比
pie(x,labels)
6.直方图直方图表述的是连续型变量的分布直方图通过在x轴上将值域分割为一定数量的组,在y轴上显示响应 的频数,展示了连续变量的分布。hist(x)x是一个由数据值组成的数值向量参数freq=FALSE表示根据概率密度,freq=TRUE频数绘制图形breaks用于控制组的数量
7.轴须图(rug <plot>)轴须图是实际数据值得一种一维呈现方式
8.盒型box()
10.箱线图箱线图(又称盒须图)通过绘制连续型变量的五数总括,即最小值、下四分位数(25%)、中位数(50%)、上四分位数(75%)以及最大值,描述了连续型变量的分布。箱线图能够显示出可能为离群点(范围正负1.5*IQR以为的值,IQR表示四分位数,即上四分位数于下四分位数的差值)的观测。boxplot()箱线图可以展示单个变量或分组变量。参数varwidth=TRUE将使箱线图的宽度与其样本大小的平方根成正比参数notch=TRUE,可以得到含凹糟的箱线图
11.小提琴图小提琴图是箱线图与核密度图的结合。vioplot包中的vioplot()函数小提琴图基本上时核密度图以镜像方式在箱线图上的叠加。在图中,白点是中位数,黑色盒型范围是下四分位点到上四分位点,细黑线表示须.外部形状即为核密度估计。
12.点图点图提供了一种在简单水平刻度上绘制大量有标签值得方法dotchart(x,labels=)
13.直方图、箱线图、轴须图以及点图可视化连续型变量分布的方式,使用叠加图的核密度图、并列箱线图和分组点图可视化连续型输出变量组间差异的方法
VBA
1.填充
Sub 填充1()
End Sub
保存有VBA的代码的Excel文件是xlsm格式,否则无法保存代码
Sub 偏移()
Sub 消息框()MsgBox prompt:="前进", Buttons:=vbYesNo, Title:="qianjin"End Sub
Sub 消息框()'MsgBox prompt:="前进", Buttons:=vbYesNo, Title:="qianjin"
MsgBox "学习VBA", vbOKOnly, "数据挖掘"End Sub
11.使用gmodels包中的CrossTable()函数是创建二维列联表
13.R提供了多种检验类别型变量独立性的方法,卡方独立性检验、Fisher精确性检验、Cochran-Mantel-Haenszel检验
18.显著性检验评估了是否存在充分的证据以拒绝变量间相互独立的原假设。
20.R可以计算多种相关系数,包括Pearson相关系列、Spearman相关系数、Kendall相关系数、偏相关系数、多分格(Polychoric)相关系数和多系列(Polyserial)相关系数。
22.偏相关是指在控制一个或多个定量变量时,另外两个定量变量之间的相互关系,可以使用ggm包中的pcor()函数计算偏相关系数。计算格式为:pcor(u,s)s为协方差矩阵
26.非独立样本的t检验前-后测试设计或重复测量设计同样会产生非独立的组非独立样本的t检验假定组间的差异呈正态分布
27.如果能够假设数据是从正态总体中独立抽样而得的,那么可以使用方差分析(ANOVA)
3.回归模型的假设条件很苛刻:结果或响应变量不仅是数值型的,而且还必须来自正态分布的随机抽样。4.回归分析通知那些一个或多个预测变量(自变量)来预测响应变量(因变量)的方法。通常,回归分析可以用来挑选与响应变量相关的解释变量,可以描述两者的关系,也可以生成一个等式,通过解释变量来预测响应变量。5.回归分析的各种变体简单线性 用一个量化的解释变量预测一个量化的响应变量多项式 用一个量化的解释变量预测一个量化的响应变量,模型的关系是n阶多项式多层 用拥有等级结构的数据预测一个响应变量.也被称为分层模型、嵌套模型或混合模型多元线性 用一个或多个量化的解释变量预测一个量化的响应变量多变量 用一个或多个解释变量预测多个解释变量Logistic 用一个或多个解释变量预测一个类别型响应变量泊松 用一个或多个解释变量预测一个代表频数的响应变量Cox比例风险 用一个或多个解释变量预测一个事件(死亡、失败或疾病复发)发生的时间时间序列 对误差项相关的时间序列数据建模非线性 用一个或多个量化的解释变量预测一个量化的响应变量,不过模型是非线性的非参数 用一个或多个量化的解释变量预测一个量化的响应变量,模型的形式源自数据形式,不事先设定稳健 用一个或多个量化的解释变量预测一个量化的响应变量,能抵御强影响的干扰
6.对拟合线性模型非常有用的函数summary() 展示拟合模型的详细结果coefficients() 列出拟合模型的模型参数(截距项和斜率)confint() 提供模型参数的执行区间(默认95%)fitted() 列出拟合模型的预测值residuals() 列出拟合模型的残差值anova() 生成一个拟合模型的方差分析表,或者比较两个或更多拟合模型的方差分析表vcov() 列出模型参数的协方差矩阵AIC() 输出赤池信息统计量plot() 生成评价拟合模型的诊断图predict() 用拟合模型对新的数据集预测响应变量值
7.非线性模型可用nls()模型进行拟合
10.通过effects包中的effect()函数,可以用图形展示交互项的结果,格式为:plot(effect(term,mod,,xlevels),multiline=TRUE)term即模型要画的项,mod为通过lm()拟合的模型,xlevels是一个列表,指定变量要设定的常量值,multiline=TRUE选项表示添加相应直线> library(effects)> windows()> plot(effect("hp:wt",fit,,list(wt=c(2.2,3.2,4.2))),multiline = TRUE)
11.对lm()函数返回的对象使用plot()函数,可以生成评价模型拟合的四副图:(1)正态性:(Normal Q-Q):如满足正态假设,那么图上的点应该落在呈45度角的直线上;若不是如此,那么就违反了正态性的假设。(2)线性:(Residuals vs Fitted):若变量与自变量线性相关,那么残差值与预测(拟合)值就没有任何关系。(3)同方差性:(Scale-Location Graph):若满足不变方差假设,那么在“位置尺度图”中,水平线周围的点应该随机分布(4)残差于杠杆图):Residuals vs Leverage:提供了你可能关注的单个观测点的信息,从图形可以鉴别离群点、高杠杆值点和强影响点。
13.时间序列数据通常呈现自相关性------相隔时间越近的观测相关性大于相隔越远的观测。car包提供了一个可做Durbin-Watson检验的函数,能够检测误差的序列相关性。
14.线性通过成分残差图也称偏残差图,可以看看因变量与自变量之间是否呈线性关系,也可以看是否有不同于已设定线性模型的系统偏差,图形可用car包中的crPlots()函数绘制
15.同方差性car包提供了两个有用的函数,可以判断误差方差是否恒定。ncvTest()函数生成一个计分检验,零假设为误差方差不变,备择假设为误差方差随着拟合值水平的变化而变化。若检验显著,则说明存在异方差性(误差方差不恒定)spreadLevelPlot()函数创建一个添加了最佳拟合曲线的散点图,展示标准化残差绝对值与拟合值得关系。
17.多重共线性可用统计量(VIF,方差膨胀因子)进行检测.VIF的平方根表示变量回归参数的置信区间能膨胀为与模型无关的预测变量的程度。car包中的vif()函数提供VIF值,一般原则下,根号vif>2就表明存在多重共线性问题
18.离群点的判断方法(1)Normal Q-Q图,落在置信区间带外的点即可被认为是离群点。(2)粗糙的判断标准:标准化残差值大于2或者小于-2的点可能是离群点,需要特别关注(3)car包提供了一种离群点的统计验证方法。outlierTest()函数可以求得最大标准化残差绝对值Bonferroni调整后的p值
18.高杠杆值点高杠杆值观测点,即与其他预测变量有关的离群点。也就是说,它们是由许多异常的预测变量值组合起来的,与响应变量值没有关系。高杠杆值的观测点通过帽子统计量判断高杠杆值点可能是强影响点,也可能不是,这要看它们是否是离群点。
19.强影响点强影响点,即对模型参数估计值有些比例失衡的点。有两种方法可以检测强影响点:Cook距离,或称D统计量,以及变量添加图,一般来说,Cook's D值大于4/(n-k-1),则表明它是强影响点,其中n为样本量大小,k是预测变量数目
20.有四种方法可以处理违背回归假设的问题:(1)删除观测点(2)变量变换(3)添加或删除变量(4)使用其他回归方法
21.变量变换car包中的powerTransform()函数通过r(参数那么la)的最大似然估计来正态化变量XN(x的N次方)car包中的boxTidwell()函数通过获得预测变量幂数的最大似然估计来改善线性关系。
24.从大量候选变量中选择最终的预测变量有两种流行的方法:逐步回归法和全子集回归逐步回归法中,模型会一次添加或者删除一个变量,直到达到某个判停准侧为准。MASS包中的stepAIC()函数可以实现逐步回归模型,依据的是精确AIC准侧全子集回归是指所有可能的模型都会被检测。全子集回归可用leaps包中的regsubsets()函数实现。
6.典型的功效分析是一个交互性的过程。功效分析的一个重要附加效益是引起方向性的转变,它鼓励不要仅仅关注于二值型(即效应存在还是不存在)的假设检验,而应该仔细思考效应值增加的意义。
# -*- coding: utf-8 -*-"""Created on Thu Mar 30 09:30:25 2017
@author: Administrator"""
#第一天a = 5b = 4
#用两个新变量交换值a_backup = ab_backup = ba = b_backupb = a_backup
#用一个新变量交换值a_backup = aa = bb = a_backup
#不用新变量交换值a = a + bb = a-ba = a-b
#字符串s1 = '我是字符串's2 ="我也是字符串"s3 = ''' 我也是字符串 '''#为啥要搞这么多种引号 " i'm 21 " ''' i'm "abc" 21 ''' #还可以加\'i\'m 21'
#数值常量1 #整型1.0 #浮点型complex(1,2) #复数
a_234234 = '我是变量'#1_aaaa = 1 # 数字在前面,这个会报错#变量大小写敏感,a和A是两个不一样的变量a = 1A = 2#变量名不可以是Python内置关键字,如min、max、range等;
#类型转换num = 1234s_num = str(num)#int('a')int('123')float(num)int(1.234) #警惕,这个会损失精度str(complex(1,3))
#算术运算符:3 + 5.6 #内部会先把整数转换成小数再相加7 -13*3.145/311//411%42 ** 3
#关系运算符a = 7b = 6a > ba < ba <= ba >= ba == ba != b
#布尔算符True False
#逻辑运算符:True and TrueTrue and FalseTrue or Falsenot True
1 and 3 #挑那个大的1 and 0 #0
#list 列表l = [1,"aaa"] #c(1,2,3) 在这里叫列表,可以放不同的类型l2 = [1,2,3,4,5,100,80,60,1,1,2]l2[0]l2[0:3]l2[4] len(l2) #len返回数组的长度l2[len(l2)-1] #取出最后一个元素l2[-1] #可以省略len(l2),写成这样l2[0] = 100 #list 是可变的L2 = list(range(1,101,2))
l2[::-1] #倒序取里边的元素l2[-4:] #取最后四个元素 是l2[len(Mylist)-4:len(Mylist)]的简写l2[:] #取出全部的元素
#print 是一个输出函数print(dict1)#print("%s is %d" %("Sim",27))print("%s is %d" %(dict2['name'],dict2['age']))dict5['name']['lstname'] = 'Snake'
# 控制流和自定义函数#if分支语句if True: print('true')
#保存输入数据a_num = input("please input a value:")#单个分支if int(a_num) < 100: print("less than 100")#两个分支if int(a_num) < 100: print("less than 100")else: print("more than 100")
#多个分支a_num = input("please input a score:")if int(a_num) > 90: print("好")elif(int(a_num) > 80): print("良")elif(int(a_num) > 60): print("及格")else: print("SB")
#循环i = 0sum_i = 0while(i<100): i = i + 1 # i+=1 sum_i = sum_i + i # sum_i += i print("第%d次循环, sum_i = %d" %(i,sum_i)) #循环#有一个初始值为5,公差为3的等差数列,计算前100项的和i = 0sum_i = 0a = 5while(i<100): i = i + 1 #通项 sum_i = sum_i + a print("第%d次循环, a = %d sum = %d" %(i,a,sum_i)) a = a + 3
#100以内的偶数,奇数全部相加,i = 0sum_au = 0sum_ji = 0while(i<100): i = i + 1 # i+=1 if(i % 2 == 0): sum_au = sum_au + i else: sum_ji = sum_ji + iprint(sum_au,sum_ji)
# -*- coding: utf-8 -*-"""Created on Fri Mar 31 10:24:20 2017
#for循环的语法for i in range(5,10): print(i) list1 = [0,11,22,33,44,55,66,77,88,99]for i in list1: print(i)
string1 = "helloworld"for i in string1: print(i)
#建议使用的方式,即可以得到索引,也可以有值list1 = [0,11,22,33,44,55,66,77,88,99]for i in range(len(list1)): print(i,list1[i])
#这次用for循环#找出,100以内所有的素数。。#素数:只能除尽1和它本身的数、#先判断一个数是不是素数 i = 18is_sushu = Truefor j in range(2,i): if i % j == 0: is_sushu = False
#自定义函数def f(): print("i am a function")
#参数(必选参数)和返回值def me_add_me(a): return a + a
#参数(可选参数),可选参数一定要在必选参数后面def a_add_b(a,b = 1): return a + b
#定义一个函数,判断一个数是不是素数def is_sushu(num): is_sushu = True for i in range(2,num): if(num % i == 0): is_sushu = False return is_sushu#找100以内的素数for i in range(2,100): if(is_sushu(i)): print(i) #一个*号,可变参数,调用时传多个参数,#它会变成元组传进去,可以用for循环遍历def f(*a): for i in a: print(i) f(1,2,3,4,5)
#Python常用的数值函数—内建函数:abs(-4) #取绝对值divmod(10,4) #商和余数pow(2,3) # 乘方,相当于 2 ** 3round(4.51) #四舍五入,大于0.5才会入
#math包里的函数from math import *pieceil(4.1) #向上取整floor(4.999) # 向下取整modf(5.888) #把小数和整数分割fabs(4)exp(2) #e的2次方log(7.38905609893065)log2(4)log10(100)sqrt(100)pow(2,3)fmod(10,3)factorial(5)
#认识字符串#字符串的创建;s1 = "hello "s2 = "world"s1 + s2 # 字符串拼接s1*8 # 字符串重复s1[0:3] #子字符串的获
\?0\d{2}\?[- ]?\d{8}|0\d{2}[- ]?\d{8}
# -*- coding: utf-8 -*-"""Created on Sat Apr 1 11:22:45 2017
for i in mydata: print(i[1])
爬虫图片python
1.
(1)TEXT(value,format_text)根据指定格式将数字转成文本
(2)TODAY() 返回日期格式的当前日期
2.
(1)HYPERLINK()创建一个快捷方式或链接,以便打开一个存储在硬盘,网络服务器或Internet上的文档
(2)MATCH()返回符合特定值,特定顺序的项在数组中的相对位置
3.
(1)MOD() 返回两数相除的余数
(2)MID(text,start_num,num_chars)从文本字符串中指定的起始位置起返回指定长度的字符
4.
(1)EDATE(start_date,months) 返回一串日期,指示起始之前之后的月数
5.
6.
7.
(1)SEARCH(find_text,within_text,[start_num]) :返回一个指定字符或文本字符串在字符串第一次出现的位置,从左到右查找(忽略大小写)
(2)SMALL(array,k):返回数组中第k个最小值
(3)IFERROR(value,value_if_error):如果表达式是一个错误,则返回value_if_error,否则返回表达式自身的值
(4)INDEX(arrary,row_num,[column_num])、INDEX(reference,row_num,[column_num],[area_num]):在给定的单元格区域中,返回特定行列交叉单元格的值或引用
(5)ISNUMBER(value):检测一个值是否是数值,返回TRUE或FALSE
1.
(1)MATCH(look_value,look_array,[match_type]):返回符合特定值特定顺序的项在数值中相对位置
(2)VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup]):搜索表区域首列满足条件的元素,确定待检索单元格在区域中的行序号,再进一步返回选定单元格的值。默认是以升序排序的。
语法:Dir[(pathname[, attributes])] 两个参数都是可选的,attributes表示文件属性。功能:返回一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。
说明:在第一次调用 Dir 函数时,必须指定 pathname,否则会产生错误。如果也指定了文件属性,那么就必须包括 pathname。
COUNTA(value1,[value2],...):计算区域中非空单元格的个数
COUNTBLANK(range):计算某个区域中空单元格的数目
COUNTIF(range,criteria):计算某个区域中满足给定单元格数目
COUNTIFS(criteria_range1,criteria1,...):统计一组给定条件所指定的单元格数
1.
(1)自定义单元格格式";;;",会使单元格显示为空白,但编辑栏仍会显示实际内容
(2)IFERROR(value,value_if_error) :如果表达式是一个错误,则返回value_if_error,否则返回表达式自身的值
(3)DATEDIF()返回两个日期的相差值
1.
REPLACE(old_text,start_num,num_chars,new_text):将一个字符串中的部分字符用另一个字符串替换
REPLACEB(old_text,start_num,num_chars,new_text):用其他文本字符串替换某文本字符串的一部分
INDIRECT(ref_text,[a1]):返回文本字符串所指定的引用
CHOOSE(index_num,value1,[value2]):根据给定的索引值,从参数中选出响应的值或操作
SUBSTITUTE(text,old_text,new_text,[instance_num]):将字符串的部分字符串以新字符串替换
1.
SUMPRODUCT(array1,[array2],[array3],...):返回响应的数组或区域乘积的和
ISNUMBER(value):检测一个值是否是数值,返回TRUE或FALSE
T(value):检测给定值是否为文本,如果是文本按原样返回,如果不是,则返回双引号(空文本)
RANDBETWEEN(bottom,top):返回一个介于指定的数字之间的随机数
ROUND(number,num_digits):按指定的位数对数值进行四舍五入