为了评估各种输入因子(x,y,z)及其与响应变量(A)的相互作用的贡献,我使用Minitab中的因子分析计算了方差百分比。现在我想计算A中的百分比变化。
比如说例如,当x和y增加时A增加,而当z减小时A减小。那么A中有多少百分比在变化?有没有其他软件我可以做这个分析?
在这方面请帮助我。
谢谢。
我认为简单的回归可以为您提供所需的信息。既然你问如何为R
和Matlab
执行这个计算,我将为你提供一个Matlab解决方案,因为我可以更好地使用它。
在继续数值示例之前,让我们回顾一下a little bit of theory:
当模型中的所有其他预测变量“保持固定”时,拟合线性回归模型可用于识别单个预测变量xj与响应变量y之间的关系。具体地,βj的解释是当其他协变量保持固定时xj的一个单位变化的y的预期变化 - 即,y的偏导数相对于xj的预期值。
基本上,这告诉我们xj
中的一个单位变化会在βj
中产生y
单位变化。为了获得百分比变化,必须将响应变量y
转换为对数标度(ln(y)
)。
现在,让我们看看如何使用Matlab中的regress function执行线性回归。这很简单:
% Response Variable
A = rand(100,1);
% Predictors
X = randi(10,100,1);
Y = rand(100,1);
Z = randi(3,100,1);
% Beta Coefficients
b = regress(A,[X Y Z]);
现在,为了检索百分比变化而不是单位变化,上述代码必须重写如下(基本上,自然日志应用于A
,百分比变化计算乘以β系数b
乘以100
):
% Response Variable
A = rand(100,1);
A = log(A);
% Predictors
X = randi(10,100,1);
Y = rand(100,1);
Z = randi(3,100,1);
% Beta Coefficients
b = regress(A,[X Y Z]);
% Percent Changes
pc = b .* 100;
使用任意值,让我们假设返回的beta是:
b =
0.25
-0.06
1.33
这意味着:X
的单位变化在+25%
中产生A
变化,Y
的单位变化在-6%
产生A
变化,Z
的单位变化在+133%
产生A
变化。百分比变化的解释因预测变量的类型而异,您必须小心这一点。给定响应变量Y
和预测变量K
:
K
是一个连续变量,那么Bk = ∂ln(Y) / ∂K
,因此K
的一个单位变化产生100 * Bk
的Y
百分比变化。K
是连续变量的自然对数,那么Bk = ∂ln(Y) / ∂ln(K)
,因此100%
中的K
变化会在100 * Bk
中产生Y
百分比变化。K
是一个虚拟变量(只有两个可能的值:1 = true
和0 = false
),那么K
从0
向1
的转移产生了100 * Bk
的Y
百分比变化。