在临床实验中定量测定线性(范围)评价一般会用到EP-6A方法,其中有一步骤是用多项式回归分析及线性检验
所谓的线性检验,是指对每个非线性系数(多项式回归)作T检验,判断回归系数(b2,b3..bn)与零是否有显著性差异,其中b0与b1不反映非线性,故不需对其进行检验
所以我们需要对测定数据做个多项式回归分析,然后从结果中获得所需的系数(coefficients);因此我们需要了解如何对数据进行多项式回归分析
多项式公式:
\[ \hat{h} = \theta_0 + \theta_1 x^1 + \ ... \ + \theta_{n-1} x^{n-1} + \theta_n x^n \]
如果令x0=1,在多样本的情况下,可以写成向量化的形式:
\[ \hat{h} = X \cdot \theta \]
如果假设中出现了高阶项,那么这个模型还是线性模型吗?此时看待问题的角度不同,得到的结果也不同。如果把上面的假设看成是特征x的方程,那么该方程就是非线性方程;如果看成是参数θ的方程,那么x的高阶项都可以看做是对应θ的参数,那么该方程就是线性方程。很明显,在线性回归中采用了后一种解释方式。因此多项式回归仍然是参数的线性模型。
参考自:【机器学习】多项式回归
Fitting Polynomial Regression in R
在R语言中,线性回归一般会想到用lm()
函数,对于多项式回归也不例外
data <- data.frame(x = c(0.50, 1.00, 1.50, 2.00, 3.00, 4.00, 5.00),
y = c(6.24, 14.21, 23.31, 32.62, 49.28, 67.65, 85.59))
拟合多项式,有两种方法(以二项式为例):
有正交的模型:
fit.plm <- lm(y ~ poly(x, degree = 2), data = data)
无正交的模型:
fit.plm <- lm(y ~ x + I(x^2), data = data)
对于上述两者的区别,可参照:How to interpret coefficients from a polynomial model fit?
If you just want a nudge in the right direction without quite so much judgement: poly() creates orthogonal (not correlated) polynomials, as opposed to I(), which completely ignores correlation between the resultant polynomials. Correlation between predictor variables can be a problem in linear models, so it's probably better (in general) to use poly() instead of I().
若想将正交的结果转化为原来变量的回归方程,需再加个raw = TRUE
参数
fit.plm <- lm(y ~ poly(x, degree = 2, raw = TRUE), data = data)
查看回归拟合结果:
> summary(fit.plm)
Call:
lm(formula = y ~ x + I(x^2), data = data)
Residuals:
1 2 3 4 5 6 7
0.191786 -0.451418 -0.021044 0.562907 -0.398458 0.124486 -0.008259
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.50857 0.53285 -4.708 0.00925 **
x 17.05714 0.48219 35.374 3.81e-06 ***
I(x^2) 0.11284 0.08583 1.315 0.25888
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4278 on 4 degrees of freedom
Multiple R-squared: 0.9999, Adjusted R-squared: 0.9998
F-statistic: 1.384e+04 on 2 and 4 DF, p-value: 2.088e-08
上述coefficients中,一般会关注Estimate
(系数估计值),Std. Error
(系数SE),t value
(T统计量),Pr(>|t|)
(显著性P值),degrees
(自由度)以及Residual standard error
(回归/残差标准误)
对于自由度:
统计推断里面,t检验为n-1,简单理解就是有n个数,我们知道了前n-1个具体的数,同时知道了n个数的平均,我们就可以知道第n个数了,所以其实只有n-1个数是自由的。但是在一元回归里,残差所对应的自由度(即t分布的自由度)=n-p(自变量或者称被解释变量的个数)-1(因变量或者称解释变量的个数)。【其实还是和统计推断里面一样的,不过,TSS=RSS+ESS,TSS里面的自由度是n-1,但是RSS自由度为p(自变量或者称被解释变量的个数),所以ESS自由度为n-p-1】
参考自:t检验自由度如何选择?
对于多项式回归的自由度df = L - Rdf
,其中L
为样本数,Rdf
为回归自由度,一般一次多项式Rdf=1,二次多项式Rdf=2依次类推,即回归方程中系数(包括b0)的个数
对于有重复测试的数据,df需要再考虑样本测定次数,因此
df = L * R - Rdf
,其中R
为每个样本的测定次数
对于回归结果的展示,也可用sjPlot
包的tab_model()
函数来查看更加美观的结果
sjPlot::tab_model(fit.plm, show.se = T, show.stat = T, show.df = T, show.fstat = T, show.dev = T)
Linearity Test
对多项式回归方程进行线性检验(Linearity Test):
对于线性检验,我们可根据每个回归系数的显著性P值来判断 如果二次多项式模型的非线性系数b2,或三次多项式模型的非线性系数b2 和b3中的任意一个与0比较,都有显著差异(P小于0.05),则认为该组数据存在非线性
这只是统计学上的显著性,只是非线性被检测到了;对于临床标准而言,还要进行线性与非线性检验
上述多项式回归分析主要是利用统计学方法进行线性判断,统计学标准的线性可称为一阶线性,对数据组的要求很高。对于在临床实验室中使用的测定方法,在其临床应用实践中允许有一定的非线性误差,此时通过对统计学标准的非线性作程度判断,可得到临床标准的线性,即二阶线性。
临床标准的线性检验中使用了两个统计量,ADL(偏离直线平均差异,average deviation from linearity)与PctBnd(百分区界 ,percent bound) ,对于大多数分析物PctBnd取5%。如ADL小于所要求的临界判断值,则可认为数据组具有临床可接受的线性,所拟合出的最适非线性多项式无临床意义。
参考自:线性范围的评估及数据处理方法以及线性范围评估指南
参考资料:
Fitting Polynomial Regression in R
Polynomial regression techniques
R实现Polynomial regression
https://haifengniu.com/zh/post/r-statistics/
本文出自于http://www.bioinfo-scrounger.com转载请注明出处