首页 > 其他分享 >横截面数据回归

横截面数据回归

时间:2024-07-04 10:10:03浏览次数:9  
标签:CO Hour 模型 回归 残差 Traffic 数据 横截面 Wind

一些笔记

观测值一定要比参数值多
p值<0.05,拒绝H0.
参数显著,不能说明模型对
AIC与BIC准则,越小越好的指标值AIC
回归分析一定要进行残差的正态性检验。所有的残差都大于0,小于0,都不正常。残差正常应该是分布在0的附近,有正有负,它应该是随机的
残差的正态性检验:检验统计量,是否复合正态分布,QQ图检验正态性
经验分布函数与生存分析函数是相反的
多重共线性:
1.判断是否存在多重共线性VIF>10即存在多重共线性

实验

公路一氧化碳数据

数据:
image

先进行一般的回归,假定残差服从正态分布,也是最简单的线性回归,我们先拟合看一看效果怎么样。
\(CO = \beta_0+\beta_1Hour+\beta_2Traffic+\beta_3Wind+\varepsilon\)
以最小二乘法拟合,得到参数估计值
代码:

w <- read.table("D:/cofreewy.txt",header = TRUE)
head(w)
a=lm(CO~.,w)#利用3个自变量做线性回归
summary(a)#展示结果
b=step(a,direction="backward")#逐步回归
summary(b)#展示逐步回归结果

image

由此可以看出,我们拟合的模型是:
\(CO = 1.274+0.018*Traffic+0.175*Wind\)
由此可以看出,我们拟合的模型是:
\(CO = 1.274+0.018*Traffic+0.175*Wind\)

  • \(R^2\)表示线性回归模型中自变量X解释的响应变量y的变化比例.
  • \(R^2\)越大,说明自变量X对响应变量y的解释越强.

这个模型在统计意义上已经不能说明模型对,因为残差是否满足正态分布,我们还不知道,毕竟回归的前提是假设残差满足正态分布。
我们再来看一下残差的分布情况,看看它是否服从正态分布。

shapiro.test(b$res)#做残差的正态性检验

image

我们可以看出p值>0.05,不拒绝原假设(注意:不是接受原假设,是不拒绝原假设),我们可以假设残差服从正态分布。
但这样是不是就好了,这就是最好的模型呢?

qqnorm(b$res);qqline(b$res)#做残差的QQ图.

image
这种线性回归,首先是假定了它的残差是服从正态分布,模型建出来之后,通过QQ图检验它的残差是否真的服从正态分布,那如图所示,如果没有很好的服从或者渐进服从正态呢?怎么办?

注意:在小样本情况下p值0.05的界限不能完全诠释模型优劣
重新拟合,不用线性,用非线性

在此之前让我们先看一看各个属性之间的关系是什么,绘制散点图看一看。

attach(w) #把变量名字放入内存
par(mfrow=c(2,3)) #建立6个图的摆放模式
plot(CO~Traffic);plot(CO~Hour);plot(CO~Wind)
plot(Traffic~Hour);plot(Wind~Hour);plot(Traffic~Wind)
# 也可以直接plot(w),用一行代码直接绘制所有属性的关系。

image
这样就很清楚了,那两个变量之间需要线性关系,那两个之间需要非线性关系,一目了然。
我们可以清晰的看到线性、三角函数,那那个既非线性又非三角函数的周期函数呢?用傅里叶级数。

法国数学家傅里叶认为,任何周期函数都可以用正弦函数和余弦函数构成的无穷级数来表示(选择正弦函数与余弦函数作为基函数是因为它们是正交的),后世称傅里叶级数为一种特殊的三角级数,根据欧拉公式,三角函数又能化成指数形式,也称傅立叶级数为一种指数级数。

# 计算相关系数
cor(cbind(CO,Traffic,Tsq=Traffic^2,Tcub=Traffic^3,
          Hour,Hsq=Hour^2,Hcub=Hour^3,Wind,Wsq=Wind^2,Wub=Wind^3))

注:cbind()函数是R语言中用于合并数据框的函数,它可以将多个数据框按照列合并。
image

# 回归
lm2 <- lm(CO~Traffic+Wind+I(Wind^2)+I(Wind^3)+sin((2*pi/24)*Hour)+
            cos((2*pi/24)*Hour)+sin((4*pi/24)*Hour)+cos((4*pi/24)*Hour))
summary(lm2)
lm3<- step(lm2)
summary(lm3)
anova(lm3)
shapiro.test(lm3$res)
# 去掉不显著的重新拟合
lm4 <- lm(CO~Traffic+Wind+I(Wind^2)+
            cos((2*pi/24)*Hour)+cos((4*pi/24)*Hour))
summary(lm4)
anova(lm4)
shapiro.test(lm4$res)
qqnorm(lm4$res)
qqline(lm4$res)

image

最后的拟合模型为:
\(CO = 1.38+0.017*Traffic+0.459*Wind-0.057Wind^2-0.366cos((\frac{2*pi}{24})*Hour)+0.38cos((\frac{4*pi}{24})*Hour)+\varepsilon\)

注:其中\(\varepsilon\)表示残差,即\(CO_i-\hat{CO}_i\)
注意\(R^2\),此模型要更好


总结:

  1. 线性回归模型中,如果残差服从正态分布,则可以认为模型是合理的。
  2. P值不是万能的,好的模型还是要不断试一试才能出来。
  3. 回归是否有意义,还是要放在实际背景中去看

标签:CO,Hour,模型,回归,残差,Traffic,数据,横截面,Wind
From: https://www.cnblogs.com/stayme/p/18279644

相关文章

  • EXCEL中20个数据处理类函数公式应用实例
    在Excel中,数据处理类函数是进行数据分析和报告制作的重要工具。以下列举了另外20个数据处理类函数及其应用实例,这些函数涵盖了一系列高级的数据处理需求,包括统计分析、财务计算、工程计算以及更复杂的文本和日期时间操作。数据统计与分析STDEV.S函数:用于计算样本标准差。例......
  • IDA7.7 使用IDAPython搜索指定模式的二进制数据方法
    新版的ida弃用了idc.find_binary推荐使用ida_bytes.bin_search方法。ida_bytes.bin_search需要和ida_bytes.parse_binpat_str配合使用。ida_bytes.parse_binpat_str的功能类似于对正则表达式进行编译。ida_bytes.parse_binpat_str官方文档importida_bytesimportidaapiimpo......
  • doris 数据库与mysql的不同之处
    1.doris与mysqldoris可以使用mysql驱动进行连接,也支持mysql的部分语法。2.具体分析 清空表数据在mysql中,清空表数据有两种方式:一种是deletefromtable_name,一种是truncatetabletable_name。而在doris中,清空表数据只能使用truncatetabletable_name。deletefrom......
  • java高仿真数据生成器-需要的拿去
    java高仿真数据生成器源码-需要的拿去nit-random-tools介绍:高仿真数据生成器逆天开源java证号码,姓名,职业,日期,手机号生成器功能列表编号功能描述class1号生成器NitIdcardGenerator2姓名生成器NitChineseNameGenerator3职业生成器NitJobGenerator4日期生成器N......
  • mybatis-plus更新数据时,字段设为null不更新
    updateById()方法不能更新字段为null,即字段为null时,对该字段不会做处理解决方式:1、自己写sql更新,不用mybatisplus的快捷方法2、使用update方法结合UpdateWrapper方式更新以上两种最简便。其他方式:2.设置全局的FieldStrategy(不推荐)#properties文件格式:mybatis-plus.glob......
  • 数据库操作在PHP中是如何进行的?
    在PHP中进行数据库操作主要涉及以下几个步骤:连接数据库:使用mysql_connect()函数建立与MySQL服务器的连接,需要指定服务器地址、用户名和密码。在PHP7.0以后,推荐使用mysqli_connect()或PDO来替代废弃的mysql_connect(),因为它们支持面向对象编程。选择数据库:使用mysql_select......
  • 如何处理TensorFlow中的InvalidArgumentError:数据类型不匹配
    如何处理TensorFlow中的InvalidArgumentError:数据类型不匹配......
  • 常见数据摆渡系统全面比较,哪一款才是众望所归?
    数据摆渡是一种利用物理隔离或特定设备,在不相连的计算机或系统之间传输数据的方法。其原理主要基于中间层的数据处理和转换,确保数据在不同系统之间能够进行有效的交换和共享。对于企业而言,数据摆渡场景主要发生在企业隔离网间。基于网络安全管理需要,企业采用防火墙等网络隔离手段......
  • Acore_characters数据库全面解释
    acore_characters数据库目前有95个表,主要存储与用户账户有关的信息。account_data包含有关客户账户和设置的数据。accountId玩家账户ID。typeValueDescription0全局-账户配置缓存2全局-账户绑定缓存4全局-账户巨集缓存time最后修改的时间。data未......
  • Acore_auth数据库全面解释
    简单说吧,如果你不会源码修改编译,单单玩数据库和DBC就能做出很有特色的端。Azerothcore的数据库是Mysql,所以你得下载个SQL管理工具,大家比较常用的是NavicatSQL,我常用的是HeidiSQL(免费)。连接数据库的话,地址、用户名和密码请自行查找服务端内的worldserver.conf文件,示例:LoginDataba......