精华内容
下载资源
问答
  • 中科大对数线性模型读书笔记,数据预处理的使用场景。
  • 1. 符号 整篇文章里,使用下划线表示向量,例如$ \underline\omega\in \mathbb{R}^d 是由是由是由 \omega_1,\omega_2,\...2.对数线性模型     给定两个集合X\mathcal{X}X和Y\mathcal{Y}Y,假设Y\mathcal{Y...

    1. 符号

    整篇文章里,使用下划线表示向量,例如 ω ‾ ∈ R d \underline\omega\in \mathbb{R}^d ωRd是由 ω 1 , ω 2 , … ω d \omega_1,\omega_2,\dots\omega_d ω1,ω2,ωd
    组成的向量。 e x p ( x ) = e x exp(x)=e^x exp(x)=ex

    2.对数线性模型

        给定两个集合 X \mathcal{X} X Y \mathcal{Y} Y,假设 Y \mathcal{Y} Y是有限集合,我们的目标是构建一个可以估计给定一个输入 x \mathcal{x} x得到标签 y \mathcal{y} y的条件概率 p ( y ∣ x ) \mathcal{p}(\mathcal{y}|\mathcal{x}) p(yx)的模型。例如, x \mathcal{x} x可以是一个单词, y \mathcal{y} y是这个单词的词性(名词、动词、介词等)。我们定义函数 ϕ ‾ : X × Y → R d \underline\phi:\mathcal{X}\times\mathcal{Y}\rightarrow\mathbb{R}^d ϕ:X×YRd,同时假设参数向量 ω ‾ ∈ R d \underline\omega \in \mathbb{R}^d ωRd,在这些假设下对数线性模型可以表示为
    p ( y ∣ x ) = e x p ( ω ‾ ⋅ ϕ ‾ ( x , y ) ) ∑ y ′ ∈ Y e x p ( ω ‾ ⋅ ϕ ‾ ( x , y ′ ) ) \mathcal{p}(\mathcal{y}|\mathcal{x})=\frac{exp(\underline\omega\cdot\underline\phi(\mathcal{x},\mathcal{y}))}{\sum_{\mathcal{y}^\prime\in\mathcal{Y}}exp(\underline\omega\cdot\underline\phi(\mathcal{x},\mathcal{y}^\prime))} p(yx)=yYexp(ωϕ(x,y))exp(ωϕ(x,y))
    这就是在参数 ω ‾ \underline\omega ω下,给定 x \mathcal{x} x条件 y \mathcal{y} y的概率。

    使用这个表达式来表示这个模型的原因如下。内积 ω ‾ ⋅ ϕ ‾ ( x , y ) \underline\omega\cdot\underline\phi(\mathcal{x},\mathcal{y}) ωϕ(x,y)可以是任意值(正的或者负的),可以解释为给定输入 x \mathcal{x} x标签是 y \mathcal{y} y的合理性度量。对每个给定的输入 x \mathcal{x} x,我们可以对每个可能的标签 y ∈ Y \mathcal{y}\in\mathcal{Y} yY计算这个内积。我们可以将这些量转换为一个定义良好的概率分布 p ( y ∣ x ) \mathcal{p}(\mathcal{y}|\mathcal{x}) p(yx)。如果对内积取幂, e x p ( ω ‾ ⋅ ϕ ‾ ( x , y ) ) exp(\underline\omega\cdot\underline\phi(\mathcal{x},\mathcal{y})) exp(ωϕ(x,y)),就得到了一个严格正的量,最后除以一个标准化常数 ∑ y ′ ∈ Y e x p ( ϕ ‾ ( x , y ′ ) ) \sum_{\mathcal{y}^\prime\in\mathcal{Y}}exp(\underline\phi(\mathcal{x},\mathcal{y}^\prime)) yYexp(ϕ(x,y)),这确保了 ∑ y ∈ Y p ( y ∣ x ; ω ‾ ) \sum_{\mathcal{y}\in\mathcal{Y}}{\mathcal{p}(\mathcal{y}|x;\underline\omega)} yYp(yx;ω)。这样我们就将可正可负的内积 ω ‾ ⋅ ϕ ‾ ( x , y ) \underline\omega\cdot\underline\phi(\mathcal{x},\mathcal{y}) ωϕ(x,y)变成了一个概率分布。

    一个重要的问题是我们怎样从数据估计出参数 ω ‾ \underline\omega ω。接下来我们讨论这个问题。

    对数似然函数。为了估计这个参数,假设我们有n组打好标签的样本, { x i , y i } i = 1 n \{\mathcal{x}_i,\mathcal{y}_i\}_{i=1}^n {xi,yi}i=1n。似然函数就是
    L ( ω ‾ ) = ∑ i = 1 n log ⁡ p ( y i ∣ x i ; ω ‾ ) \mathcal{L}(\underline\omega)=\sum_{i=1}^n \log \mathcal{p}(\mathcal{y}_i|\mathcal{x}_i;\underline\omega) L(ω)=i=1nlogp(yixi;ω)

    L ( ω ‾ ) \mathcal{L}(\underline\omega) L(ω)是对给定的 ω ‾ \underline\omega ω解释这些样本的一个度量,一个好的 ω ‾ \underline\omega ω应该会给每个 p ( y i ∣ x i ; ω ‾ ) i = 1 … 2 \mathcal{p}(\mathcal{y}_i|\mathcal{x}_i;\underline\omega) \quad i=1\dots 2 p(yixi;ω)i=12 赋予一个较大的值,从而使 L ( ω ‾ ) \mathcal{L}(\underline\omega) L(ω)也较大。

    最大似然估计是
    ω ‾ ∗ = a r g   max ⁡ ω ‾ ∈ R d ∑ i = 1 n log ⁡ p ( y i ∣ x i ; ω ‾ ) \underline\omega^*= arg\,\max_{\underline\omega\in\mathbb{R}^d} \sum_{i=1}^n \log \mathcal{p}(\mathcal{y}_i|\mathcal{x}_i;\underline\omega) ω=argωRdmaxi=1nlogp(yixi;ω)

    最大似然估计是在 L ( ω ‾ ) \mathcal{L}(\underline\omega) L(ω)评判标准下,求出对训练集拟合最好的参数的一种方法。

    找出最大似然估计。给定训练集 { x i , y i } i = 1 n \{\mathcal{x}_i,\mathcal{y}_i\}_{i=1}^n {xi,yi}i=1n,我们怎样找出最大似然参数估计 ω ‾ ∗ \underline\omega^* ω呢?不幸的是,解析解在一般情况下并不存在,通常使用基于梯度的方法来最优化 L ( ω ‾ ) \mathcal{L}(\underline\omega) L(ω)。最简单的方法就是梯度上升法,大致使用如下步骤:

    1. 初始化 ω ‾ 0 \underline\omega^0 ω0,比如设 ω ‾ j 0 j = 1 … d \underline\omega_j^0\quad j=1\dots d ωj0j=1d

    2. For t=1…T:

      • For j=1…d:
        ω j t = ω j t − 1 + α t × ∂ ∂ ω j L ( ω ‾ t − 1 ) \omega_j^t=\omega_j^{t-1}+\alpha_t\times \frac{\partial}{\partial\omega_j}\mathcal{L}(\underline\omega^{t-1}) ωjt=ωjt1+αt×ωjL(ωt1)
        其中 α t \alpha_t αt是学习率, ∂ ∂ ω j L ( ω ‾ t − 1 ) \frac{\partial}{\partial\omega_j}\mathcal{L}(\underline\omega^{t-1}) ωjL(ωt1) L \mathcal{L} L相对于 ω j \omega_j ωj的偏导数。
    3. 返回最终的参数 ω ‾ T \underline\omega^T ωT

    实践中,有更多精妙的最优化方法可以使用:一个共同的选择是使用L-BFGS(一种拟牛顿法),这里就不去探究这种方法的细节了。好消息是很多软件的L-BFGS是直接可用的,实现L-BFGS需要我们计算目标函数 L ( ω ‾ ) \mathcal{L}(\underline\omega) L(ω),和它的偏导数 ∂ ∂ ω j L ( ω ‾ ) \frac{\partial}{\partial\omega_j}\mathcal{L}(\underline\omega) ωjL(ω)。所幸,这很容易计算:

    ∂ ∂ ω j L ( ω ‾ ) = ∑ i ϕ j ( x i , y i ) − ∑ i ∑ y p ( y ∣ x i ; ω ‾ ) ϕ j ( x i , y ) \frac{\partial}{\partial\omega_j}\mathcal{L}(\underline\omega)= \sum_i\phi_j(x_i,y_i)-\sum_i\sum_yp(y|x_i;\underline\omega)\phi_j(x_i,y) ωjL(ω)=iϕj(xi,yi)iyp(yxi;ω)ϕj(xi,y)

    第一个求和项 ∑ i ϕ j ( x i , y i ) \sum_i\phi_j(x_i,y_i) iϕj(xi,yi),将所有样本 { x i , y i } i = 1 n \{\mathcal{x}_i,\mathcal{y}_i\}_{i=1}^n {xi,yi}i=1n的第j个特征 ϕ j ( x i , y i ) \phi_j(x_i,y_i) ϕj(xi,yi)求和。第二个求和项对所有样本的第j个特征的期望 ∑ y p ( y ∣ x i ; ω ‾ ) ϕ j ( x i , y ) \sum_yp(y|x_i;\underline\omega)\phi_j(x_i,y) yp(yxi;ω)ϕj(xi,y)求和。

    正则化对数似然函数。在很多应用,在对数似然函数中加上额外的正则项是非常有好处的。修改后的函数变为:

    L ( ω ‾ ) = ∑ i = 1 n log ⁡ p ( y i ∣ x i ; ω ‾ ) − λ 2 ∣ ∣ ω ‾ ∣ ∣ 2 \mathcal{L}(\underline\omega)=\sum_{i=1}^n \log \mathcal{p}(\mathcal{y}_i|\mathcal{x}_i;\underline\omega) - \frac{\lambda}{2}||\underline\omega||^2 L(ω)=i=1nlogp(yixi;ω)2λω2

    这里 ∣ ∣ ω ‾ ∣ ∣ 2 = ∑ i ω i 2 ||\underline\omega||^2=\sum_i \omega_i^2 ω2=iωi2, λ \lambda λ是一个超参数,决定正则项的强度。还是和上面一样,我们所求的参数为:

    ω ‾ ∗ = a r g   max ⁡ ω ‾ ∈ R d L ( ω ‾ ) \underline\omega^*= arg\,\max_{\underline\omega\in\mathbb{R}^d}\mathcal{L}(\underline\omega) ω=argωRdmaxL(ω)
    此时,在估计参数时有一个权衡取舍,我们想使 log ⁡ p ( y i ∣ x i ; ω ‾ ) \log p(y_i|x_i;\underline\omega) logp(yixi;ω)尽量大,但同时还要保持范数 ∣ ∣ ω ‾ ∣ ∣ 2 ||\underline\omega||^2 ω2尽量小( λ \lambda λ越大,则我们希望范数越小)。正则项惩罚大的参数值。

    直觉上,我们可以认为正则项是对复杂模型的一个惩罚,参数越大,模型越复杂。我们想要寻找可以很好拟合样本的模型,但我们也不想模型过于复杂(过拟合)

    在实践中,往对数线性模型添加正则项是非常有用的。特别是在d很大时,这种场景在自然语言处理程序中是非常常见的,甚至d比训练样本数n还大的情况也存在,在这些情况下只要添加正则项惩罚大的参数值,我们还是可以获得较好的泛化性能。

    寻找最优化参数
    ω ‾ ∗ = a r g   max ⁡ ω ‾ ∈ R d L ( ω ‾ ) \underline\omega^*= arg\,\max_{\underline\omega\in\mathbb{R}^d}\mathcal{L}(\underline\omega) ω=argmaxωRdL(ω)还是可以使用基于梯度的方法,只需稍微修改偏导数公式为:

    ∂ ∂ ω j L ( ω ‾ ) = ∑ i ϕ j ( x i , y i ) − ∑ i ∑ y p ( y ∣ x i ; ω ‾ ) ϕ j ( x i , y ) − λ ω j \frac{\partial}{\partial\omega_j}\mathcal{L}(\underline\omega)= \sum_i\phi_j(x_i,y_i)-\sum_i\sum_yp(y|x_i;\underline\omega)\phi_j(x_i,y)-\lambda\omega_j ωjL(ω)=iϕj(xi,yi)iyp(yxi;ω)ϕj(xi,y)λωj

    展开全文
  • R语言广义线性模型

    万次阅读 2014-07-01 14:59:39
    1.广义线性模型和glm()函数 广义线性模型扩展了线性模型的框架,它包含了非正态因变量的分析。 广义线性模型通过拟合响应变量的条件均值的一个函数(不是响应变量的条件均值),假设响应变量服从指数分布族中...

    1.广义线性模型和glm()函数

    广义线性模型扩展了线性模型的框架,它包含了非正态因变量的分析。

    广义线性模型通过拟合响应变量的条件均值的一个函数(不是响应变量的条件均值),假设响应变量服从指数分布族中的某个分布(并不仅限于正态分布),极大地扩展了标准线性模型。模型参数估计的推导依据的是极大似然估计,而非最小二乘法。

    (1)与glm()连用的函数

    函数

    描述

    summary

    展示拟合模型的细节

    Coefficients()、coef()

    列出拟合模型的参数(截距项和斜率)

    Confint()

    给出模型参数的置信(默认为95%)

    Residuals()

    列出拟合模型的残差值

    Anova()

    生成两个拟合模型的方差分析表

    Plot()

    生成评价拟合模型的诊断图

    Predict()

    用拟合模型对新数据集进行预测


    (2)模型拟合和回归诊断

    当评价模型的适用性时,可以绘制初始响应变量的预测值与残差的图形

    Eg:

    Plot(predict(model,type=”response”),residuals(model,type=”deviance”))

    R中列出帽子(hat value)、学生化残差值和Cook距离统计量的近似值

    对于识别异常点的阈值,并没有统一答案,都是通过相互比较来进行判断的

    可绘制各统计量的参考图,然后找出异常大的值

     Eg

    Plot(hatvalues(models))

    Plot(rstudent(model))

    Plot(cooks.distance(model))

     

    还可以:

    Library(car)

    InfluencePlot(model)

    2.  Logistic回归

    (1)Logistic

    当通过一系列连续型和/或类别型预测变量来预测二值型结果变量时,Logistic回归是一个非常有用的工具。

    Eg:

    AER包中的数据框Affairs为例

    install.packages("AER")
    library(AER)
    data(Affairs,package="AER")
    summary(Affairs)
    Affairs$ynaffair[Affairs$affairs>0]<-1
    Affairs$ynaffair[Affairs$affairs==0]<-0
    Affairs$ynaffair<-factor(Affairs$ynaffair,levels=c(0,1),labels=c("No","Yes"))
    table(Affairs$ynaffair)
    fit.full<-glm(ynaffair~gender+age+yearsmarried+children+religiousness+education+occupation+rating,data=Affairs,family=binomial())
    summary(fit.full)



    fit.reduced<-glm(ynaffair~age+yearsmarried+religiousness+rating,data=Affairs,family=binomial())
    summary(fit.reduced)
    


    新模型的每个回归系数都非常显著,由于两模型嵌套,故可以使用anova()函数对它们进行比较,对于广义线性回归,可用卡方检验。

    anova(fit.reduced,fit.full,test="Chisq")


    (2)解释模型参数

    先看回归系数

    coef(fit.reduced)

    因对数优势化解释性差,故可对结果进行指数化

    exp(coef(fit.reduced))

    若有需要还可使用confit()函数获取系数的置信区间

    (3)评价预测变量对结果概率的影响

    使用predict()观察某个预测变量在各个水平时对结果概率的影响

    testdata<-data.frame(rating=c(1,2,3,4,5),age=mean(Affairs$age),
                         yearsmarried=mean(Affairs$yearsmarried),
                         religiousness=mean(Affairs$religiousness))
    testdata
    testdata$prob<-predict(fit.reduced,newdata=testdata,type="response")
    testdata


    testdata<-data.frame(rating=mean(Affairs$rating),
                         age=seq(17,57,10),
                         yearsmarried=mean(Affairs$yearsmarried),
                         religiousness=mean(Affairs$religiousness))
    testdata
    testdata$prob<-predict(fit.reduced,newdata=testdata,type="response")
    testdata


    (4)过度离势

    所谓过度离势,即观测到的响应变量的方差大于期望的二项分布的方差。

    过度离势会导致奇异的标准误检验和不精确的显著性检验

    当出现过度离势时,仍可使用glm()函数拟合Logistic回归,但此时需要将二项分布必为类二项分布(quasibinomial distribution)

     

    检测过度离势的一种方法是比较二项分布模型的残差偏差与自由度,若比值:r=残差偏差/残差自由度 ,比1大很多,便认为是存在过度离势。

     

    还可对过度离势进行检验:需拟合模型两次第一次使用family="binomial",第二次使用family="quasibinomial"


    fit<-glm(ynaffair~age+yearsmarried+religiousness+rating,family=binomial(),data=Affairs)
    fit.od<-glm(ynaffair~age+yearsmarried+religiousness+rating,family=quasibinomial(),data=Affairs)
    pchisq(summary(fit.od)$dispersion*fit$df.residual,fit$df.residual,fit$df.residual,lower=F)

    (5)扩展

    R中扩展的Logistic回归和变种如下所示:
    稳健Logistic回归:robust包中的glmRob()函数可用来拟合稳健的广义纯属模型,包括稳健Logistic回归;当拟合回归模型数据出现离群点和强影响点时,稳健Logistic思贤如渴便可泒上用场。
    多项式回归:若响应变量包含两个以上的无序类别,便可使用mlogit包中的mlogit()函数拟合多项Logistic回归;
    序数Logistic回归:若响应变量是一有序的类别,便可使用rms包中的lrm()函数拟合Logistic回归

    3.泊松回归

    当通过一系列连续型和/或类别型预测变量来预测计数型结果变量时,泊松回归是一个非常有用的工具。

    利用robust 包中的Breslow癫痫数据

    install.packages("robust")
    library(robust)
    data(breslow.dat,package="robust")
    names(breslow.dat)
    summary(breslow.dat[c(6:8,10)])
    opar<-par(no.readonly=TRUE)
    par(mfrow=c(1,2))
    attach(breslow.dat)
    hist(sumY,breaks=20,xlab="Seizure Count",main="Distribution of Seizures")
    boxplot(sumY~Trt,xlab="Treatment",main="Group Comparisons")
    par(opar)



    fit<-glm(sumY~Base+Age+Trt,data=breslow.dat,family=poisson())
    summary(fit)

    (1)解释模型参数

    使用coef()函数可获取模型系数,或调用summary()函数的输出结果中的Coefficients表格

    coef(fit)
    exp(coef(fit))
    

    与Logistic回归中的指数化参数相似,泊松模型中的指数化参数对响应变量的影响都是成倍增加的,而不是线性相加。

    (2)过度离势

    泊松分布的方差和均值相等,当响应变量观测的方差比根据汽枪颁预测的方差在时,泊松回归可能发生过度离势。

    可能发生过度离势的原因有如下几个:

    遗漏了某个重要的预测变量;

    可能因为事件相关;

    在纵向数据分析中,重复测量的数据由于内在群聚特性可导致过度离势。此处暂不讨论纵向泊松模型。



    与Logisitic回归类似,此处如果残差偏差与残差自由度的给远远大于1,则表明存在过度离势。

    qcc包提供了一个对泊松模型过度离势的检验方法

    install.packages("qcc")
    library(qcc)
    qcc.overdispersion.test(breslow.dat$sumY,type="poisson")


    p<0.05,进一步表明确实存在过度离势。

    通过用family="quasipoisson"替换family="poisson",仍可使用glm()函数对该数据进行拟合,与Logistic回归中处理过度离势的方法是相同的。

    fit.od<-glm(sumY~Base+Age+Trt,data=breslow.dat,family=quasipoisson())
    summary(fit.od)

    (3)扩展

    R提供了基本汽枪回归模型的一些有用扩展,包括允许时间段变化、存在过多0时会自动修正的模型,以及当数据存在离群点和强影响点时有用的稳健模型。

    时间段变化的泊松回归

    fit<-glm(sumY~Base+Age+Trt,data=breslow.dat,offset=log(time),family=poisson())

    零膨胀的泊松回归

    在一个数据集中,0计数的数目时常比用泊松模型预测的数目多。当总体的一个子群体无任何被计数的行为时,就可能发生这种情况。

    稳健泊松回归

    robust包中的glmRob()函数可拟合稳健广义线性模型,包含稳健泊松回归。当存在离群点和强影响点时,该方法很有效。













    展开全文
  • “应用线性模型”中,我们打算将一种理论(线性模型理论)应用于具体案例。通常,我会介绍理论的主要观点:假设,主要结果,并进行示范来直观地解释。这里查看一个真实的案例研究,它包含真实数据,2400个观测值,34...

    原文链接:http://tecdat.cn/?p=18348 

    原文出处:拓端数据部落公众号

    应用线性模型”中,我们打算将一种理论(线性模型理论)应用于具体案例。通常,我会介绍理论的主要观点:假设,主要结果,并进行示范来直观地解释。这里查看一个真实的案例研究,它包含真实数据,2400个观测值,34个变量。

    这里只有11个观察值,一个简单的线性模型。让我们对这些数据进行线性回归

    
    plot(base,pch=19,ylim=c(30,180))
    abline(lm(y~x,data=base),col="red")

    回归线(最大程度地减少误差平方和)是红色曲线

     
    Coefficients:
                Estimate Std. Error t value Pr(&gt;|t|)
    (Intercept)  50.7225    39.3979   1.287     0.23
    x             0.4867     0.2747   1.772     0.11

    我们可以清楚地看到我们的曲线似乎是凹的,开始时增加,结束时减少,可以进行非参数平滑

    
         scatter.smooth(x, y,
            lpars = list(col = "red")

     

    我们可以进一步回答“最大数目在哪里吗”,可以建议一个值,找到一个置信区间吗?

    我们可以考虑一个二次模型,换句话说,我们的预测将是 抛物线

    
    lm(y~x+I(x^2),data=base)
    

    我们可以看到,该模型不仅在视觉上看起来更加符合实际,如果我们看一看回归的结果,该模型也更好

    
     
    Coefficients:
                  Estimate Std. Error t value Pr(&gt;|t|)    
    (Intercept) -3.255e+02  5.589e+01  -5.824 0.000394 ***
    x            6.569e+00  8.744e-01   7.513 6.84e-05 ***
    I(x^2)      -2.203e-02  3.143e-03  -7.011 0.000111 ***
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

    现在我们可以证明,对于形式为y =β2x2 +β1x +β0的抛物线,最优值以x⋆=θ= −β1 /2β2来获得。那么θ的自然估计量就是θ= −β 1 /2β2,通过最小化误差平方和。但是如何获得该估计量的方差?通过考虑以下因素,我们自然可以尝试Delta方法

    (渐近)方差在这里

    然后我们通过用未知量的估计值替换未知值来获得此渐近方差的估计量。

    
    theta=-beta[2]/(2*beta[3])
    theta
    [1]  149.0676 
    s2=t(dg) %*% sigma %*% dg
    s2
             [,1]
    [1,] 94.59911
    sqrt(s2)
             [,1]
    [1,] 9.726207

    换句话说,如果假设估计量的正态性,我们有以下置信区间

    
    arrows(vx-qt(.975,n-3)*sqrt(s2),vy,

    我们还可以尝试另一种策略 。对于我们的二次模型,我们通常在高斯假设下对数似然函数

    logL = function(pm){
    
      -sum(log(dnorm (base$y-(b0+b1*base$x+b2*base$x^2)) ,0,b3
    }

    在这里,第一个方法是引入θ(其中抛物线的最大值是)作为模型参数之一-例如代替β2

    logL = function(pm){
    
      -sum(log(dnorm( base$y-b0+b1 base$x-.5*b1/theta base$x^2) ,0,b3
    

    如果我们寻找最大似然函数,我们得到

     optim(par=c(-213,3.5,110,2),logL)
    $par
    [1] -325.5    6.5  149.0   13.6 
     
    $value
    [1] 44.3 

    这与我们之前的计算是一致的。第二个方法是分析似然函数:我们说在多元参数中,一个比另一个更重要。在给定θ的情况下,其他函数才最大化。从技术上讲,参数θ的轮廓对数似然是

    logL=function(theta){
    
      -sum(log(dnorm( base$y- b0+b1*base$x-.5*b1/theta*base$x^2 ,0,b3)
    
      optim(par )$value
     

    我们可以绘制结果

    
    plot(v1,-v2,type="l",xlim=range(base$x) 

    在这里达到最大值 

    opt
    $minimum
    [1] 149.068

    这与我们的计算是一致的。然后,我们可以得到结果的似然比检验

    
    abline(h=ref,lty=2,col="red")

    然后我们可以在初始图中绘制置信区间

    
    points(vx,vy,pch=19,cex=1.5,col="red")
    arrows(min(v1[id]),vy,max(v1[id]),vy,code=3,angle=90,

    就像大多数统计技术一样,这些都是渐近结果,仅凭11个观察结果无法保证其有效性

    另一个解决方案是使用模拟。我们假设观测值是模型,并且是噪声。我们可以将非参数模型(局部平滑)作为模型并假设高斯噪声。为了生成其他样本,我们将观测值保存在x中,另一方面,对于y,我们将使用y +ε,其中ε将根据正态分布绘制

    
    loess.smooth(x = newbase$x, y= newbase$y 
    lines(reg$x,reg$y 
    
    for(i in 1:20) simu(TRUE)
    lines(loess.smooth(x = base$x, y= base$y, evaluation = 501)

    给定数据的不对称性,我们再次使用非参数模型。并且我们通过数值计算最大值。我们重复10,000次。

     
    hist(V,probability = TRUE 
    lines(density(V) 
    

    在这里,我们有在10,000个模拟样本上观察到的最大值的经验分布。我们可以通过经验分位数来获得置信区间

     
    arrows(quantile(V,.025 ,vy,quantile(V,.975 


    最受欢迎的见解

    1.R语言多元Logistic逻辑回归 应用案例

    2.面板平滑转移回归(PSTR)分析案例实现

    3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

    4.R语言泊松Poisson回归模型分析案例

    5.R语言回归中的Hosmer-Lemeshow拟合优度检验

    6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

    7.在R语言中实现Logistic逻辑回归

    8.python用线性回归预测股票价格

    9.R语言如何在生存分析与Cox回归中计算IDI,NRI指标

    展开全文
  • 广义线性模型(GLM)是通过连接函数,把自变量线性组合和因变量的概率分布连起来,该概率分布可以是高斯分布、二项分布、多项式分布、泊松分布、伽马分布、指数分布。连接函数有:

    原文链接:http://tecdat.cn/?p=14887 

    广义线性模型(GLM) 是通过连接函数,把自变量线性组合和因变量的概率分布连起来,该概率分布可以是高斯分布、二项分布、多项式分布、泊松分布、伽马分布、指数分布。连接函数有:

    • 平方根连接(用于泊松模型)

    考虑一些均值μ和方差σ2的随机变量Y。利用泰勒展开式

    假使,考虑平方根变换g(y)= \ sqrt {y} g(y)= y,则第二个等式变为

    因此,通过平方根变换,我们具有方差稳定性,可以将其解释为一定的同调性。

    • 伯努利模型的对数函数

    假设变量是泊松变量,

    先前的模型看起来像是伯努利回归分析,其中H作为链接函数,\ mathbb {P}

    因此,现在假设代替观察N,我们观察到Y = 1(N> 0)。在那种情况下,运行带有对数链接函数的伯努利回归,首先与对原始数据运行泊松回归,然后在我们的二进制变量零和非零上使用。让我们先生成一些模拟数据,比较从标准逻辑回归得到的eλx和px

    
    regPois = glm(Y~.,data=base,family=poisson(link="log"))
    regBinom = glm((Y==0)~.,data=base,family=binomial(link="probit"))
    

    如果px \是从Bernoulli回归中获得的,并且具有连接功能,该怎么办?

    
    plot(prob,1-exp(-lambda),xlim=0:1,ylim=0:1)
    abline(a=0,b=1,lty=2,col="red")

    拟合很好,现在,如果我们对婚姻出轨数据集,由雷·费尔,在1978年出版的  期刊政治经济学  (含563个观察,九个变量)进行建模:

    
    prob = predict(regBinom, type="response")
    plot(prob,exp(-lambda),xlim=0:1,ylim=0:1)
    abline(a=0,b=1,lty=2,col="red")

    在这种情况下,这两种模型结果是非常不同的。第二个模型也是

    
    plot(prob,1-exp(-lambda),xlim=0:1,ylim=0:1)
    abline(a=0,b=1,lty=2,col="red")

    我们如何解释呢?是因为泊松模型不好吗?我们在这里运行零膨胀模型进行比较,

    
    summary(regZIP)
     
    Count model coefficients (poisson with log link):
                 Estimate Std. Error z value Pr(&gt;|z|)    
    (Intercept) -0.002274   0.048413  -0.047    0.963    
    X1           1.019814   0.026186  38.945   &lt;2e-16 ***
    X2           1.004814   0.024172  41.570   &lt;2e-16 *** 
    Zero-inflation model coefficients (binomial with logit link): 
                Estimate Std. Error z value Pr(&gt;|z|)  
    (Intercept) -4.90190    2.07846  -2.358   0.0184 *
    X1          -2.00227    0.86897  -2.304   0.0212 *
    X2          -0.01545    0.96121  -0.016   0.9872  
    ---
    Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

    由于零的膨胀,我们在这里拒绝了泊松分布的假设,可以使用对数连接来检查泊松分布是否是一个好的模型。


    参考文献

    1.用SPSS估计HLM层次线性模型模型

    2.R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)

    3.基于R语言的lmer混合线性回归模型

    4.R语言Gibbs抽样的贝叶斯简单线性回归仿真分析

    5.在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析

    6.使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM

    7.R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化

    8.R语言用线性回归模型预测空气质量臭氧数据

    9.R语言分层线性模型案例

    展开全文
  • 假设y=b*exp(a*x)的关系,...(3)summary(lm(log(z)~x)) #对数化后的log(z)与x存在线性关系,截距不为0 虽然都表示指数关系,t检验和F检验都通过,但是三者的R2不相同,因为: (1)和(3)式看起来都表示了y=b*...
  • 至于为何选择Sigmoid函数,后面可以从广义线性模型导出为什么是Sigmoid函数。 逻辑回归可以看作是在线性回归的基础上构建的分类模型,理解的角度有多种(最好的当然是概率解释和最小对数损失),而最直接的理解是...
  • 在这里仅考虑一个协变量,例如汽车的寿命,以及两个不同的模型:一个Gamma模型和一个对数正态模型。 > age=0:20 > reggamma.sp (cout~agevehi,family=Gamma(link="log"), + data=couts) > Pgamma (reggamma.sp,new...
  • 本文说明了R包dlnm实现分布式滞后线性和非线性模型(DLM和DLNM)的建模框架的开发。首先,本文描述了除时间序列数据之外的DLM / DLNM方法的一般化方法,在Gasparrini [2014]中有更详细的描述。此外,此插图还说明了...
  • R语言与非线性回归模型

    千次阅读 2019-11-16 12:41:13
    一个可以转化为线性模型,如果对模型(6.52)两边取对数,得到 它具有如下线性模型的形式,即参与参数是线性的。类似于模型(6.52)那样,可以通过适当的变换转达化为线性模型的非线性模型称为内在线性的。然而,...
  • 在这篇文章中,我将从一个基本的线性模型开始,然后从那里尝试找到一个更合适的线性模型。 数据预处理 由于空气质量数据集包含一些缺失值,因此我们将在开始拟合模型之前将其删除,并选择70%的样本进行训练并将...
  • 基于R语言线性回归模型诊断

    千次阅读 2015-10-13 23:41:04
    一、线性回归模型假设条件我们接着上篇文章《R语言下的线性回归模型》开始讲解线性模型诊断方面的操作。我们说过,线性模型的参数估计采用了最小二乘法的思想,但基于该思想是有前提...
  • 本文演示了在时间序列分析中应用分布滞后线性和非线性模型(DLMs和DLNMs)。Gasparrini等人[2010]和Gasparrini[2011]阐述了DLMs和DLNMs的发展以及时间序列数据的实现。本文描述的示例涵盖了时间序列数据DLNM方法的...
  • R语言小白学习笔记14—线性模型笔记链接学习笔记14—线性模型14.1 简单线性回归14.2 多元回归——以纽约市公开数据详细分析 笔记链接 学习笔记1—R语言基础. 学习笔记2—高级数据结构. 学习笔记3—R语言读取数据. ...
  • 上周在非人寿保险课程中,我们了解了广义线性模型的理论,强调了两个重要组成部分 在链接功能(这实际上是在预测模型的关键部件) 分布或方差函数 仅作说明,请考虑我最喜欢的数据集 ­lin.mod = lm(dist~speed,...
  • 在此,我们开发了分布式滞后非线性模型(DLNM),这是一个可以同时代表非线性暴露-反应依赖性和滞后效应的建模框架。这种方法是基于 "交叉基准 "的定义,这是一个双维的函数空间,它同时描述了沿预测空间和其发生的...
  • 我们也可以在其中一个练习中使用MASS包来实现逐步线性回归。 我们将在实验室稍后使用此软件包中使用BAS.LM来实现贝叶斯模型。 数据 本实验室将使用的数据是在全国935名受访者中随机抽取的。 变量 描述
  • 我们已经花费了不少篇幅来学习回归诊断,你可能会问:“如果发现了问题,那么能做些什么呢?”有四种方法可以处理...删除最大的离群点或者强影响点后,模型需要重新拟合。若离群点或强影响点仍然存在,重复以上过...
  • 本文对应《R语言实战》第13章:广义线性模型 广义线性模型扩展了线性模型的框架,包含了非正态因变量的分析。 两种流行模型:Logistic回归(因变量为类别型)和泊松回归(因变量为计数型) glm()函数的参数 ...
  • 星期三,在课堂上,我们已经看到了如何可视化多元回归模型(带有两个连续的解释...通过对数链接从(标准)广义线性模型获得的预测 > reg1=glm(cout~ageconducteur+agevehicule,data=base,family=Gamma(lin...
  • 在本文中,我们将用R语言对数据进行线性混合效应模型的拟合,然后可视化你的结果。 线性混合效应模型是在有随机效应时使用的,随机效应发生在对随机抽样的单位进行多次测量时。来自同一自然组的测量结果本身并不是...
  • 为了说明,考虑以下数据集,其中包含5个观察值x = c(1,2,3,4,5)y = c(1,2,4,2,6)base = data.frame(x,y)然后考虑具有不同分布的几个模型,以及一个链接regNId = glm(y~x,family=gaussian(link="identity...
  • 结果表明,带有 skew-t 误差的对数线性模型可用于将总销售额(以千美元计)建模为员工人数和总资产(以千美元计)的函数,并且是通过比较具有误差项的几个对数线性模型之间的 Akaike 信息标准而获得的,这些误差项...
  • 使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM 7.R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化 8.R语言用线性回归模型预测空气质量臭氧数据 9.R语言分层线性模型案例
  • 线性混合效应模型与我们已经知道的线性模型有什么不同? 线性混合模型(有时被称为 "多层次模型 "或 "层次模型",取决于上下文)是一种回归模型,它同时考虑了(1)被感兴趣的自变量(如lm())所解释的变化--固定...
  • 二、简单线性回归 三、指数变换 四、生存分析数据的Cox回归模型 一、数据 1.数据信息 口咽癌数据(pharynx.csv)是针对口咽若干位置癌细胞的临床实验。分成两组,一组仅使用放疗(TX=1),另一组使用放疗和化疗...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,915
精华内容 2,366
关键字:

r语言对数线性模型