-
2021-04-01 23:59:30
1 变量
1.1 概念
可以改变的数,称为变量。在Java语言中,所有的变量在使用前必须声明。
一般通过“变量类型 变量名 = 变量值 ;”这三部分来描述一个变量。如:int a = 3 ;
变量的使用原则:就近原则,即尽量控制变量的使用范围到最小1.2 局部变量
位置:定义在方法里或者方法的声明上
注意:必须手动初始化来分配内存.如:int i = 5;或者int i; i = 5;
生命周期:随着方法的调用而存在,方法运行完毕就释放了1.3 成员变量
位置:定义在类里方法外
注意:不用初始化,也会自动被初始化成默认值
生命周期:整个类中,类消失了,成员变量才会释放
1.4 练习:变量的默认值测试
创建包: cn.tedu.basic
创建类: TestVariable1.javapackage cn.tedu.design; /*本类用于测试各种类型变量的默认值*/ public class TestVariable1 { static String name; static byte b;//整数类型默认值都是0 static short c; static int d; static long e; static float f;//小数类型的默认值是0.0 static double g; static char j;//char类型的默认值是\u0000 static boolean h;//boolean类型的默认值是false public static void main(String[] args) { System.out.println(name);//null,引用类型的默认值 System.out.println(b); System.out.println(c); System.out.println(d); System.out.println(e); System.out.println(f); System.out.println(g); System.out.println(h); System.out.println(j); System.out.println(h); } }
1.5 练习:局部变量与成员变量测试
创建包: cn.tedu.basic
创建类: TestVariable2.javapackage cn.tedu.oop; /**本类用于测试变量的使用*/ public class TestVariable2 { //2.定义成员变量: //1)位置:类里方法外 //2)无需手动初始化,会自动赋予对应类型的默认值 //3)作用域:在整个类中生效,类消失,变量才会消失 static int count; //3.变量有一个使用的原则:就近原则 static int sum = 200; public static void main(String[] args) { //1.定义局部变量: //1)位置:在方法里/局部代码块里 //2)必须手动初始化 //3)作用域:在方法/局部代码块中,对应的代码执行完局部变量就被释放 int sum = 100;//定义在方法中的局部变量sum System.out.println(sum);//变量的就近原则:使用的都是自己附近的变量,100 System.out.println(count); for (int i = 0; i < 10; i++) {//局部变量i只能在循环中使用 System.out.println(i); } //System.out.println(i);//报错:无法引用变量i:i cannot be resolved to a variable } }
2 方法
2.1 概述
被命名的代码块,方法可以含参数可以不含参数,可以提高代码的复用性。
2.2 方法定义的格式
2.3 方法调用顺序图
顺序执行代码,调用指定方法,执行完毕,返回调用位置
2.4 练习:测试方法的调用顺序/参数/返回值
创建包:cn.tedu.method
创建类:TestMethod .javapackage cn.tedu.method; /**本类用于测试方法*/ public class TestMethod { //1.创建程序的入口函数main() public static void main(String[] args) { System.out.println(1); /**2.我们通过方法名+参数列表的方式来调用方法的功能*/ method1();//调用method1() System.out.println(2); method2(3);//调用method2() int result = method3(1,2);//调用method3() System.out.println(result); } /**3.如果方法想要返回值,必须修改返回值类型 * 并且return对应类型的结果 * 如果方法的返回值类型是void,不允许有返回值 * */ /*本方法用来测试方法的返回值类型*/ public static int method3(int i, int j) { /**4.通过return关键字将方法结果返回到调用位置*/ return i+j; } /**1.方法的修饰符 方法的返回值类型 方法名(方法参数){方法体}*/ /*method1()想测试方法的调用顺序*/ public static void method1() { System.out.println(5); System.out.println(6); System.out.println(7); } /*本方法用来测试方法的参数,参数的位置在小括号里*/ public static void method2(int a) { System.out.println("海绵宝宝今年:"+ a +"岁啦~"); } }
2.5 方法的重载
方法的重载是指在一个类中定义多个同名的方法,但是每个方法的参数列表不同(也就是指参数的个数和类型不同),程序在调用方法时,可以通过传递给他们的不同个数和类型的参数来决定具体调用哪个方法.
2.6 练习:测试方法的重载
创建包: cn.tedu.method
创建类: TestMethodOverload.javapackage cn.tedu.method; /**本类用于测试方法的重载*/ public class TestMethodOverload { public static void main(String[] args) { /**1.我们根据方法名+参数列表确定具体调用哪个方法*/ /**2.方法的重载: * 在同一个类中,存在方法名相同,但参数列表不同的方法 * 如果在同类中,同名方法的参数个数不同,一定构成重载 * 如果在同类中,同名方法的参数个数相同, * 需要查看对应位置上参数的类型,而不是参数名,与参数名无关 * (int a,String b)与(int b,String a)--不构成重载 * (int a,String b)与(String a,int b)--构成重载 * */ //2.调用method() method(); //4.调用method(int) method(666); //6.调用method(int,String) method(888,"泡泡"); } //1.创建一个无参的method() public static void method() { System.out.println("哈哈哈哈我没参数"); } //3.创建一个method(int n) public static void method(int n) { System.out.println("哈哈哈哈我的参数是:"+n); } //5.创建一个method(int n,String s) public static void method(int a,String b) { System.out.println(b+"今晚要干他"+a+"碗大米饭"); } public static void method(String a,int b) { System.out.println(b+"今晚要干他"+a+"碗大米饭"); } }
3 拓展 成员变量与局部变量的区别
更多相关内容 -
多元回归分析(线性回归)
2020-08-13 18:14:30多元线性回归分析一、回归的基本理解(1)回归的基本任务(2)回归里的关键词(3)回归里的数据类型(4)回归方程中的系数解释(5)核心解释变量和控制变量(6)特殊的自变量:虚拟变量X二、例题:电商平台的奶粉...一、回归的基本理解
(1)回归的基本任务
回归分析是数据分析中最基础也是最重要的分析工具,它通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。
(2)回归里的关键词
这里涉及到三个重要的关键词:相关性、自变量X、因变量Y
同时需要注意的是相关性与因果性的区别:
我们使用回归分析的结果只是一个相关性的答案,并不是因果关系。在绝大多数情况下,我们没有能力去探究两件事之间发生的严格因果关系、不能很绝对的说这件事的发生是因为这件事导致的,所以我们只能退而求其次,改成通过回归分析,去研究两者的相关关系,也就是说这件事的发生和另外一件事有关联。因变量Y
因变量Y就是我们研究的核心变量,因变量Y一般可以分为以下几种数据类型- 连续数值型变量:经济学家研究经济增长的决定因素,那么这个因变量Y可以选择GDP增长率
- 0-1型变量:P2P公司要研究借款人是否能按时还款,那么因变量Y可以涉及成一个二值变量,Y=0表示可以还款,Y=1表示不能还款
- 定序变量:在网店的评价等级,一星表示非常差劲,二星表示一般,三星表示合格,四星表示还可以,五行表示很满意
- 计数变量:在管理学FRM模型中,F代表一定时间内,客户到访的次数,次数其实就是一个非负的整数
- 生存变量:研究某个产品的使用寿命、企业寿命、人的寿命,这类型数据往往不能精确的观测到,例如需要研究吸烟对于寿命的影响,那么样本中的老王60岁,那么他的寿命就可以记为60+
自变量X
X是解释Y的相关变量,Y为被解释变量,即X为解释变量、Y为被解释变量。通过以上的分析,回归的分析的任务就是完成3个任务:
- 选择(识别)重要的变量:哪些变量是真的同Y相关,哪些不是
- 判断相关性的方向:就是X变量通Y变量的相关性为正相关还是负相关
- 估计权重:赋予不同的自变量X不同的权重,通过回归后的系数,得出不同变量之间的相对重要性
(3)回归里的数据类型
- 横截面数据:在某一时间点收集的不同对象的数据;例如:发放的调查问卷、全国个省份2018年的GDP数据
- 时间序列数据:对同一对象在不同时间连续观察所取得的数据;例如:从出生到现在你的身高数据,中国历年来的GDP数据
- 面板数据:横截面数据与时间序列数据综合起来的一种数据资源;例如2008-2018年我国个省份的GDP数据
针对与不同的数据会使用不同的解决和处理方法
在这我们仅讨论横截面数据的处理,即多元线性回归。(4)回归方程中的系数解释
主要分为四类模型的回归系数解释:
-
一元线性回归
-
双对数模型
-
半对数模型(对自变量)
-
半对数模型(对因变量)
这里会涉及一个解释变量取对数的情况:
什么时候取对数?
(5)扰动项要满足的条件
一般我们设计的线性回归方程长这样:
在回归中需要扰动项是球形扰动,球形扰动就是要求满足”同方差“和”无自相关“两个条件。条件一:同方差:
即对于任意的i j,当i=j时,他们的协方差相等。条件二:无自相关
扰动项和回归里的解释变量没有相关性。PS:
- 横截面数据容易出现异方差问题
- 时间序列数据容易出现自相关问题
(1)异方差的检验(同方差要求)
BP检验
在回归后使用Stata命令 estat hettest ,rhs iid
怀特检验(使用最多)
在实际应用中更多使用的时怀特检验,BP检验只是怀特检验的一个特例。
在回归后使用Stata命令 estat imtest ,white
原假设:扰动项不存在异方差,P值小于0.05,说明在95%的置信水平下拒绝原假设,即认为扰动项存在异方差。(2)异方差如何解决
使用OLS+稳健的标准误 更加常用
使用命令 regress y x1 x2 x3 ... xk,robust
广义最小二乘法GLS
(3)多重共线性的检验(无自相关要求)
多重共线性存在会出现的两种现象
- **现象一:**虽然整个回归方程的拟合优度很大,F检验也很显著,但是对于单个系数的T检验却并不显著,或者是系数的估计值不合理,甚至符号与理论的预期相反。
- **现象二:**添加或者是减少解释变量会使得系数估计值发生较大的变化(比如:后面加入的解释变量与以有的解释变量相关,构成多重共线性)
检验多重共线性— 方差膨胀因子–VIF
在Stata回归后使用命令 计算个自变量的VIF estat vif
(4)多重共线性的解决方法
(6)核心解释变量和控制变量
有了对回归系数的理解,并且已知在进行回归之前会选择真正对因变量有关的自变量,然后再进行回归分析,可知因变量的选择非常的重要。
对于同一个题目,第二个回归方程相较于第一个回归方程多添加了一个变量,产品的价格,而从得到的结果来看,在向回归方程中添加新的自变量产品价格后,对回归系数的影响非常大,因此可以知道的是,变量的遗漏会对回归结果产生很大的影响。因为在所建立的回归方程中会设置一个扰动项u,而回归对扰动项的要求是扰动项u和回归方程里的所有自变量X均不相关,不然会对回归系数的估计不准确,即不满足无偏和一致性。
在所建立的模型里,会要求扰动项u是一个无法观测并且满足一定条件。这里所说的一定条件指的就是:误差项U和回归方程里的自变量X均不相关,即模型需具有外生性(若相关,则存在内生性,内生性会导致回归系数的估计不准确)
已知在添加X2产品的价格后,回归方程系数的变动很大,可知最开始建立的一元回归模型的扰动项和自变量X1产品的评分存在内生性。所以说变量的遗漏会导致内生性。上述例子中可以说明扰动项中会包含与y相关,但是未添加到回归模型中的变量,如果这些变量和我们已经添加的自变量相关,则该模型存在内生性。
我们的回归模型要求无内生性,即要求所有的解释变量均与扰动项不相关,但是这个条件一般很难实现,因为在回归里解释变量一般很多,很难保证他们全部外生。所以我们对该条件进行一个弱化,那这个弱化的措施就是将解释变量区分为核心解释变量和控制变量两类。
- 核心解释变量:我们最感兴趣的变量,因此我们特别希望得到对其系数的一致估计(当样本容量无限增大时,收敛于带估计参数的真值)
- 控制变量:对于回归方程中的一些变量,我们对其并没有太多的兴趣,而之所以把它们也添加到回归方程中,主要是为了“控制住”那些对解释变量有影响的遗漏因素。
然而在实际应用中我们只需要保证核心解释变量与扰动项不相关即可。
(7)特殊的自变量:虚拟变量X
在一些情况下,自变量中会存在定性变量,例如性别、地域等,那么可以将其设为一个虚拟变量。
单分类虚拟变量
虚拟变量的解释:
多分类虚拟变量
为了避免完全多重共线性的影响,会设置对照组变量,于是引入虚拟变量个数一般是分类数-1。在求解出模型后,对其他变量的分析,所分析的影响和变化是相对于对照组参数来说的。例如:假设现求解的是样本中广东省的借款成功率,那么这个求解的结果是相对于内蒙(对照组)来说的结果。
含有交互项的自变量
注意理解交互变量的分析:同时对两个解释变量进行分析。
(8)介绍两种筛选变量的回归
解释变量要求和扰动项不存在相关,并且扰动项需要满足球形扰动的要求,那么如何选择和确定解释变量?
方法一:向前逐步回归 #1指的是置信水平的选择
方法二:向后逐步回归 #2指的是置信水平的选择
PS注意点
向前逐步回归和向后逐步回归的结果可能不同,不要轻易的使用逐步回归,因为剔除了自变量后很有可能会产生其他的问题,比如内生性问题二、例题:电商平台的奶粉销售问题
问题一:
是将评价量作为因变量,分析剩余变量和评价量的关系,可以是用回归计算评价量与个变量之间的回归系数,使用回归系数衡量关系。
现在我们对处理后的数据进行回归,通过Stata的结果我们可以知道:P值小于0.05,在置信区间为95%的条件下,我们拒绝原假设,即回归系数显著异于0,则可以得到的结果是:
Stata会自动的检测数据的完全多重共线性问题,并且随机的将存在多重共线性的变量作为对照组(剔除)。
第二题
以评价量为因变量,研究影响评价量的重要因素。
为了更为精确的研究影响评价量的重要因素(取除量纲的影响)会使用标准化回归系数进行评价标准化回归系数
为了更为精确的研究影响评价量的重要因素(取除量纲的影响)会使用标准化回归系数。
首先会对数据进行标准化,就是将原始数据减去它的均数后,再除以该变量的标准差,计算得到的新的变量值,新变量构成的回归方程称为标准化回归方程,回归后得到相应的标准化回归系数。
标准化系数的绝对值越大,说明该解释变量对因变量的影响越大,当然前提是通过联合显著性检验,我们只关注通过联合显著性回归的系数。对第二问进行求解:
通过Stata的分析结果我们可以知道团购价格是影响评价量的最重要因素,并且当团购价格上升1个单位时,评价量约平均下降0.15个单位。这道题的必须注意的点:
PS1:为什么经过标准化回归的结果和之前回归的结果完全相同,除了多了最后一列标准化回归系数?对数据进行标准化处理并不胡影响回归系数的标准误,也不会影响显著性。
PS2:
可以看到的是在运行结果中,拟合优度R^2并不是非常的高。
PS2的解释:- 回归分为解释型回归和预测性回归,在预测型回归中会更加看重拟合优度,也就是说在预测性回归里会要求拟合优度的值较高;而在解释型的回归中更多关注模型整体的显著性以及自变量的统计显著性和经济意义的显著性即可。
- 拟合优度低可以对模型进行调整,例如对数据取对数或者是平方后在进行回归。而拟合优度较低的原因是数据中可能存在异常值或者是数据分布非常的不均匀。
三、例题:举例一个错误使用回归的例子
在该例子中错误的方式对数据处理,并且错误的使用回归。
错误的点:-
使用归一化,改变了数据的范围:
对论文中的数据进行回归后得到下面的结果:
对“高考总分”进行一个分析,它的系数是-1.26左右,应该有的解释是:当高考总分增加一个单位时,会使得期末成绩减少1.26分。
而论文中对数据进行了一个归一化,使得数据的范围发生了改变,期末成绩的范围是在0-1之间,此时这里的解释就会变得很困难。 -
对解释变量的形式进行了修改,添加高次项:向回归方程中添加新的变量需要合理的理由,因为添加心得变量会使得拟合优度增加,使得方程的解释更加困难。
-
解释变量添加高次项不用向虚拟变量添加:X3描述的是班干与否,是一个定性变量,对它进行平方是他的本身,这样没有意义。
-
优点:回归的置信区间大部分包含原点,这是结果不太满意的原因
coef的结果是一个点估计,而后面的置信区间是一个区间估计,我们希望得到的区间尽量不要包含原点。这可以是一个判断结果是否良好的原因。
四、例题:P2P网络贷款中是否存在地域歧视▲
(1)地域歧视的异质性
对30个省份的系数进行联合显著性检验,得到F统计量:F(30,128489)=9.09,对应的P值为0.00,所以在99%置信水平下我们拒接原假设,即30个省份的系数显著,所以可得到结论P2P借贷市场中存在地域歧视。
(2)地域歧视对学历的异质性
利用借款人的学历和工作时间作为特征:
(3)地域歧视对年龄的异质性
以年龄作为特征,同样建立三个回归方程:
(4)判断地域歧视是否合理
在上面的步骤已经对各个省份进行了回归,其因变量为借款是否成功,它的回归系数所表示的含义是各个省份借款成功率相对于对照组(内蒙)借款成功率的相对差额。在前面的步骤中我们讨论的是借款成功率,结合上面歧视产生原因的经济解释,我们还需对借款的违约率进行一个讨论。
于是设计违约率回归方程:
在这里因变量为是否违约,样本为所有成功获得借款的借款人,使用OLS估计出每个省份的回归系数,他们所体现的是**各个省份违约率和对照组违约率的相对差额**在得出违约率中各个省份的回归系数后,与上步骤借款成功率得到的系数,两者的系数进行一个相关性判断,若两者的系数是一个显著的负相关关系,则表明地域歧视是理性的;反之,地理歧视是非理性的。
原因:理性的地域歧视应该是贷款人违约率高,则借款成功率会低,那么两者所呈现的是一种负相关的关系。
两者回归系数结果可视化:
(5)稳健性检验:更改地域歧视的研究对象
(6)稳健性检验:更改计量方法
(7)稳健性检验:加入其他控制变量
增加借贷可读性与不增加这一控制变量的模型对比,各自变量回归系数的大小和显著性均无明显变化,另外对各省份系数进 行联合显著性检验,得到F统计量:F(30,128485) = 9.01,其对应的p值 为0,这说明地域歧视现象仍然存在,因此我们的模型是稳健的。(8)对工作进行总结
-
MySQL配置环境变量
2021-01-19 03:06:36如果不配置环境变量,每次登录 MySQL 服务器时就必须进入到 MySQL 的 bin 目录下,也就是输入“cd C:\Program Files\MySQL\MySQL Server 5.7\bin”命令后,才能使用 MySQL 等其它命令工具,这样比较麻烦。...如果不配置环境变量,每次登录 MySQL 服务器时就必须进入到 MySQL 的 bin 目录下,也就是输入“cd C:\Program Files\MySQL\MySQL Server 5.7\bin”命令后,才能使用 MySQL 等其它命令工具,这样比较麻烦。配置环境变量以后就可以在任意位置执行 MySQL 命令了,本节主要介绍怎样手动配置环境变量。
MySQL 如果不配置环境变量就只能在 mysql/bin 下执行 MySQL 的命令。
在启动并登录 MySQL 服务器之前,要先把 MySQL 的 bin 目录添加到系统的环境变量中,具体操作步骤如下。
步骤 1):在桌面上右击“此电脑”→“属性”命令,如图所示。
进入此电脑“属性”界面
步骤 2):打开“控制面板”窗口,选择“高级系统设置”,如图所示。
选择高级系统设置
步骤 3):弹出“系统属性”对话框,单击“环境变量”按钮,如图所示。
单击“环境变量”按钮
步骤 4):弹出“环境变量”对话框,在“USER 的用户变量”列表框中选择 Path 变量,单击“编辑”按钮,如图所示。
在环境变量中编辑path的值
步骤 5):弹出“编辑系统变量”对话框,将 MySQL 应用程序的 bin 目录(C:\Program Files\MySQL\MySQL Server 5.7\bin)添加到变量值中,用分号(必须是英文的分号)将其他路径分隔开,如图所示。
在path中添加MySQL的bin目录
步骤 6):添加完成后,单击“确定”按钮,这样就完成配置 Path 变量的操作,然后就可以直接输入 MySQL 命令来登录数据库了,如图所示。
image
-
结构方程模型建模思路及Amos操作--调节变量效果确定(一)(满满都是骚操作)
2020-12-24 08:02:262233镇楼~新年第一篇当然是给陪伴吾等死肥宅这么久的B站,新年快乐~新的一年,穷B不买化妆品也要为自己氪大会员。。。(゜▽゜)つロpo一下天依老婆跨年的歌,烘托新年的气氛【洛天依|周华健】江苏卫视跨年演唱会《Let...2233镇楼~新年第一篇当然是给陪伴吾等死肥宅这么久的B站,新年快乐~新的一年,穷B不买化妆品也要为自己氪大会员。。。(゜▽゜)つロ
po一下天依老婆跨年的歌,烘托新年的气氛【洛天依|周华健】江苏卫视跨年演唱会《Let It Go》,过去的一年开心或不开心都随它而去,2018,随心而行。
调节变量(moderator, interaction variable)也称为干扰变量,定义为一个变量可以系统性的改变自变量与应变量之间相关形式或强度。调节变量带来的影响叫做调节作用(moderating effect), 经常也被称为交互作用(interactive effect)。
解释一下:打个比方,我是一个穷B(X,自变量),但是我做了一个平时不会做的行为(成为B站大会员,Y,因变量),因为这是后有一个干扰变量的存在(B站搞活动),干扰变量同时影响了X和Y。那么这时候B站会员半价就是一个调节变量。比较常见的干扰变量,譬如说小三,同时影响了情侣(X)和分手(Y),对情侣(X)的作用为负,对分手(Y)的作用为正,因为加速了分手。
但是如果箭头换成下图,这种模型叫做中介模型,如果解释成因为我这种穷B太多了,导致B站大会员卖不出去,所以搞活动半价,最终很多人变成了大会员!!这竟然似乎也可以。。所以大家不要太相信论文里面写的东西,为了论文能发表,为了使结果有统计学意义,作者可能只选择对他有利的数据。即使最后结果出来了,不是他最初的设想,他都会想着法圆回去的。
引用Disraeli 的一句话,有三种谎言:谎言、糟糕透顶的谎言和统计资料。
所以,哪怕C刊的文章,老铁们也要心存质疑。
干扰变量有两种影响X和Y的形态:1)在传统模型中影响自变量与应变量之间相关的强度;2)改变自变量与应变量之间相关的形式。
第一大种情况,普通回归,Y为观察变量的时候
看大前提哈,Y是连续的观察变量的时候,检验干扰变量的时候,我们根据X和干扰(M)的资料类型,选择不同的统计方法。X和M的资料类型都有两种,连续型和分类型。这里我们的Y只能是连续资料,如果要分类的,去隔壁的逻辑回归,不能用SEM。所以需要四种不同的统计方式。见下图,所以我们待会的检验操作也要分成下面的四种思路。
case1 XM均为类别资料
方法:I*J两因素析因设计资料的方差分析
原理:
这里我根据我有的资料随便选几个变量了哈,不一定有意义,为了演示操作。这里面城乡为X,性别为M,大众媒体为Y。模型见下图。
换个形式看更清楚,见下图。
所以,如果我们想检验M的影响,换个角度就是检验M对Y有没有影响,X对Y有没有影响,X和M的交互作用对Y有没有影响。
这时候我们检验就变成了I*J两因素析因设计资料的方差分析,我们重点检验的就是下图红色部分,AB交互效应。
那这就好处理了,SAS和SPSS操作就行。
SAS程序:
proc anova;
class a b;
model x=a b a*b;
run;
SPSS操作:
选择分析--一般线性模型--单变量
Y、M、X的放置位置见第二张图。
结果的意义:见下图,交互项的显著性小于0.05,表示干扰的效果存在。
如果要绘图的话,
刚才选项步骤(分析--一般线性模型--单变量)那里把绘图选上。
然后把水平轴和单图放上X和M,单击添加。
图做出来就是下面这样了。
好哒~over~我们进入下一个case。
case2:X为连续的,M是分类资料
方法:检验(非)标准化系数
原理:这时候相当于将样本根据M分为不同的层级,然后每一层都有一个回归函数可以跑出来,再比较各个不同的回归函数的系数是否有差异来判断(检验)不同层级的样本是否有差异。这里的回归系数的比较可以用标准化回归系数来比较,也可以用非标准化回归来比较,各有优劣。
这时候的X要不止一个变量了,要不然跑不了回归。回归模型随便写一下,大概就下面这样子。
Y1=α1+b1X1+b2X2+b3X3+ε
Y2=α1'+b1'X1'+b2'X2'+b3'X3'+ε
这时候分层跑出两个回归模型(如果M是二分类变量的话,M是三分类变量当然就跑出三个回归模型),利用Permutation test、chowreg等等方法,比较两个回归模型的系数是否有差异,如果有差异的话,代表存在干扰,如果没有差异的话,代表干扰不存在。
第一步:跑分组回归模型
sas操作可以参考这篇论文
Bell B A, Ene M, Smiley W, et al. A multilevel model primer using SAS PROC MIXED[C]//SAS Global Forum. 2013, 433.
paper里面有详细的介绍怎么利用SAS里面的PROC MIXED程序做分层回归。里面介绍了两层、三层、三层有序资料三种类型资料的SAS程序。题主懒,老铁们自己看。
SPSS分层回归:
①现将资料分层,我们还是用性别做干扰变量,所以还是用M分层
见下图选择数据-拆分文件-比较组-把性别选进去-确定
嗯呢,就分层成功啦。
②回归:这时候点击分析-回归-线性-选入因变量、自变量就可以啦
这时候就会跑出两个回归模型,然后根据标准化回归系数或者非标准化回归系数进行比较两个回归模型是否有差异
比较回归系数是否有差异
知乎已经有人建楼了,老铁们可以去看看同一个模型两组不同样本下,回归系数间的差异性检验,我就不赘述了。
这里关于选择非标准化系数有一篇经典文献
Baron R M, Kenny D A. The moderator–mediator variable distinction in social psychological research: Conceptual, strategic, and statistical considerations[J]. Journal of personality and social psychology, 1986, 51(6): 1173.
有兴趣的老铁可以看看。
case3 X为类别资料,M为连续变量
方法:层级回归
原理:把X转换成虚拟变量(dummy variable),建立新的回归方程Y=X+M+XM,这个回归模型就是检验X、M、X和M的交互作用对Y的影响。但是这里的X是类别资料,所以不能简单的线性回归就可以了。
这里歪个楼,关于虚拟变量的回归模型,老铁们可以去看Damodar N. Gujarati和Dwan C. Poter写的《计量经济学》,中国人民大学出版社,第9章详细的给大家介绍了虚拟变量回归。
这里有一篇经典的文献介绍了分层回归(hierarchical regression),并实践应用,感兴趣的老铁可以回去读。Hult G T M, Ketchen D J, Arrfelt M. Strategic Supply Chain management: Improving Performance through a Culture of Competitiveness and Knowledge Development[J]. Strategic Management Journal, 2007, 28(10):1035–1052.
操作:
这里我随便取性别作为控制变量、传统媒体(连续变量)作为M,全媒体作为X,行为(连续变量)作为Y
①如果X是潜变量的话,因为每一个潜变量的观察变量不一定一样多,所有在做回归检验之前要将item parcel加总平均(mean center)。(item parcel也有其他的称呼,如summated index,summated scale,minimalist test, composit scale),楼主这里为了简便,所以没有用item parcel,老铁们如果问卷复杂的话,这里要记着。
②标准化所有的变量以减少多重共线性
见下图选择分析-描述统计-描述-将刚才说的XYM三个变量选入-最下面(将标准化得分另存为变量)勾上。就可以将变量都标准化啦。注:这里的控制变量性别不用选进去,要不然一标准化什么都没有了。
③X和M计算干扰项,传统媒体M,全媒体X
选择转换-计算变量-然后就是标准化后的全媒体*标准化后的传统媒体
(注:这里的字我打错了,图片里面应该写“干扰”,而不是“交互”,反正名称而已,叫阿猫阿狗都行,但是怕弄混了,所以要记得这里指的是干扰。)
④执行分层回归
先放控制变量,再放主变量,最后放调节变量。
选择分析-回归-线性-因变量栏放入Y-第一层自变量栏放入控制变量-点击下一页
第二层放入主变量,然后点击下一页
第三层放入干扰项,然后点击statistics,这里一定要选上R方的变化
原理:选择R-square change的原因是,在回归中,增加的变量越多,那么R-square就会提升。每多放几个变量进去,R-square的变化量能不能达到显著,如果显著代表放入的变量是有用的。如果第三层的R-square的检验显著,那么证明干扰作用是存在的。如果不显著,干扰作用则不存在。
结果解释
《模型摘要》这张表,检验的是我们分三层做的三个模型是否有统计学意义,模型1是检验控制变量(性别)是否有统计学意义,可以看到显著性接近1,表示性别是没有影响的。但是模型2和模型3,尤其是模型3,有显著性,表示干扰作用的效果存在。即模型存在干扰。
看《系数》这张表,判断干扰的方向。显然,干扰是负向的。
超纲补充:送给大家的超纲补充,拿好不谢
主效应补充:当有多个X,见下图,这时候的干扰有2个,一个是M对X1Y的干扰,一个是M对X2Y的干扰,
所以计算干扰作用的时候,要计算
M1=标准化后的M*标准化后的X1
M2=标准化后的M*标准化后的X2
还有计算X1X2的交互作用,检验一下
interaction=标准化后的X1*标准化后的X2
这时候所有的干扰和交互都放在刚才回归的第三层就可以了。同理,如果有更多个X的时候类推。
控制变量补充:如果有多个控制变量,如年龄,文化等等,统一一起放在第一层就OK啦。如果在文献中没有提及控制变量,那么文章就不能使用控制变量。控制变量成立的两大条件:前辈有人提及,理论上证明确实证明有用。只要是回归模型,每一个变量都是其他变量的控制变量。控制变量只存在显著或者不显著,如果控制变量不显著,那么控制变量就是一般的变量,没有起到控制效果。和干扰一样,干扰如果没有起到作用,那么干扰就是一个普通的自变量。为了得到正确的,可以反映现实的模型,如果存在控制效应的时候,控制就会contaminate模型,可能会造成模型的错误估计,可是,如果模型本身不存在控制,而去估计控制时,则会造成另一个维度的contaminate。会削弱真实的效果。一般不把人口统计学变量当做控制变量。
思路补充:这里我们用的回归计算干扰和Case1里面用Anova计算干扰是有区别的,anova是比较平均数,回归是比较斜率。
case4 X、M均为连续变量
将M转变成分类变量,或将X、M都转换成分类变量,用楼上的方法。
第二大种情况,Y为潜变量时候,这时候回归啥的传统方法是救不了的,只能用SEM。
因为本质上涉及到多群组的SEM分析等等,比较复杂,不想写太长,所以下一篇介绍。
为了写好这篇文和下一篇文,我查了这么些资料,所以老铁们请好好珍惜。
楼主的其他文章,前期写得早的,但是满满都是干货啊,没人点,忧桑。尤其是大狗子镇楼的这篇多重线性回归,楼主为了找加权最小二乘回归的程序,花了很大功夫。
白圭:多重线性回归分析思路及sas求解zhuanlan.zhihu.com
白圭:案例调研和写作分享zhuanlan.zhihu.com
白圭:结构方程模型建模思路及Amos操作--基础准备zhuanlan.zhihu.com
最后,我们的2233娘结尾~干杯
-
【EV3基础编程 第八课】升阶学习难度,一对一个性化控制程序,变量来了
2021-03-18 15:30:40本阶段课程适合2年级、3年级、4年级及以上刚开始接触EV3机器人的同学们。...到了一定级别后,会有升阶的要求。往往升阶是需要做一些复杂的“突破”任务后,才能继续升级的。那么我们今天要说的模块,就是“升阶... -
UGUI—Slider控制变量
2016-12-05 23:17:19Unity 提供的UI套件之中Slider控件可用于调节游戏中的一些变量值,例如速度。 方法: 在Slider面板中,On value change列表中添加受控制的...该方法有一个自动变量参数,该参数Slider自动传入,即为Slider的Value值 -
Java多线程共享变量控制
2019-06-27 21:44:54如果一个变量同时在多个线程的工作内存中存在副本,那么这个变量就叫共享变量 2. JMM(java内存模型) 多个线程同时对主内存的一个共享变量进行读取和修改时,首先会读取这个变量到自己的工作内存中成为一个副本,... -
MySQL变量,存储过程,函数,流程控制详解(小白都能懂哦)
2020-05-18 08:59:07流程控制结构 1.系统变量 1.1系统变量的分类 系统变量:分为全局变量和会话变量 1.2系统变量的介绍 系统变量由系统提供,不是用户定义,属于服务器层面 1.3系统变量的相关操作 (1).查看所有的系统变量 show ... -
多元线性回归及虚拟变量(哑变量)设置
2021-11-06 22:51:16http://www.datasoldier.net/archives/1542补充:对上面spss创建虚拟变量的补充 设置虚拟变量时,一定要针对分类变量,有时候你的分类变量会被SPSS自动识别为数值变量,这时候要将变量类型从数值类型改为分类类型... -
全局变量、局部变量、静态全局变量、静态局部变量的区别(与常见面试基础题)
2019-10-04 18:23:00要用全局变量,需要使用 ":: " 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个... -
多个自变量对一个因变量的影响(SPSS:协方差分析)
2020-12-29 00:40:44自变量中的连续变量被作为协变量加以'控制'(控制变量)。协方差分析可以在一定程度上排除非处理因素的影响,从而准确的获得处理因素的影响。协方差分析的条件:除了满足一般的方差分析条件外,还需要满足'平行性检验'... -
thymeleaf定义变量等
2019-07-25 11:09:49其对母板页的理解是有偏差的。razor的模板,就是真的母板,所有公用东西都在母板上,应用页面套用这个母板,只须再定义自己的个性化内容即可。而thymeleaf的所谓模板,不是母板,而是片段集合,公共东西,做成一个个... -
javascript怎么定义全局变量?
2021-06-12 17:19:55有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。javascript怎么定义全局变量?1、在js的函数外部用var定义一个变量var name='测试';function XX(){alert(name);}2、函数外部,不使用var,直接给... -
Heckman 两阶段法及与工具变量法的区别
2021-10-29 10:49:44一、适用范围 ...不过这样做有一个问题,就是登记的女性,都是在工作的,但是许多受教育程度较高的女性不工作,选择做家庭主妇,这部分样本就没有算在内,样本失去随机性。这就导致模型只是用到了在 -
static全局变量与普通的全局变量
2018-03-12 21:58:59一、程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — ... -
因果推断笔记——工具变量、内生性以及DeepIV(六)
2021-08-31 15:58:34文章目录1 理论介绍1.1 Instrumental variable解释1.2 因果推断中:内生性的一个有意思的例子1.2 与代理变量(proxy variable)的对比1.3 连玉君老师的简易解读2 econML实现 DeepIV 同系列可参考: 因果推断笔记... -
jmeter中各种变量的使用方法
2020-08-23 00:28:22文章目录正则表达式提取变量beanshell 中的变量jmeter 内置函数操作变量变量结合 foreach 使用关于变量的嵌套值得注意的点 正则表达式提取变量 设置一个变量名,假如为 token 如果正则只用提取一组数据,且正则只... -
回归模型的变量筛选与预测
2019-06-21 10:27:35我眼中的回归变量筛选 变量筛选是回归建模过程关键的一步,由于变量间的相关性,必然会导致不同的筛选方法得到不同的模型。 在所有变量筛选方法中,向前法、向后法以及逐步回归法的使用频率较高,因为这类方法... -
cmake-变量作用域
2020-08-31 09:31:26要想将变量讲清楚,涉及的新的知识点还比较多,看完本文一定有所收获。 文章目录变量(variables)Function ScopeDirectory ScopePersistent Cache 变量(variables) Variables are the basic unit of storage in the ... -
R语言中哑变量的设置
2019-01-30 15:51:26在构建回归模型时,如果自变量X为连续性变量,回归系数β可以解释为:在其他自变量不变的条件下,X每改变一个单位,所引起的因变量Y的平均变化量;如果自变量X为二分类变量,例如是否饮酒(1=是,0=否),则回归系数... -
c++ 线程局部变量thread_local
2020-01-14 10:07:52在Linux系统中使用C/C++进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这对程序的性能带来了很大的影响,当然对于那些系统原生支持原子操作的... -
C++全局变量、局部变量、全局静态变量、局部静态变量
2018-09-05 16:18:31共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。 ---基于以上两点可以得出一个结论:把局部变量改变为静态变量后是... -
C语言中数组长度不能用变量定义吗?
2019-03-17 19:55:15C语言里,所有变量空间都是在程序运行之初向系统申请的,包括指针,除了一些动态申请方式如malloc函数。没有申请的空间系统是不允许读写的。那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小,也就... -
松弛变量
2018-06-26 16:09:29SVM入门(八)松弛变量现在我们已经把一个本来线性不可分的文本分类问题,通过映射到高维空间而变成了线性可分的。就像下图这样: 圆形和方形的点各有成千上万个(毕竟,这就是我们训练集中文档的数量嘛,当然很大... -
static静态变量的理解
2018-07-22 17:26:37static静态变量的理解 静态变量 类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存 -
LabVIEW中的引用、属性节点、局部变量全局变量等的区别
2020-05-08 13:32:47最近想深入学习LabVIEW,对于控件的使用上遇到了选择上的问题,如何合理的使用控件引用、属性节点、局部变量全局变量等,结合帮助文档和网上资料,总结如下: 1、全局变量和局部变量 局部变量和全局变量是内存... -
Verilog语法之变量
2020-02-07 11:04:53变量即在程序运行过程中其值可以改变的量,在Verilog HDL中变量的数据类型有很多种,这里只对常用的几种进行介绍。 网络数据类型表示结构实体(例如门)之间的物理连接。网络类型的变量不能储存值,而且它必需受到驱动器... -
C语言学习笔记03:C语言_字符串_局部变量_全局变量_指针
2021-08-12 18:18:33课堂笔记2.1 函数设计基本原则2.2 指针变量和普通变量区别2.3 指针变量理解2.4 修改一个变量的值2.5 指针类型2.6 指针和数组C语言第九天课程笔记1. 内容安排2. 课堂笔记 C语言第七课程笔记 每一天的笔记包含如下... -
Halcon基础语法一数据类型及变量
2020-08-26 20:04:04**值得注意的是,输出控件一定为变量,因为他保存的是算子输出的结果。 二、控制类型数据 1、控制类型有一下几种: integer,real,string和boolean分别对应整形、实数型、字符串型、和布尔型 (1)、integer整形 它...