5. 基础统计方法——关联性分析/简单线性回归

目录

连续型随机变量间的相关分析

1. 相关系数的计算

2. 相关系数的假设检验

 3. 偏相关

4. 相关的解释——应注意的问题

分类变量间的关联分析

1. 交叉分类2 X 2表的关联分析

2. 22配对资料的关联性分析

3. 多分类资料的关联分析

4. 两个有序多分类变量

关联分析的可视化

1. 连续型变量散点图

2. 分类变量马赛克图

简单线性回归

1. 线性回归条件的判断

2. 线性模型拟合

分层线性回归


基本概念

两个连续随机变量间的线性练习称为线性相关,两个分类变量间的联系称为关联

相关种类

  • 正相关:一般若Y有随着X增大而线性上升的趋势,称为正相关;
  • 负相关:若Y有随着X增大而线性下降的趋势,称为负相关;
  • 零相关:若Y或X不随另一个变量的改变而改变,则称为零相关;
  • 非线性相关:若散点呈曲线形状,则变量可能呈曲线关系,不宜做线性相关

关联强度的评价指标:

两连续型随机变量间联系的强度用相关系数(correlation coefficient)来描述。

两分类变量间联系的强度用关联系数(association coefficient)来描述。

临床含义:相关系数最大为1,最小为-1,联系越密切则相关系数接近于1或-1,没有线性联系的相关系数为0。相关系数为正,称为正相关,相关系数为负,称为负相关,相关系数为0称为零相关。

连续型随机变量间的相关分析

pearson相关是要求两个变量都服从正态分布,spearman相关系数和kendall's Tau相关系数都是非参数的相关度量,对数据分布没有特殊要求,或者等级资料。

1. 相关系数的计算

案例:使用数据集birthwt,将其中的连续数值变量提取出来形成数据框cont.vars,计算变量age,lwt,bwt的相关性。

data(birthwt,package = "MASS")
cont.vars <- dplyr::select(birthwt,age,lwt,bwt)#将连续性变量单独提取出来

根据中心极限定理:当每组样本量>=50时,可以认为样本的均数近似服从正态分布。所以可以选择person相关,使用函数cor()计算样本的相关系数,method=“pearson”或“spearman”参数。

cor(cont.vars,method = "pearson")
cor(cont.vars,method = "spearman")

函数cor()计算相关系数,cov()和var()计算协变量。容易混淆!!!!

2. 相关系数的假设检验

 方法一:base包中的cor.test()函数,但是只能每次检验两个连续变量的相关性。

cor.test(cont.vars$lwt,cont.vars$bwt,method = "spearman")
cor.test(cont.vars$lwt,cont.vars$bwt,method = "pearson")

 从spearman秩相关的假设检验可以看到相关系数\rho=0.2488882,p=0.00055<0.001,因此拒绝H0,接受H1,可以认为,母亲最后一次月经时的体重(lwt)与新生儿出生时体重(bwt)之间存在正相关关系。

  从pearson积矩相关系数的假设检验可以看到相关系数\rho=0.1857,相关系数95%置信区间为(0.044,0.31998),p=0.0105<0.05,按照α=0.05水准,拒绝H0,接受H1,即认为两变量间线性相关有统计学差异。可以认为,母亲最后一次月经时的体重(lwt)与新生儿出生时体重(bwt)之间存在正相关关系。

方法二:cor.test只能检验一个相关系数,psych包中corr.test()可以计算多个相关系数矩阵并进行检验

library(psych)
corr.test(cont.vars)
corr.test(cont.vars,method = "spearman")

 首先输出一个相关系数矩阵,矩阵的相关性检验p值。默认方法method=pearson,还可以选择spearman和kendall

置信区间:

cor.test会展示自信区间,但是corr.test没有,那么如何操作呢?

print(corr.test(cont.vars),short = F)#展示自信区间
print(corr.test(cont.vars,method="spearman"),short = F)#展示自信区间

 3. 偏相关

偏相关是指控制一个或者多个数值型变量时,另外两个变量之间的相关性。使用ggm包中pcor计算偏相关系数。

library(ggm)
names(cont.vars)
#[1] "age" "lwt" "bwt"
r <- pcor(c(2,3,1),cov(cont.vars))
#pcor()第一个参数中的向量的前两个数字代表要计算相关规系数的变量的下标,其余的数字待变条件变量(控制变量)的下标
nrow(cont.vars)
#[1] 189
pcor.test(r,q=1,n=189)
#q表示条件变量的个数,这里只有一个变量(age),n表示样本数

 上面的结果表明,在控制了年龄的影响时,母亲体重和新生儿体重的相关系数有统计学意义。

4. 相关的解释——应注意的问题

(1)如果从散点图可见两随机变量呈线性相关的趋势,假设检验也拒绝总体相关系数为0的假设,则我们可以推断两变量是“线性相关”的,但我们不能因此推断两变量在生物学上有任何的联系,甚至认为呈因果关系。

(2)如果经检验后,不拒绝总体相关系数\rho=0,我们不能轻易下结论认为两个变量“无关”,应注意样本含量是否够大,其次散点图是不是呈现曲线关系,是否对应资料进行分层分析等。

(3)异常值的处理:校对原始数据,其次分别保留和剔除后进行一次分析。

分类变量间的关联分析

关联分析思想:对分类变量间联系,可作关联分析,即对两个分类变量交叉分类,对计数所得的频数资料(列联表)作关于两种属性独立的\chi ^{2}检验。

\chi ^{2}检验的基本方法可以参考:5.基本统计方法-分类变量的组间比较_Dr_long1996的博客-CSDN博客

1. 交叉分类2 X 2表的关联分析

案例:收集了3154例冠心病患者的观察资料,研究者将观察对象的行为分为A型和B型。分析行为类型和冠心病的发病是否有关联性。

my.matrix <- matrix(c(178,79,1411,1486),nrow = 2);my.matrix
row.names(my.matrix)=c("A","B")#行为类型
colnames(my.matrix)=c("+","-")#是否患有冠心病
chisq.test(my.matrix)
chisq.test(my.matrix)$expected
chisq.test(my.matrix,correct = F)

如果一种属性的概率分布与另一种属性的概率分布无关,则称为两种属性相互独立(independence),否则称这两种属性之间存在关联性。

\chi ^{^{2}}=39.90,自由度df=1,p值<0.01,说明行为类型与冠心病之间存在着关联性。

关联系数(association coefficient,r)

如果两个数据不独立,那么就要进一步了解相关性的强弱。使用vcd包中assocstats()来计算列联表的phi系数,列联系数和Cramer’s V系数,其中Phi系数只适用四格表

行为类型与冠心病之间存在关联,但是关联程度如何?

assocstats(my.matrix)

 从上述结果可以看到关联系数r=0.112。

对于2 X 2的列联表而言,关联系数r介于0和\sqrt{0.5}之间,其数值越大,关联程度越高;总体的关联系数是否等于0的假设检验与上述关于两种属性的独立性检验等价。

2. 2\times2配对资料的关联性分析

案例:对103名患者进行影像学检查(A)和生化检查(B),结果均分为疾病(+)和正常(-)两类,现欲分析A、B两法检查结果的关联性。

my.matrix <- matrix(c(50,8,15,30),nrow = 2);my.matrix
row.names(my.matrix)=c("+","-")
colnames(my.matrix)=c("+","-")
mcnemar.test(my.matrix)

使用McNemar检验解决了两种方法的阳性率是否相等的问题,但若要了解两种方法之间的关联,需要作两种属性的关联分析。

chisq.test(my.matrix,correct = F)

assocstats(my.matrix)

 本案例中\chi ^{2}=30.43,p<0.05,认为两种之间存在关联,关联系数r=0.478。与Mcn检验的p=0.2109,尚不能认为两种方法之间有差异。本质含义是相同的,但是理解的思路却不同。

配对设计的此类资料类型既可以进行频率的比较(McNemar检验),又可以进行关联分析(chisq.test()),资料的整理完全一致,但由于分析目的不同,计算方法也不同:进行频率比较时,McNemar检验仅对配对中不一致的数据进行检验。

3. 多分类资料的关联分析

案例:有研究表明,不同国籍人的血型分布 不同的,现有2500不同国籍人的血型分布资料,请问国籍与血型的分布是否有关?

my.matrix <- matrix(c(450,300,190,
                      410,250,250,
                      100,350,40,
                      40,100,20),nrow = 3);my.matrix
row.names(my.matrix)=c("美国人","中国人","挪威人")
colnames(my.matrix)=c("O","A","B","AB")
addmargins(my.matrix)

现在的“关联”和以前的“比较”是两类不同的问题和设计。多组频率分布资料的比较,其设计是,首先确定三种国籍人群,调查其血型分布资料,分析三种国籍的血型分布是否不同。本例2500例患者是一次调查的结果,可以看作是总体种一份随机抽样,按照两个属性交叉分类,统计频数,分析的是两种属性之间的是否有关联。

chisq.test(my.matrix)

 \chi ^{^{2}}=332.97,P<0.001,拒绝H0,说明血型与国籍之间有关联性。

assocstats(my.matrix)

 关联系数r=0.343

关联性分析与多个频率比较的\chi ^{2}检验一样,要求不能有超过1/5以上的理论频数小于5,或者不能有1个理论频数小于1.

4. 两个有序多分类变量

spearman秩相关法进行分析或者Kendall’s Tau-b相关性分析

案例:欲研究年龄(Age)与冠状动脉粥样硬化等级(Grade)之间的关系,抽样调查了283例年龄≥30岁的居民,收集其年龄和冠状动脉粥样硬化等级数据。年龄按30-39岁、40-49岁、50-59岁、≥60岁统计频数,冠状动脉粥样硬化按照0级、1级、2级、3级统计频数。

age=c(rep(1,70+23+4+3),rep(2,27+25+9+4),rep(3,16+23+13+8),rep(4,9+20+15+14))
grade=c(rep(1,70),rep(2,23),rep(3,4),rep(4,3),
    rep(1,27),rep(2,25),rep(3,9),rep(4,4),
    rep(1,16),rep(2,23),rep(3,13),rep(4,8),
    rep(1,9),rep(2,20),rep(3,15),rep(4,14))
mydata=data.frame(age,grade)
mydata$age=factor(mydata$age,
                  levels = c(1,2,3,4),
                  labels = c("30-39","40-49","50-59","60-69"))
mydata$grade=factor(mydata$grade,
                    levels = c(1,2,3,4),
                    labels = c("0级","1级","2级","3级"),ordered = T)

将原始数据制作成为列联表,然后进行关联分析。

#创建列联表
mytable <- table(mydata$age,mydata$grade);mytable
#统计描述——计算构成比
prop.table(mytable,margin = 1) #按照行计算百分比
prop.table(mytable,margin = 2)#按照列计算百分比
#关联性分析
#install.packages("DescTools")
library(DescTools) #调用包“DescTools”
KendallTauB(mytable,conf.level=0.95) #计算Tau-b系数及其95%CI

年龄与动脉粥样硬化等级间的Kendall’s Tau-b相关系数为0.410(95%CI:0.33-0.49),即年龄与动脉粥样硬化的等级有相关性,且为正相关

注意:kendallTauB()主要用于列联表频数格式的数据,如果原始的长数据格式还可以直接用cor()函数,设置参数method=“kendall”实现上述关联分析。

cor.test(age,grade,use="everything",method = "kendall")

关联分析总结:

  • 两个连续变量间呈线性相关时,可以使用Pearson相关分析,不满足Pearson相关分析的适用条件时,可以使用Spearman相关系数来描述。
  • 两个连续变量既可以使用Pearson相关分析,也可以使用Kendall's tau-b等级相关系数描述,但后者更多适用于两个分类变量均为有序分类的情况(也可以用于有序分类变量+连续变量)。

关联分析的可视化

1. 连续型变量散点图

利用连续型变量部分的数据进行分析:

data(birthwt,package = "MASS")
cont.vars <- dplyr::select(birthwt,age,lwt,bwt)#将连续性变量单独提取出来

方法一:pairs()绘制散点图

pairs(cont.vars)

 方法二:car包中的函数scatterplotMatrix用于创建点图矩阵

library(car)
scatterplotMatrix(cont.vars)

 方法三:其他方式展示两变量之间相关性

#install.packages("corrplot")
library(corrplot)
#install.packages("corrgram")
library(corrgram)
corrplot(cor(cont.vars))#颜色深浅表示相关性强弱,其中蓝色表示正相关,红色负相关
corrgram(cont.vars,upper.panel = panel.pie)#upper.panel=展示的图形

 利用相关系数绘制的圈图展示两变量之间的相关性。

2. 分类变量马赛克图

案例:使用R自带数据集Arthritis,计算治疗方式(安慰剂和标准治疗)于疗效之间的关联程度,原始数据表格如下:

library(vcd)
mytable <- table(Arthritis$Treatment,Arthritis$Improved);mytable

将数据统计形成一个列联表,分类变量:用关联图或者马赛克图展示

方法一:关联图

assocplot(mytable)

 从上图可以看到安慰剂治疗于疗效none正相关,与显著疗效负关联,治疗组同理

方法二:马赛克图

mosaic(~Treatment+Improved,data=Arthritis)#两变量的马赛克图
mosaic(~Sex+Treatment+Improved,data=Arthritis)#多变量的马赛克图

 如果要在一张图中展示数值型变量和分类变量的关联,可以使用GGally包中的ggpair

#install.packages("GGally")
library(GGally)
library(ggplot2)
dat <- dplyr::select(birthwt,age,lwt,bwt,smoke,race)
ggpairs(dat)

 

简单线性回归

简单线性回归:一个变量Y(反应变量)随着另一个变量X(解释变量)的变化而变化,且呈直线变化趋势

线性回归分析的要求数据满足线性独立性正态性等方差的前提

线性:反应变量Y与自变量X呈直线变化趋势,通过散点图来考察两变量是否呈线性趋势

独立性:两个个体的取值是相互独立的,一个个体的取值不受另一个个体的影响,多于非独立样本,可以选择重复测量资料的方差分析、多水平模型。

正态性:在给定x取值时,y的取值服从正太分布,也即y的残差服从正态分布。通过残差图或者正态概率图考察

等方差:对于不同的x值,y的总体变异相同

案例:某种疾病患病后会影响尿肌酐的表达,收集了一部分患病和正常患者的尿肌酐,欲研究尿肌酐是否会随着年龄的改变有变化,数据如下:

UCR <- data.frame(age=c(13,11,9,6,8,10,12,7,10,9,11,12,15,16,8,7,10,15),
                  ucr=c(3.54,3.01,3.09,2.48,2.56,3.36,3.18,2.65,3.01,2.83,2.92,3.09,3.98,3.89,2.21,2.39,2.74,3.36),
                  group=c(rep(0,8),rep(1,10)))

在数据栏目中可以查看全部数据情况,数据集中共有3个变量和18个观察数据,3个变量分别代表年龄(age)、尿肌酐(ucr)与是否患病(group)。

1. 线性回归条件的判断

线性:

#基础包绘图
plot(ucr~age,data = UCR) #满足线性回归第一个条件线性
plot(ucr~age,data = UCR,xlab="Age in years",ylab="Urine creatinine(mmol)") 

#ggplot绘制散点图
library(ggplot2)  #启动ggplot2软件包
ggplot(data=UCR,aes(x=age,y=ucr))+
  geom_point()+
  stat_smooth(method="lm",se=TRUE) #绘制散点图

 散点大致呈一条直线,提示变量“age”和“ucr”存在线性关系,该条件满足

独立性:独立性需要针对实验设计和观察指标进行判断。

正态性(四种方法)

lm.UCR<-lm(age~ucr,data=UCR) #回归分析
shapiro.test(lm.UCR$residuals)#进行shapiro正态性检验

hist(lm.UCR$residuals)#方法二:通过直方图展示残差的分布判断

#方法三:对于小样本,可以使用qq图展示,是否聚集在一条直线上
qqnorm(lm.UCR$residuals)
qqline(lm.UCR$residuals)

#方法四:残差图:做残差与拟合值的散点图,是否对称
plot(fitted(lm.UCR),lm.UCR$residuals,xlab = "Fitted values",type="n") #绘制散点图,type=n表示不显示散点
text(fitted(lm.UCR),lm.UCR$residuals,labels=rownames(UCR))#标记每个点的名称,text表示加上文本的意思
abline(h=0,col="blue")

残差的方差齐性

par(mfrow=c(1,3)) #绘制一行3个图
plot(lm.UCR$residuals)
plot(UCR$age,lm.UCR$residuals)
plot(UCR$ucr,lm.UCR$residuals)

预测值和各变量值的残差分布较为均匀,并未出现特殊的分布形式(如漏斗或者扇形),提示残差的方差齐。

2. 线性模型拟合

lm.UCR=lm(ucr~age,data=UCR);lm.UCR #输出的数据有限
attributes(lm.UCR)#通过函数attributes()查看模型对象的属性

 上述就是线性拟合后生成的拟合模型包含的内容,可以通过$提取具体属性的值。比如lm.UCR$residual就能将残差提出出来。

lm.UCR$coefficients#显示的是截距和斜率(回归系数)
lm.UCR$residuals#每一个样本的残差
summary(lm.UCR)#生成主要的线性拟合参数

上述的总结,显示了拟合公式lm是ucr~age的拟合,第二部分是残差的基本信息,第三部分Coefficients部分”列出了截距和自变量的“Estimate (非标准化系数)”、“Std.Error (标准误)”,统计量t值及P值。Multiple R-squared:决定系数。F统计量:对线性回归方程进行统计检验。

回归方差模型假设检验包含两个方面:一是检验回归模型是否成立的模型检验(F检验),二是检验总体回归系数β是否为零的参数检验(t检验)。

决定系数是回归分析中重要的统计量,定义为回归平方和与总平方和之比,记为\boldsymbol{R}^{^{2}}。其值的大小反映了自变量对回归效果的贡献,在Y的总变异中回归关系所能解释的百分比。常用作反映拟合优度的指标。当X与Y均为随机变量时,决定系数等于相关系数r的平方和。

        该案例中,年龄(age)的斜率为0.149,检验p<0.001,即age的回归系数不等于0。F统计量=60.95,p<0.001,说明回归模型成立。决定系数为0.7921,说明年龄有很大程度可以解释尿肌酐的水平。项在该案例中没有实际意义,p值仅表示常数项与0之间有显著差异。但是\mathrm{R^{2}}会受自变量个数的影响,夸大自变量对因变量变异的解释程度,自变量越多,\mathrm{R^{2}}越大。Adjusted \mathrm{R^{2}}调整了自变量个数对结果的影响,一般小于\mathrm{R^{2}}Adjusted \mathrm{R^{2}}=0.7791,说明自变量 (年龄)可以解释77.91%的因变量的变异 (尿肌酐)。

如果要具体分析回归模型的假设检验内容:

summary(aov(lm.UCR))

回归决定系数\boldsymbol{R}^{^{2}}=\frac{SS_{回归}}{SS_{总}}

注意:服从双变量正态分布的同样一组资料,同时做了相关分析和回归分析,则相关系数的t检验与回归系数t检验等价

分层线性回归

分层线性回归:在分组变量下,两个变量之间的线性回归关系

本质:对回归方程进行比较的问题

(1):不同分组中的回归直线是否平行;(2):若平行,检验其截距是否相等

#假定年龄对尿肌酐在两组中的影响是相同的

mod1 <- lm(ucr~age+group,data = UCR)
summary(mod1)

年龄每增长1岁,尿肌酐就增加0.16156,相同年龄情况下,患病儿童的尿肌酐比正常儿童低0.232356。

#分组绘制散点图
col=ifelse(UCR$group==0,"blue","red")#设置两个组的颜色
pch=ifelse(UCR$group==0,1,19)#设置两个组点的形状
plot(ucr~age,data = UCR,col=col,pch=pch,xlab="Age in years",ylab="Urine Creatinine")
legend("topleft",
       legend = c("Normal children","Diseased children"),
       col=c("blue","red"),
       pch=c(1,19))

 分别对两组绘制拟合曲线,分别求解不同模型的斜率和截距。

mod1$coefficients

 第一个是截距,第二个分别是age的斜率,前文假设了年龄在两组之间尿肌酐的影响是相同的,所以斜率都是相同的b=0.16156,但截距没有患病组group=0,截距a=1.45,患病组group=1,截距a=1.45-0.233。

mod1$coefficients
b <- mod1$coefficients[2]
a0 <- mod1$coefficients[1]
a1 <- mod1$coefficients[1]+mod1$coefficients[3]
abline(a=a0,b=b,col="blue")
abline(a=a1,b=b,col="red")

 在上面的模型里,假定的是儿童年龄对尿肌酐含量具有恒定效应。进行假设检验,尝试不同的斜率来拟合回归直线,然后比较两者斜率的差异是否显著

!!!!建立一个group和age之间存在交互的模型

mod2 <- lm(ucr~age+group+age:group,data = UCR)
#建立了一个age和group存在交互的模型
mod2$coefficients

 所以回归方程中y=1.66+0.139*age-0.566*group+0.033*age*group

再次对存在交互模型的斜率和截距进行计算。

健康组中group=0,所以截距a2,斜率b2

a2 <- mod2$coefficients[1]
b2 <- mod2$coefficients[2]

在患病组中group=1,所以截距a3,斜率b3

a3=mod2$coefficients[1]+mod2$coefficients[3]
b3=mod2$coefficients[2]+mod2$coefficients[4]

绘制散点图和拟合曲线:

col=ifelse(UCR$group==0,"blue","red")
pch=ifelse(UCR$group==0,1,19)
plot(ucr~age,data = UCR,col=col,pch=pch,xlab="Age in years",ylab="Urine Creatinine")
legend("topleft",
       legend = c("Normal children","Diseased children"),
       col=c("blue","red"),
       pch=c(1,19))
abline(a=a2,b=b2,col="blue")
abline(a=a3,b=b3,col="red")

        两条回归直线不平行,表示年龄在两组中的效应不同,有可能是抽样误差导致,有可能是是否患病导致,假设检验两个斜率的差异显著性。

summary(mod2)

 年龄(age)与患病(group)交互效应的假设检验p=0.4>0.05,尚不能认为交互具有统计学差异。可能两个斜率的不同是由于偶然误差导致的。所以模型中不需要存在Age与group的交互,mod1可以作为最终模型。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
整套大数据课程从hadoop入门开始,由浅入深,内置“hadoop源码解析与企业应用开发实战”,“Hive开发实战”,“Hbase开发实战”,“Spark,mahout,sqoop,storm诸模块开发实战”,“数据挖掘基础。这个系列课程有几个板块组成,所以学员可以按照自己的实际情况选择学习。例如,对于只需要了解hadoop基本编程的人,只需要选择“hadoop源码解析与企业应用开发实战”模块就可以了;对于立志于从事大数据领域的零起点人员,可以选择四个板块依次学习;对于已经有一定基础的hadoop开发人员,你可以根据自己的情况,选择学习模块,而不必4个板块从头开始学。 特点1:真正做到从0开始,从入门到精通 特点2:适合不同基础的学员学习 特点3:阶梯式课程,每个阶段都有明确的主题和目标 第1周 数据分析基础 要点 数据分析流程、方法论(PEST、5W2H、逻辑树)、基础数据分析方法、数据分析师能力层级、数据的度量、探索、抽样、原理及实际操作,结合SPSS工具使用 第2周 数据挖掘基础 要点(数据挖掘概念、流程、重要环节、基础数据处理方法(缺失值、极值)、关联性分析方法(相关分析、方差分析、卡方分析)、原理及实际操作 第3周 数据挖掘工具介绍及Modeler软件使用 要点 使用Modeler,实际数据操作,为后续课程准备) 第4周 挖掘-分类 要点(决策树 C5.0、逻辑回归,最常用的二种算法,原理及实际建模操作) 第5周 挖掘-聚类 要点(层次聚类、kmeans)、挖掘-关联(Apriori),挖掘-预测(线性回归,指数平滑,移动平均), 原理及实际建模操作 第6周 数据挖掘实战 要点(以目标客户挖掘为例,从业务分析、方案制定、数据处理、数据准备、变量筛选、建模、评测、部署各个环节,使用Modeler工具,讲述建模的全过程)
SQL Server 2008商业智能完美解决方案 3/3 SQL Server 2008 2010 商业智能完美解决方案 作者:兰吉特(Lynn Langit) 出版社:人民邮电出版社; 第1版 (2010年8月1日) ISBN:7115231117, 9787115231116 页码:545 -------------------------------------------------------------------------------- 《SQL Server 2008商业智能完美解决方案》: 利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。不论是商业智能(B0)编程的新手还是老手,都会从中受益。通过专家团队的真实示例和高明见解,读者能够掌握构建商业智能解决方案的概念、工具和技术,从而真正提供客户所需的智能性商业价值。 《SQL Server 2008商业智能完美解决方案》研究如下内容: 管理开发生命周期,打造BI团队; 深入研究SQL Servet Analysis Services、Integration Services和 Reporting Services; 使用Business Intelligence Development Studio(BIDS); 编写对销售数据进行分级、排序和深化的查询; 开发提取、转换、加载(ETL)解决方案; 添加源代码控制系统; 通过加密和凭据保护部署的包; 用MDX和DMX查询设计器构建基于OLAP多维数据集和数据挖掘模 型的报表; 用NET代码建立并实现自定义对象; 在Microsoft Office Excel和Office SharePoint Server中查看报表。 微软公司US-SQL Analysis Services 首席开发经理Donaod Farmer倾力作序 内容提要 -------------------------------------------------------------------------------- 《SQL Server 2008商业智能完美解决方案》介绍如何使用Microsoft SQL Server 2008开发商业智能(BI)解决方案。《SQL Server 2008商业智能完美解决方案》共分为4部分。第一部分阐述了商业智能基础、可视化商业智能结果、构建有效的商业智能流程、商业智能解决方案的物理架构、面向架构师的OLAP逻辑设计概念;第二部分面向Analysis Services开发人员,详细介绍了如何使用BIDS以及BIDS的所有功能,提供了使用SSAS构建OLAP多维数据集和数据挖掘模型的指南;第三部分面向Integration Services开发人员,详细介绍如何使用SSIS开发ETL软件包,利用ETL包加载OLAP多维数据集和数据挖掘结构;第四部分详细介绍了SSRS的架构,以及Excel、Visio或Office SharePoint Server 2007作为BI客户端的实现。 《SQL Server 2008商业智能完美解决方案》结合专家团队提供的实际示例和丰富经验进行介绍,让读者能够直观轻松地掌握构建商业智能(BI)解决方案的概念、工具和技术,是一本不可多得的商业智能开发参考指南。无论是商业智能(BI)编程新手还是经验丰富的老手,都可从《SQL Server 2008商业智能完美解决方案》中获益。 目录 -------------------------------------------------------------------------------- 第一部分 面向商业决策者和架构师的商业智能 第1章 商业智能基础 3 1.1 商业智能和数据建模 3 1.2 OLTP和OLAP 4 1.2.1 联机事务处理 4 1.2.2 联机分析处理 6 1.3 常用BI术语 9 1.3.1 数据仓库 9 1.3.2 数据市场 10 1.3.3 多维数据集 11 1.3.4 决策支持系统 11 1.3.5 数据挖掘系统 11 1.3.6 提取、转换和加载系统 12 1.3.7 报表处理系统 12 1.3.8 关键绩效指标 12 1.4 Microsoft BI解决方案的核心组件 12 1.4.1 SQL Server 2008 Analysis Services 13 1.4.2 SQL Server 2008 Reporting Services 15 1.4.3 SQL Server 2008 15 1.4.4 SQL Server 2008 Integration Services 15 1.5 Microsoft BI解决方案的可选组件 17 1.6 BI解决方案中使用的查询语言 18 1.6.1 MDX 18 1.6.2 DMX 19 1.6.3 XMLA 19 1.6.4 RDL 19 1.7 小结 19 第2章 商业智能结果可视化 21 2.1 将业务案例与BI解决方案对应起来 21 2.1.1 BI范围十大问题 22 2.1.2 BI解决方案的组成部分 23 2.2 从用户的角度理解商业智能 26 2.2.1 用Excel 2007演示BI的功能 28 2.2.2 通过Excel外接程序了解数据挖掘 35 2.2.3 使用Excel 2007查看数据挖掘结构 36 2.3 完整BI解决方案的元素 39 2.3.1 报表——确定谁将使用解决方案 39 2.3.2 ETL——实现解决方案的基础 40 2.3.3 数据挖掘——不可或缺 40 2.4 常见的业务挑战和BI解决方案 42 2.5 衡量BI解决方案的ROI 43 2.6 小结 45 第3章 构建有效的商业智能流程 46 3.1 BI项目的软件开发生命周期 46 3.1.1 Microsoft Solution Framework 47 3.1.2 Microsoft Solution Framework for Agile Software Development 48 3.1.3 将MSF用于BI项目 49 3.1.4 Microsoft Solution Framework的阶段和可交付成果 49 3.2 BI项目需要的技能 53 3.2.1 必备技能 54 3.2.2 可选技能 55 3.3 建立团队 57 3.4 小结 62 第4章 商业智能解决方案的物理架构 63 4.1 物理基础结构更改的规划 63 4.1.1 创建准确的基线调查 63 4.1.2 评估当前的服务级别协议 64 4.2 确定服务器的最优数量和最佳位置 65 4.2.1 物理服务器的考虑 67 4.2.2 逻辑服务器和服务的考虑 68 4.3 理解安全需求 70 4.4 备份和还原 78 4.4.1 备份SSAS 78 4.4.2 备份SSIS 79 4.4.3 备份SSRS 79 4.5 审核与合规 79 4.6 源代码控制 82 4.7 小结 83 第5章 面向架构的OLAP逻辑设计概念 84 5.1 设计基本的OLAP多维数据集 84 5.1.1 星形架构 85 5.1.2 反规范化 91 5.1.3 回到星形 91 5.1.4 其他设计技巧 96 5.1.5 雪花维度建模 97 5.1.6 维度建模补充 100 5.1.7 理解事实(度量)建模 105 5.1.8 BI建模的其他考虑 107 5.2 小结 108 第二部分 Microsoft SQL Server 2008 Analysis Services开发人员指南 第6章 理解SSMS和SQL Server Profiler中的SSAS 111 6.1 SQL Server Analysis Services的核心工具 111 6.1.1 基线服务配置 114 6.1.2 SSMS中的SSAS 115 6.1.3 如何查询SSAS对象 124 6.1.4 使用MDX模板 127 6.1.5 使用DMX模板 130 6.1.6 使用XMLA模板 131 6.1.7 SSMS小结 132 6.2 小结 132 第7章 用BIDS设计OLAP多维数据集 133 7.1 使用BIDS 133 7.2 在“解决方案资源管理器”中工作 135 7.2.1 Analysis Services中的数据源 137 7.2.2 数据源视图 139 7.2.3 Analysis Services中的角色 142 7.2.4 在Analysis Services对象上使用编译后的程序集 143 7.3 用BIDS构建OLAP多维数据集 144 7.4 理解维度 149 7.4.1 属性层次结构 150 7.4.2 属性关系 151 7.4.3 翻译 153 7.5 使用维度 154 7.5.1 度量值组 154 7.5.2 超越星形维度 157 7.6 构建第一个OLAP多维数据集 160 7.6.1 选择度量值组 160 7.6.2 增加维度 160 7.7 小结 164 第8章 优化多维数据集和维度 165 8.1 优化第一个OLAP多维数据集 165 8.1.1 翻译和透视 165 8.1.2 关键绩效指标 167 8.1.3 操作 171 8.1.4 计算(MDX脚本或计算成员) 176 8.2 使用多维数据集和维度属性 179 8.2.1 时间智能 181 8.2.2 SCOPE关键字 181 8.2.3 账户智能和一元运算符定义 182 8.2.4 其他向导选项 185 8.2.5 货币换算 185 8.3 高级多维数据集和维度属性 188 8.4 小结 189 第9章 处理多维数据集和维度 190 9.1 构建、处理和部署OLAP多维数据集 190 9.1.1 区分数据和元数据 191 9.1.2 在断开环境下工作 191 9.1.3 在联机环境下工作 193 9.1.4 理解聚合 193 9.2 分区 194 9.2.1 选择存储模式:MOLAP、HOLAP和ROLAP 196 9.2.2 OLTP表的分区 198 9.2.3 其他OLAP分区配置 199 9.3 实现聚合 199 9.3.1 聚合设计向导 200 9.3.2 基于使用情况的优化向导 202 9.3.3 SQL Server Profiler 203 9.3.4 聚合设计器:高级视图 204 9.4 用MOLAP、HOLAP或ROLAP实现高级存储 205 9.5 主动缓存 206 9.5.1 主动缓存的通知设置 208 9.5.2 主动缓存调优 208 9.5.3 ROLAP维度 209 9.5.4 链接 210 9.5.5 写回 210 9.6 多维数据集和维度处理选项 212 9.7 小结 215 第10章 MDX简介 216 10.1 MDX的重要性 216 10.2 编写第一个MDX查询 217 10.2.1 MDX对象名称 218 10.2.2 MDX语法的其他元素 218 10.3 MDX核心函数 220 10.4 筛选MDX结果集 226 10.5 计算成员和命名集合 228 10.6 TopCount函数 230 10.7 Rank函数和组合 232 10.8 Head和Tail函数 235 10.9 MDX的层次结构函数 236 10.10 日期函数 239 10.10.1 结合使用聚合和日期函数 242 10.10.2 关于查询优化 243 10.11 小结 244 第11章 高级MDX 245 11.1 查询维度属性 245 11.2 从季节角度查看日期维度和MDX 248 11.3 创建持久计算成员 249 11.3.1 在BIDS中创建持久计算成员 249 11.3.2 用MDX脚本创建计算成员 250 11.4 使用IIf 251 11.5 关于命名集 252 11.6 关于脚本 255 11.7 理解SOLVE_ORDER 257 11.8 创建关键绩效指标 258 11.8.1 编程创建KPI 261 11.8.2 KPI的其他提示 262 11.9 在SSRS和PerformancePoint Server上使用MDX 262 11.9.1 在SSRS 2008中使用MDX 262 11.9.2 在PerformancePoint Server 2007上使用MDX 264 11.10 小结 267 第12章 理解数据挖掘结构 268 12.1 审核业务场景 268 12.2 使用BIDS数据挖掘界面 271 12.2.1 理解数据类型和内容类型 272 12.2.2 设置高级数据属性 274 12.2.3 选择数据挖掘模型 275 12.2.4 选择最合适的挖掘模型查看器 278 12.2.5 挖掘准确性图表和预测 281 12.3 数据挖掘算法 284 12.3.1 Microsoft朴素贝叶斯 284 12.3.2 Microsoft决策树算法 288 12.3.3 Microsoft线性回归算法 290 12.3.4 Microsoft时间序列算法 290 12.3.5 Microsoft聚类算法 292 12.3.6 Microsoft序列聚类 294 12.3.7 Microsoft关联算法 295 12.3.8 Microsoft神经网络算法 299 12.3.9 Microsoft逻辑回归 300 12.4 数据挖掘的艺术 301 12.5 小结 301 第13章 实现数据挖掘结构 302 13.1 实现CRISP-DM生命周期模型 302 13.2 用BIDS构建数据挖掘结构 303 13.3 用BIDS增加数据挖掘模型 305 13.4 处理挖掘模型 308 13.5 验证挖掘模型 310 13.5.1 提升图 310 13.5.2 利润图 312 13.5.3 分类矩阵 313 13.5.4 交叉验证 315 13.6 数据挖掘预测查询 316 13.6.1 DMX预测查询 318 13.6.2 DMX预测函数 320 13.7 数据挖掘和Integration Services 322 13.8 数据挖掘对象的处理 324 13.9 数据挖掘客户端 326 13.10 小结 326 第三部分 Microsoft SQL Server 2008 Integration Services开发人员指南 第14章 Microsoft SQL Server 2008 Integration Services的架构组件 329 14.1 Integration Services架构概述 329 14.2 Integration Services包 331 14.3 Integration Services对象模型和组件 334 14.3.1 控制流 335 14.3.2 数据流 335 14.3.3 变量 337 14.3.4 表达式 338 14.3.5 连接管理器 339 14.3.6 事件处理程序和错误处理 340 14.4 Integration Services运行时 341 14.5 Integration Services数据流引擎 342 14.5.1 数据流缓冲区 342 14.5.2 同步数据流输出 346 14.5.3 异步数据流输出 346 14.6 日志提供程序 346 14.7 部署Integration Services包 347 14.7.1 包配置 347 14.7.2 包部署选项 348 14.8 小结 348 第15章 用Business Intelligence Development Studio创建Microsoft SQL Server 2008 Integration Services包 349 15.1 Visual Studio 2008中的Integration Services 349 15.1.1 使用Integration Services项目模板创建新SSIS项目 350 15.1.2 在“解决方案资源管理器”中查看SSIS项目 351 15.1.3 使用SSIS包设计器 352 15.1.4 使用SSIS工具箱 353 15.1.5 SSIS菜单选项 354 15.2 连接管理器 355 15.2.1 标准数据库连接管理器 355 15.2.2 其他类型的连接管理器 356 15.3 控制流 356 15.3.1 控制流任务 358 15.3.2 控制流容器 360 15.3.3 优先约束 360 15.4 数据流 362 15.4.1 数据流源组件 363 15.4.2 目标组件 364 15.4.3 转换组件 364 15.4.4 Integration Services数据查看器 366 15.5 变量 367 15.5.1 “变量”窗口 367 15.5.2 变量属性 368 15.5.3 系统变量 369 15.6 表达式 369 15.7 小结 371 第16章 Microsoft SQL Server 2008 Integration Services的高级功能 372 16.1 Integration Services中的错误处理 372 16.2 SSIS中的事件、日志、调试和事务 373 16.3 日志记录和事件 374 16.4 调试Integration Services包 377 16.5 检查点和事务 378 16.6 设计Integration Services包的最佳实践 380 16.7 数据事件探查 381 16.8 小结 384 第17章 商业智能解决方案中的Microsoft SQL Server 2008 Integration Services包 385 17.1 商业智能的ETL 385 17.2 加载OLAP多维数据集 385 17.2.1 使用Integration Services检测数据质量 386 17.2.2 转换源数据 388 17.2.3 使用中间服务器 388 17.2.4 数据沿袭 392 17.3 转移到星形架构加载 393 17.3.1 加载维度表 393 17.3.2 加载事实数据表 394 17.4 更新 397 17.4.1 事实数据表更新 398 17.4.2 维度表更新 398 17.5 数据挖掘的ETL 399 17.5.1 初始加载 399 17.5.2 模型定型 400 17.5.3 数据挖掘查询 401 17.6 小结 402 第18章 在Microsoft SQL Server 2008 Integration Services中部署和管理解决方案 403 18.1 Integration Services中的解决方案和项目结构 403 18.2 源代码控制 403 18.3 部署问题 407 18.3.1 包配置 409 18.3.2 复制文件部署 411 18.3.3 BIDS部署 412 18.3.4 使用部署实用工具部署 414 18.4 SQL Server代理和集成服务 416 18.4.1 SSIS包安全性介绍 416 18.4.2 处理敏感数据和代理执行账户 419 18.4.3 安全性:两个规则 420 18.5 SSIS服务 420 18.6 小结 421 第19章 扩展和集成SQL Server 2008 Integration Services 422 19.1 SSIS脚本介绍 422 19.2 Visual Studio Tools for Applications 423 19.3 脚本任务 423 19.3.1 Dts对象 425 19.3.2 调试脚本任务 426 19.4 脚本组件 426 19.4.1 ComponentMetaData属性 431 19.4.2 源、转换和目标 432 19.4.3 调试脚本组件 436 19.5 自定义SSIS任务和组件开发概述 436 19.5.1 控制流任务 439 19.5.2 数据流组件 440 19.5.3 其他组件 440 19.6 自定义应用程序中的SSIS集成概述 442 19.7 小结 444 第四部分 Microsoft SQL Server Reporting Services及商业智能的其他客户端界面 第20章 用SQL Server 2008 Reporting Services创建报表 447 20.1 了解Reporting Services的架构 447 20.2 安装和配置Reporting Services 449 20.2.1 HTTP侦听器 451 20.2.2 报表管理器 451 20.2.3 报表服务器Web服务 451 20.2.4 身份验证 452 20.2.5 后台处理(作业管理器) 453 20.3 使用BIDS创建报表 453 20.3.1 其他类型的报表 460 20.3.2 报表示例 460 20.4 部署报表 461 20.5 小结 462 第21章 创建SQL Server 2008 Reporting Services报表 463 21.1 将查询设计器用于Analysis Services 463 21.1.1 MDX查询设计器 464 21.1.2 在查询中设置参数 466 21.1.3 DMX查询设计器 467 21.1.4 在BIDS中使用报表设计器 469 21.2 理解报表项 471 21.2.1 列表和矩形报表项 471 21.2.2 Tablix数据区域 472 21.3 使用报表生成器 474 21.4 小结 477 第22章 高级SQL Sever 2008 Reporting Services 478 22.1 向SSRS报表添加自定义代码 478 22.2 在Word或Excel 2007中查看报表 480 22.3 URL访问 480 22.4 嵌入自定义ReportViewer控件 481 22.5 关于报表参数 485 22.6 关于安全凭据 485 22.7 关于SOAP API 486 22.8 部署——可伸缩性和安全性 490 22.8.1 性能和可伸缩性 490 22.8.2 高级内存管理 491 22.8.3 扩展 492 22.9 管理脚本 493 22.10 小结 494 第23章 用Microsoft Excel 2007作为OLAP多维数据集客户端 495 23.1 使用数据连接向导 495 23.2 使用“导入数据”对话框 497 23.3 理解“数据透视表”界面 497 23.4 创建示例数据透视表 499 23.5 脱机OLAP 501 23.6 Excel OLAP函数 502 23.7 扩展Excel 502 23.8 小结 503 第24章 用Microsoft Office 2007作为数据挖掘客户端 504 24.1 安装数据挖掘外接程序 504 24.2 数据挖掘和Excel 2007的集成 505 24.2.1 使用表分析工具组 506 24.2.2 在Excel 2007中使用“数据挖掘”选项卡 514 24.2.3 “管理”和“模型用法” 515 24.2.4 “数据准备”组 517 24.2.5 “数据建模”组 519 24.2.6 “准确性和验证”组 522 24.3 Visio 2007中的数据挖掘集成 523 24.4 客户端可视化 527 24.5 云形图中的数据挖掘 528 24.6 小结 528 第25章 SQL Server商业智能和Microsoft Office SharePoint Server 2007 529 25.1 Excel Services 529 25.1.1 Excel Services的基本架构 530 25.1.2 Excel工作表的永久性 531 25.1.3 Excel Services工作表的介绍性示例 531 25.1.4 发布参数化Excel工作表 533 25.1.5 Excel Services:Web Services API 535 25.1.6 实际的Excel Services示例 536 25.2 SQL Server Reporting Services与Office SharePoint Server 2007 538 25.2.1 使用Office SharePoint Server 2007配置SQL Server Reporting Services 539 25.2.2 创建并部署一个报表 539 25.2.3 在Office SharePoint Server 2007中使用报表:本机模式 541 25.2.4 在Office SharePoint Server 2007中使用报表:SharePoint集成模式 542 25.2.5 使用报告中心模板 544 25.3 PerformancePoint Server 545 25.4 小结 545 作者介绍 -------------------------------------------------------------------------------- 作者:(美国)兰吉特(Lynn Langit) (美国)Kevin S.Goff (美国)Davide Mauri 等 译者:张猛 杨越 朗亚妹 等 Lynn Langit,MicrosoftMSDN团队的一位开发人员讲师。在加入微软公司之前,Lynn创办了一家提供B0解决方案的开发公司,并担任首席架构师。她拥有很多Microsoft认证,包括MCITP、MCSD、MCDBA和MCT。 Kevin S,Goff,Microsoft MVP和培训师,还是Microsoft金牌认证合作伙伴项目的BI实践负责人。拥有MCP、MCAD、MCDBA和MCT认证。 Davide Mauri,Microsoft MVP,他从65版起就一直使用SQL Server。Sahil Malik咨询师和培训师,多年的Microsoft MVP和INETA发言人。 John Welch ,crosoft MVP,一家专攻BI解决方案的咨询公司的首席架构师。 -------------------------------------------------------------------------------- 9.5.4 链接 在准备处理多维数据集的时候,还有另外两个配置选项和功能需要考虑,即链接对象和写回.我们还要研究有关错误处理的设置(在“多维数据集和维度处理选项”一节),因为根据业务需求不同,这些配置也很重要,而且它们的配置值会影响多维数据集的处理时间。我们先从链接对象开始。 链接对象是需要与当前操作的SSAS数据库相关联的、来自其他SSAS数据库(Analysis Services 2008或Analysis Services 2005)的SSAS对象,如度量值组或维度。链接对象也可以包含KPI、操作和计算。链接对象选项可以用来克服SSAS 2008一个多维数据集只能基于一个数据源视图的局限性。它还可以实现某种伸缩性,因为可以使用多个服务器提供数据查询。 SSAS中使用链接对象的功能默认是禁用的。如果想使用这个选项,需要在SSMS中启用它,需将SSMS连接到SSAS,在SSAS服务器实例上单击右键,选择“属性”选项,然后启用链接。
1. 算法的基本概念 利用计算机算法为计算机解题的过程实际上是在实施某种算法。 (1)算法的基本特征 算法一般具有4个基本特征:可行性、确定性、有穷性、拥有足够的情报。 (2)算法的基本运算和操作 算法的基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 (3)算法的3种基本控制结构 算法的3种基本控制结构是:顺序结构、选择结构、循环结构。 (4)算法基本设计方法 算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。 (5)指令系统 所谓指令系统指的是一个计算机系统能执行的所有指令的集合。 (2)数据结构研究的3个方面 ① 数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; ② 在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; ③ 对各种数据结构进行的运算。 2. 逻辑结构 数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了数据元素之间的前后件关系,通常记为R。一个数据结构可以表示成:B=(D,R) 其中,B表示数据结构。为了反映D中各数据元素之间的前后件关系,一般用二元组来表示。 例如,如果把一年四季看作一个数据结构,则可表示成:B =(D,R) D ={春季,夏季,秋季,冬季} R ={(春季,夏季),(夏季,秋季),(秋季,冬季)} 3. 存储结构 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。 由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系(即前后件关系),在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。 一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存储结构。 顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。 链式存储结构就是在每个结点中至少包含一个指针域,用指针来体现数据元素之间逻辑上的联系。 1.2.2 线性结构和非线性结构 根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。 (1)如果一个非空的数据结构满足下列两个条件: ① 有且只有一个根结点; ② 每一个结点最多有一个前件,也最多有一个后件。 则称该数据结构为线性结构。线性结构又称线性表。在一个线性结构中插入或删除任何一个结点后还应是线性结构。栈、队列、串等都为线性结构。 如果一个数据结构不是线性结构,则称之为非线性结构。数组、广义表、树和图等数据结构都是非线性结构。 (2)线性表的顺序存储结构具有以下两个基本特点: ① 线性表中所有元素所占的存储空间是连续的; ② 线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 元素ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k,ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。 (3)顺序表的运算有查找、插入、删除3种。 1.3 栈 1. 栈的基本概念 栈(stack)是一种特殊的线性表,是限定只在一端进行插入与删除的线性表。 在栈中,一端是封闭的,既不允许进行插入元素,也不允许删除元素;另一端是开口的,允许插入和删除元素。通常称插入、删除的这一端为栈顶,另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。 栈是按照“先进后出”或“后进先出”的原则组织数据的。例如,枪械的子弹匣就可以用来形象的表示栈结构。子弹匣的一端是完全封闭的,最后被压入弹匣的子弹总是最先被弹出,而最先被压入的子弹最后才能被弹出。 二级公共基础知识速学教程 2. 栈的顺序存储及其运算 栈的基本运算有3种:入栈、退栈与读栈顶元素。 ① 入栈运算:在栈顶位置插入一个新元素; ② 退栈运算:取出栈顶元素并赋给一个指定的变量; ③ 读栈顶元素:将栈顶元素赋给一个指定的变量。 1.4 队列 1. 队列的基本概念 队列是只允许在一端进行删除,在另一端进行插入的顺序表,通常将允许删除的这一端称为队头,允许插入的这一端称为队尾。当表中没有元素时称为空队列。 队列的修改是依照先进先出的原则进行的,因此队列也称为先进先出的线性表,或者后进后出的线性表。例如:火车进遂道,最先进遂道的是火车头,最后是火车尾,而火车出遂道的时候也是火车头先出,最后出的是火车尾。若有队列: Q =(q1,q2,…,qn) 那么,q1为队头元素(排头
前言 第1章 地理模型的概念、特点、功能与分类 1.1 地理模型的概念 1.1.1 模型 1.1.2 地理模型 1.2 地理模型的特点 1.3 地理模型的功能 1.3.1 认识地理问题的桥梁 1.3.2 地理科学发现的工具 1.3.3 综合研究的功能 1.4 地理模型的分类 思考题 参考文献 第2章 地理建模的思维导向与原则 2.1 地理建模的思维导向 2.2 地理建模的基本原则 思考题 参考文献 第3章 地理模型建立与应用的若干问题 3.1 建立地理模型的基本步骤 3.2 建立地理模型常用的数学方法 3.3 地理模型的应用方面 3.4 建立与应用地理模型应该注意的问题 思考题 参考文献 第4章 地理建模方法概述 4.1 数据分析法 4.1.1 探索性数据分析 4.1.2 数据分析的地理建模实例 4.2 机理分析法 4.2.1 结构分析法 4.2.2 功能分析法 4.2.3 过程分析法 4.2.4 实例:地理过程中的人类活动作用 4.3 量纲分析法 4.3.1 量纲与基本量纲 4.3.2 量纲齐次性原则与相似定律 4.3.3 地理相似准则 4.4 类比分析法 4.4.1 科学发现中的类比分析法 4.4.2 类比法的地理建模实例 4.5 仿真模拟方法 思考题 参考文献 第5章 非确定型建模方法 5.1 经典统计建模方法 5.1.1 统计检验法 5.1.2 相关分析法 5.1.3 回归分析法 5.1.4 主成分分析法 5.1.5 聚类分析法 5.2 空间统计建模方法 5.2.1 空间自相关分析 5.2.2 空间计量模型 5.3 地统计建模方法 5.3.1 地统计方法的基本原理 5.3.2 应用实例 5.4 模糊数学建模法 5.4.1 模糊数学基本知识 5.4.2 模糊聚类方法 5.4.3 模糊综合评判方法 思考题 参考文献 第6章 运筹决策建模方法 6.1 线性规划方法 6.1.1 线性规划的数学模型 6.1.2 线性规划的标准形式 6.1.3 线性规划的解及其性质 6.1.4 线性规划问题的求解方法——单纯形法 6.1.5 应用实例:农场种植计划模型 6.2 目标规划方法 6.2.1 目标规划模型 6.2.2 求解目标规则的单纯形方法 6.2.3 目标规划模型实例:土地利用规划 6.3 网络分析方法 6.3.1 地理网络的测度 6.3.2 最短路径问题 6.3.3 选址问题 6.3.4 最大流问题及其求解方法 6.3.5 最小费用流及其求解方法 6.4 ahp决策分析方法 6.4.1 ahp决策分析的基本原理与计算方法 6.4.2 应用实例:扶贫开发战略决策定量分析 思考题 参考文献 第7章 信息反馈与系统仿真方法 7.1 控制论与信息反馈方法 7.1.1 几个基本概念 7.1.2 地理系统动态的控制论描述 7.1.3 建模实例:可更新资源的最优利用策略 7.2 灰色系统方法 7.2.1 灰色关联分析方法 7.2.2 灰色预测方法 7.2.3 灰色系统建模方法 7.3 系统动力学方法 7.3.1 系统动力学建模的基本原理 7.3.2 系统动力学建模实例:国土资源约束下的区域发展过程 思考题 参考文献 第8章 非线性分析方法 8.1 分形理论建模方法 8.1.1 分形理论简介 8.1.2 分形理论的地理建模实例 8.2 小波分析建模方法 8.2.1 小波分析理论简介 8.2.2 小波分析方法的地理建模实例 8.3 人工神经网络建模方法 8.3.1 人工神经网络简介 8.3.2 人工神经网络方法的地理建模实例 思考题 参考文献 第9章 地理建模分析中常用的软件 9.1 SPSS及相关软件在地理建模中的应用 9.1.1 回归分析 9.1.2 因子分析 9.1.3 聚类分析 9.1.4 SPSS的其他分析功能 9.1.5 其他相关软件简介 9.2 Matlab软件在地理建模中的应用 9.2.1 Matlab主工具箱(matlab main toolbox) 9.2.2 统计工具箱(statistics toolbox) 9.3 Arcgis和Geoda软件在地统计建模方面的应用 9.3.1 Arcgis地统计模块的应用 9.3.2 Geoda的应用 参考文献
### 回答1: “IT行业收入表.xlsx”是一份包含了IT行业从业人员的工作经验、薪资等信息的数据表格。对于这样一个数据表格,我们可以尝试使用线性回归模型进行数据分析和机器学习。 线性回归模型是一种基于线性关系建立的预测模型,其基本假设是自变量和因变量之间存在线性关系。在应用到这个数据表格中时,我们可以将工作经验作为自变量,薪资作为因变量来建立线性回归模型。通过训练和调整模型,我们可以预测不同工作经验下的薪资水平。 在使用线性回归模型时,我们需要注意以下几个方面: 首先,数据的准确性和完整性对于模型的精准度至关重要。在对数据进行分析时,我们需要仔细检查并清洗数据,保证数据的准确性和完整性。 其次,我们需要选择合适的算法和技术来训练模型,并进行模型选择和调整。对于这个数据表格中的简单线性回归模型,最小二乘法是常用的训练算法之一,但在实际应用中可能需要结合其他算法和技术来提高模型的预测精度。 最后,我们需要对模型的结果进行评估和解释。通过计算模型的 R2 值和 p 值等指标,我们可以评价模型的优劣,并根据模型的结果对不同的数据分析和机器学习应用进行解释和指导。 总之,基于“IT行业收入表.xlsx”这样的数据表格,使用线性回归模型进行数据分析和机器学习是一种有益的方法。通过仔细清洗数据、选择合适的算法和技术、对模型的结果进行评估和解释,我们可以获得更准确的数据分析和机器学习预测结果。 ### 回答2: “IT行业收入表.xlsx”是一个关于IT行业的收入数据表格,可以利用Python中的线性回归模型进行数据分析和机器学习。通过分析这个数据表格,我们可以了解IT行业不同职业的收入情况,对未来的职业选择和职业规划提供参考。 首先,使用Python的pandas包将“IT行业收入表.xlsx”导入程序中。然后,使用pandas提供的数据处理函数,对数据进行清洗和预处理。例如,可以使用dropna函数删除数据表格中的空值,使用groupby函数对不同职业的收入进行分组,并使用describe函数对数据做基本统计分析。 接下来,使用Python中的scikit-learn包构建线性回归模型。将整理好的数据集分成训练集和测试集,并使用LinearRegression函数进行模型训练和测试。根据训练的模型,可以预测不同职业的收入情况。 最后,使用Python中的可视化库matplotlib对数据进行可视化展示,以更直观地理解收入的分布情况和趋势。例如,可以使用散点图表示不同收入水平下的职业数量,或使用折线图表示不同职业的平均收入变化趋势。 总之,使用Python中的线性回归模型可以对“IT行业收入表.xlsx”进行大数据分析和机器学习,为IT从业者和求职者提供参考和借鉴。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值