python回归p值
A. 如何用python写 数据分析工具
数据导入
导入本地的或者web端的CSV文件;
数据变换;
数据统计描述;
假设检验
单样本t检验;
可视化;
创建自定义函数。
t : 浮点或数组类型
t统计量prob : 浮点或数组类型
two-tailed p-value 双侧概率值重复100次; 然后
计算出置信区间包含真实均值的百分比
数据导入
这是很关键的一步,为了后续的分析我们首先需要导入数据。通常来说,数据是CSV格式,就算不是,至少也可以转换成CSV格式。在Python中,我们的操作如下:
Python
1
2
3
4
5
6
7
8
import pandas as pd
# Reading data locally
df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')
# Reading data from web
data_url = "t/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"
df = pd.read_csv(data_url)
为了读取本地CSV文件,我们需要pandas这个数据分析库中的相应模块。其中的read_csv函数能够读取本地和web数据。
数据变换
既然在工作空间有了数据,接下来就是数据变换。统计学家和科学家们通常会在这一步移除分析中的非必要数据。我们先看看数据:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Head of the data
print df.head()
# OUTPUT
0 12432934148330010553
1 41589235 4287806335257
2 17871922 19551074 4544
317152 14501 3536 1960731687
4 12662385 25303315 8520
# Tail of the data
print df.tail()
# OUTPUT
74 2505 20878 3519 1973716513
7560303 40065 7062 1942261808
76 63116756 3561 1591023349
7713345 38902 2583 1109668663
78 2623 18264 3745 1678716900
对R语言程序员来说,上述操作等价于通过print(head(df))来打印数据的前6行,以及通过print(tail(df))来打印数据的后6行。当然Python中,默认打印是5行,而R则是6行。因此R的代码head(df, n = 10),在Python中就是df.head(n = 10),打印数据尾部也是同样道理。
在R语言中,数据列和行的名字通过colnames和rownames来分别进行提取。在Python中,我们则使用columns和index属性来提取,如下:
Python
1
2
3
4
5
6
7
8
9
10
11
# Extracting column names
print df.columns
# OUTPUT
Index([u'Abra', u'Apayao', u'Benguet', u'Ifugao', u'Kalinga'], dtype='object')
# Extracting row names or the index
print df.index
# OUTPUT
Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78], dtype='int64')
数据转置使用T方法,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Transpose data
print df.T
# OUTPUT
01 23 45 67 89
Abra1243 41581787171521266 5576 927215401039 5424
Apayao2934 92351922145012385 7452109917038138210588
Benguet148 42871955 353625307712796 24632592 1064
Ifugao3300
... 69 70 71 72 73 74 75 76 77
Abra ...12763 247059094 620913316 250560303 631113345
Apayao ...376251953235126 6335386132087840065 675638902
Benguet... 2354 4045 5987 3530 2585 3519 7062 3561 2583
Ifugao ... 9838171251894015560 774619737194221591011096
Kalinga...
78
Abra2623
Apayao 18264
Benguet 3745
Ifugao 16787
Kalinga16900
Other transformations such as sort can be done using<code>sort</code>attribute. Now let's extract a specific column. In Python, we do it using either<code>iloc</code>or<code>ix</code>attributes, but<code>ix</code>is more robust and thus I prefer it. Assuming we want the head of the first column of the data, we have
其他变换,例如排序就是用sort属性。现在我们提取特定的某列数据。Python中,可以使用iloc或者ix属性。但是我更喜欢用ix,因为它更稳定一些。假设我们需数据第一列的前5行,我们有:
Python
1
2
3
4
5
6
7
8
9
print df.ix[:, 0].head()
# OUTPUT
0 1243
1 4158
2 1787
317152
4 1266
Name: Abra, dtype: int64
顺便提一下,Python的索引是从0开始而非1。为了取出从11到20行的前3列数据,我们有:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
print df.ix[10:20, 0:3]
# OUTPUT
AbraApayaoBenguet
109811311 2560
1127366 15093 3039
12 11001701 2382
13 7212 11001 1088
14 10481427 2847
1525679 15661 2942
16 10552191 2119
17 54376461734
18 10291183 2302
1923710 12222 2598
20 10912343 2654
上述命令相当于df.ix[10:20, ['Abra', 'Apayao', 'Benguet']]。
为了舍弃数据中的列,这里是列1(Apayao)和列2(Benguet),我们使用drop属性,如下:
Python
1
2
3
4
5
6
7
8
9
print df.drop(df.columns[[1, 2]], axis = 1).head()
# OUTPUT
AbraIfugaoKalinga
0 1243330010553
1 4158806335257
2 17871074 4544
317152 1960731687
4 12663315 8520
axis参数告诉函数到底舍弃列还是行。如果axis等于0,那么就舍弃行。
统计描述
下一步就是通过describe属性,对数据的统计特性进行描述:
Python
1
2
3
4
5
6
7
8
9
10
11
12
print df.describe()
# OUTPUT
AbraApayaoBenguetIfugao Kalinga
count 79.000000 79.00000079.000000 79.000000 79.000000
mean 12874.37974716860.6455703237.39240512414.62025330446.417722
std16746.46694515448.1537941588.536429 5034.28201922245.707692
min927.000000401.000000 148.000000 1074.000000 2346.000000
25% 1524.000000 3435.5000002328.000000 8205.000000 8601.500000
50% 5790.00000010588.0000003202.00000013044.00000024494.000000
75%13330.50000033289.0000003918.50000016099.50000052510.500000
max60303.00000054625.0000008813.00000021031.00000068663.000000
假设检验
Python有一个很好的统计推断包。那就是scipy里面的stats。ttest_1samp实现了单样本t检验。因此,如果我们想检验数据Abra列的稻谷产量均值,通过零假设,这里我们假定总体稻谷产量均值为15000,我们有:
Python
1
2
3
4
5
6
7
from scipy import stats as ss
# Perform one sample t-test using 1500 as the true mean
print ss.ttest_1samp(a = df.ix[:, 'Abra'], popmean = 15000)
# OUTPUT
(-1.1281738488299586, 0.26270472069109496)
返回下述值组成的元祖:
通过上面的输出,看到p值是0.267远大于α等于0.05,因此没有充分的证据说平均稻谷产量不是150000。将这个检验应用到所有的变量,同样假设均值为15000,我们有:
Python
1
2
3
4
5
6
print ss.ttest_1samp(a = df, popmean = 15000)
# OUTPUT
(array([ -1.12817385, 1.07053437, -65.81425599,-4.564575, 6.17156198]),
array([2.62704721e-01, 2.87680340e-01, 4.15643528e-70,
1.83764399e-05, 2.82461897e-08]))
第一个数组是t统计量,第二个数组则是相应的p值。
可视化
Python中有许多可视化模块,最流行的当属matpalotlib库。稍加提及,我们也可选择bokeh和seaborn模块。之前的博文中,我已经说明了matplotlib库中的盒须图模块功能。
;
Python中,程序如下:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import numpy as np
import scipy.stats as ss
def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
m = np.zeros((rep, 4))
for i in range(rep):
norm = np.random.normal(loc = mu, scale = sigma, size = n)
xbar = np.mean(norm)
low = xbar - ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
up = xbar + ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
if (mu > low) & (mu < up):
rem = 1
else:
rem = 0
m[i, :] = [xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
上述代码读起来很简单,但是循环的时候就很慢了。下面针对上述代码进行了改进,这多亏了Python专家,看我上篇博文的15条意见吧。
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import scipy.stats as ss
def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
scaled_crit = ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))
xbar = norm.mean(1)
low = xbar - scaled_crit
up = xbar + scaled_crit
rem = (mu > low) & (mu < up)
m = np.c_[xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
更新
那些对于本文ipython notebook版本感兴趣的,请点击这里。这篇文章由Nuttens Claude负责转换成ipython notebook 。
B. 怎么用python算p值和t检验
引入相关模块,这次我们使用stats的
产生两列随机变量,用到了stats。norm.rvs,参数loc表示平均数,scale表示标准差,size是样本量这是产生的两个变量的数据的一部分
ttest_rel的用法:输出t和p值从p值可以看出,这两列数据是没有差异的。
当然,ttest_rel还可以接受pandas.DataFrame数据,先从excel中读取数据我们可以看一下数据的基本内容:
我们可以选择scoreA和ScoreB这两列数据进行T检验输出的结果可见两列变量均值无差异
我们还可以同时对多个变量进行检验,比如:这是产生的结果可见:第一个array表示t值,两个表示p值,因此我们可以知道p(scoreA)=0.126>0.05
C. pytnon中如何计算皮尔逊的p值
如何理解皮尔逊相关系数(Pearson Correlation Coefficient)?
皮尔逊相关系数理解有两个角度
其一, 按照高中数学水平来理解, 它很简单, 可以看做将两组数据首先做Z分数处理之后, 然后两组数据的乘积和除以样本数
Z分数一般代表正态分布中, 数据偏离中心点的距离.等于变量减掉平均数再除以标准差.(就是高考的标准分类似的处理)
标准差则等于变量减掉平均数的平方和,再除以样本数,最后再开方.
所以, 根据这个最朴素的理解,我们可以将公式依次精简为:
其二, 按照大学的线性数学水平来理解, 它比较复杂一点,可以看做是两组数据的向量夹角的余弦.
皮尔逊相关的约束条件
从以上解释, 也可以理解皮尔逊相关的约束条件:
1 两个变量间有线性关系
2 变量是连续变量
3 变量均符合正态分布,且二元分布也符合正态分布
4 两变量独立
在实践统计中,一般只输出两个系数,一个是相关系数,也就是计算出来的相关系数大小,在-1到1之间;另一个是独立样本检验系数,用来检验样本一致性.
先举个手算的例子
使用维基中的例子:
例如,假设五个国家的国民生产总值分别是1、2、3、5、8(单位10亿美元),又假设这五个国家的贫困比例分别是11%、12%、13%、15%、18%。
创建2个向量.(R语言)
x<-c(1,2,3,5,8)
y<-c(0.11,0.12,0.13,0.15,0.18)
按照维基的例子,应计算出相关系数为1出来.我们看看如何一步一步计算出来的.
x的平均数是:3.8
y的平均数是0.138
所以,
sum((x-mean(x))*(y-mean(y)))=0.308
用大白话来写就是:
(1-3.8)*(0.11-0.138)=0.0784
(2-3.8)*(0.12-0.138)=0.0324
(3-3.8)*(0.13-0.138)=0.0064
(5-3.8)*(0.15-0.138)=0.0144
(8-3.8)*(0.18-0.138)=0.1764
0.0784+0.0324+0.0064+0.0144+0.1764=0.308
同理, 分号下面的,分别是:
sum((x-mean(x))^2)=30.8sum((y-mean(y))^2)= 0.00308
用大白话来写,分别是:
(1-3.8)^2=7.84 #平方
(2-3.8)^2=3.24 #平方
(3-3.8)^2=0.64 #平方
(5-3.8)^2=1.44 #平方
(8-3.8)^2=17.64 #平方
7.84+3.24+0.64+1.44+17.64=30.8
同理,求得:
sum((y-mean(y))^2)= 0.00308
然后再开平方根,分别是:
30.8^0.5=5.5497750.00308^0.5=0.05549775
用分子除以分母,就计算出最终结果:
0.308/(5.549775*0.05549775)=1
再举个简单的R语言例子(R在这里下载:http://cran.r-project.org/bin/macosx/)
假设有100人, 一组数据是年龄,平均年龄是35岁,标准差是5岁;另一组数据是发帖数量,平均帖子数量是45份post,标准差是8份帖子.
假设这两组都是正态分布.我们来求这两者的皮尔逊相关系数,R脚本如下:
> x<-rnorm(n=100,mean=35,sd=5) #创建一组平均数为35,标准差为5,样本数为100的随机数
> y<-rnorm(n=100,mean=45,sd=8) #创建一组平均数为45,标准差为8,样本数为100的随机数
> cor.test(x,y,method="pearson") #计算这两组数的相关,并进行T检验
然后R输出结果为:
Pearson's proct-moment correlation
data: x and y
t = -0.0269, df = 98, p-value = 0.9786
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.1990316 0.1938019
sample estimates:
cor
-0.002719791
当然,这里是随机数.也可以用非随机的验证一下计算.
皮尔逊相关系数用于网站开发
直接将R与Ruby关联起来
调用很简单,仿照上述例子:
cor(x,y)
就输出系数结果了.
有这么几个库可以参考:
https://github.com/alexgutteridge/rsr...
https://github.com/davidrichards/stat...
https://github.com/jtprince/simpler
说明, 以上为ruby调用库. pythone程序员可以参考: Rpy (http://rpy.sourceforge.net/)
简单的相关系数的分类
0.8-1.0 极强相关
0.6-0.8 强相关
0.4-0.6 中等程度相关
0.2-0.4 弱相关
0.0-0.2 极弱相关或无相关
ps : 这个网站开发者不要再次发明轮子,本来用markdown语法写作很爽,结果又不得不花时间来改动.请考虑尽快支持Markdown语法.
皮尔森相关系数的就是
x和y的协方差/(x的标准差∗y的标准差)
判断两组数的线性关系程度。
D. 如何用python实现含有虚拟自变量的回归
参考资料:
DataRobot | Ordinary Least Squares in Python
DataRoboe | Multiple Regression using Statsmodels
AnalyticsVidhya | 7 Types of Regression Techniques you should know!
E. 多项式回归和多元式回归区别!
方差分析与回归分析是有联系又不完全相同的分析方法。方差分析主要研究各变量对结果的影响程度的定性关系,从而剔除对结果影响较小的变量,提高试验的效率和精度。而回归分析是研究变量与结果的定量关系,得出相应的数学模式。在回归分析中,需要对各变量对结果影响进行方差分析,以剔除影响不大的变量,提高回归分析的有效性。
方差分析(Analysis of Variance,简称ANOVA),又称“变异数分析”,是R.A.Fisher发明的,用于两个及两个以上样本均数差别的显着性检验。 由于各种因素的影响,研究所得的数据呈现波动状。造成波动的原因可分成两类,一是不可控的随机因素,另一是研究中施加的对结果形成影响的可控因素。方差分析是从观测变量的方差入手,研究诸多控制变量中哪些变量是对观测变量有显着影响的变量。
回归分析是研究各因素对结果影响的一种模拟经验方程的办法,回归分析(regression analysis)是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。运用十分广泛,回归分析按照涉及的变量的多少,分为一元回归和多元回归分析。
回归分析中,会用到方差分析来判断各变量对结果的影响程度,从而确定哪些因素是应该纳入到回归方程中,哪些由于对结果影响的方差小而不应该纳入到回归方程中。
F. 怎么看python中逻辑回归输出的解释
以下为python代码,由于训练数据比较少,这边使用了批处理梯度下降法,没有使用增量梯度下降法。
##author:lijiayan##data:2016/10/27
##name:logReg.pyfrom numpy import *import matplotlib.pyplot as pltdef loadData(filename):
data = loadtxt(filename)
m,n = data.shape print 'the number of examples:',m print 'the number of features:',n-1 x = data[:,0:n-1]
y = data[:,n-1:n] return x,y#the sigmoid functiondef sigmoid(z): return 1.0 / (1 + exp(-z))#the cost functiondef costfunction(y,h):
y = array(y)
h = array(h)
J = sum(y*log(h))+sum((1-y)*log(1-h)) return J# the batch gradient descent algrithmdef gradescent(x,y):
m,n = shape(x) #m: number of training example; n: number of features x = c_[ones(m),x] #add x0 x = mat(x) # to matrix y = mat(y)
a = 0.0000025 # learning rate maxcycle = 4000 theta = zeros((n+1,1)) #initial theta J = [] for i in range(maxcycle):
h = sigmoid(x*theta)
theta = theta + a * (x.T)*(y-h)
cost = costfunction(y,h)
J.append(cost)
plt.plot(J)
plt.show() return theta,cost#the stochastic gradient descent (m should be large,if you want the result is good)def stocGraddescent(x,y):
m,n = shape(x) #m: number of training example; n: number of features x = c_[ones(m),x] #add x0 x = mat(x) # to matrix y = mat(y)
a = 0.01 # learning rate theta = ones((n+1,1)) #initial theta J = [] for i in range(m):
h = sigmoid(x[i]*theta)
theta = theta + a * x[i].transpose()*(y[i]-h)
cost = costfunction(y,h)
J.append(cost)
plt.plot(J)
plt.show() return theta,cost#plot the decision boundarydef plotbestfit(x,y,theta):
plt.plot(x[:,0:1][where(y==1)],x[:,1:2][where(y==1)],'ro')
plt.plot(x[:,0:1][where(y!=1)],x[:,1:2][where(y!=1)],'bx')
x1= arange(-4,4,0.1)
x2 =(-float(theta[0])-float(theta[1])*x1) /float(theta[2])
plt.plot(x1,x2)
plt.xlabel('x1')
plt.ylabel(('x2'))
plt.show()def classifyVector(inX,theta):
prob = sigmoid((inX*theta).sum(1)) return where(prob >= 0.5, 1, 0)def accuracy(x, y, theta):
m = shape(y)[0]
x = c_[ones(m),x]
y_p = classifyVector(x,theta)
accuracy = sum(y_p==y)/float(m) return accuracy
调用上面代码:
from logReg import *
x,y = loadData("horseColicTraining.txt")
theta,cost = gradescent(x,y)print 'J:',cost
ac_train = accuracy(x, y, theta)print 'accuracy of the training examples:', ac_train
x_test,y_test = loadData('horseColicTest.txt')
ac_test = accuracy(x_test, y_test, theta)print 'accuracy of the test examples:', ac_test
学习速率=0.0000025,迭代次数=4000时的结果:
似然函数走势(J = sum(y*log(h))+sum((1-y)*log(1-h))),似然函数是求最大值,一般是要稳定了才算最好。
从上面这个例子,我们可以看到对特征进行归一化操作的重要性。
G. 数据分析员用python做数据分析是怎么回事,需要用到python中的那些内容,具体是怎么操作的
最近,Analysis with Programming加入了Planet Python。我这里来分享一下如何通过Python来开始数据分析。具体内容如下:
数据导入
导入本地的或者web端的CSV文件;
数据变换;
数据统计描述;
假设检验
单样本t检验;
可视化;
创建自定义函数。
数据导入
1
这是很关键的一步,为了后续的分析我们首先需要导入数据。通常来说,数据是CSV格式,就算不是,至少也可以转换成CSV格式。在Python中,我们的操作如下:
import pandas as pd
# Reading data locally
df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')
# Reading data from web
data_url = "https://raw.githubusercontent.com/alstat/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"
df = pd.read_csv(data_url)
为了读取本地CSV文件,我们需要pandas这个数据分析库中的相应模块。其中的read_csv函数能够读取本地和web数据。
1
既然在工作空间有了数据,接下来就是数据变换。统计学家和科学家们通常会在这一步移除分析中的非必要数据。我们先看看数据(下图)
对R语言程序员来说,上述操作等价于通过print(head(df))来打印数据的前6行,以及通过print(tail(df))来打印数据的后6行。当然Python中,默认打印是5行,而R则是6行。因此R的代码head(df, n = 10),在Python中就是df.head(n = 10),打印数据尾部也是同样道理
9
plt.show(sns.lmplot("Benguet", "Ifugao", df))
在Python中,我们使用def函数来实现一个自定义函数。例如,如果我们要定义一个两数相加的函数,如下即可:
def add_2int(x, y):
return x + y
print add_2int(2, 2)
# OUTPUT
4
顺便说一下,Python中的缩进是很重要的。通过缩进来定义函数作用域,就像在R语言中使用大括号{…}一样。这有一个我们之前博文的例子:
产生10个正态分布样本,其中和
基于95%的置信度,计算和;
重复100次; 然后
计算出置信区间包含真实均值的百分比
Python中,程序如下:
import numpy as np
import scipy.stats as ss
def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
m = np.zeros((rep, 4))
for i in range(rep):
norm = np.random.normal(loc = mu, scale = sigma, size = n)
xbar = np.mean(norm)
low = xbar - ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
up = xbar + ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
if (mu > low) & (mu < up):
rem = 1
else:
rem = 0
m[i, :] = [xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
上述代码读起来很简单,但是循环的时候就很慢了。下面针对上述代码进行了改进,这多亏了Python专家
import numpy as np
import scipy.stats as ss
def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
scaled_crit = ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))
xbar = norm.mean(1)
low = xbar - scaled_crit
up = xbar + scaled_crit
rem = (mu > low) & (mu < up)
m = np.c_[xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
数据变换
创建自定义函数
H. 用微表格能做回归分析
1、 先看回归统计表,Multiple R即相关系数R的值,和我们之前做相关分析得到的值一样,大于0.8表示强正相关。
2、 回归统计表中的R Square是R平方值,R平方即R的平方,又可以叫判定系数、拟合优度,取值范围是[0,1],R平方值越大,表示模型拟合的越好。一般大于70%就算拟合的不错,60%以下的就需要修正模型了。这个案例里R平方0.9054,相当不错。
3、 Adjusted R是调整后的R方,这个值是用来修正因自变量个数增加而导致模型拟合效果过高的情况,多用于衡量多重线性回归。
4、 第二张表,方差分析表,df是自由度,SS是平方和,MS是均方,F是F统计量,Significance F是回归方程总体的显着性检验,其中我们主要关注F检验的结果,即Significance F值,F检验主要是检验因变量与自变量之间的线性关系是否显着,用线性模型来描述他们之间的关系是否恰当,越小越显着。这个案例里F值很小,说明因变量与自变量之间显着。
5、 残差是实际值与预测值之间的差,残差图用于回归诊断,回归模型在理想条件下的残差图是服从正态分布的。
6、 第三张表我们重点关注P-value,也就是P值,用来检验回归方程系数的显着性,又叫T检验,T检验看P值,是在显着性水平α(常用取值0.01或0.05)下F的临界值,一般以此来衡量检验结果是否具有显着性,如果P值>0.05,则结果不具有显着的统计学意义,如果0.01<P值<0.05,则结果具有显着的统计学意义,如果P<=0.01,则结果具有极其显着的统计学意义。T检验是看某一个自变量对于因变量的线性显着性,如果该自变量不显着,则可以从模型中剔除。
7、 从第三张表的第一列我们可以得到这个回归模型的方程:y=4361.486+1.198017x,此后对于每一个输入的自变量x,都可以根据这个回归方程来预测出因变量Y。