如何使用因子分析计算百分比变化?

时间:2018-01-27 11:51:47

标签: r matlab factorial anova minitab

为了评估各种输入因子(x,y,z)及其与响应变量(A)的相互作用的贡献,我使用Minitab中的因子分析计算了方差百分比。现在我想计算A中的百分比变化。

比如说,当x和y增加时A增加,而当z减小时A减小。那么A中有多少百分比在变化? 有没有其他软件可供我进行此分析?

请在这方面帮助我。

感谢。

1 个答案:

答案 0 :(得分:0)

我认为简单的回归可以为您提供所需的信息。既然您正在询问如何对RMatlab执行此计算,我将为您提供Matlab解决方案,因为我可以更好地使用它。

在继续数字示例之前,让我们回顾一下a little bit of theory

  

拟合线性回归模型可用于识别   单个预测变量xj与响应之间的关系   变量y,当模型中的所有其他预测变量都是   “固定”。具体而言,βj的解释是预期的   当其他协变量为x时,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,并计算百分比变化乘以β系数{{1 } b):

100

使用任意值,我们假设返回的beta值是:

% 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;

这意味着:b = 0.25 -0.06 1.33 中的一个单位更改会在X中生成+25%更改,A中的一个单位更改会产生Y更改在-6%中,A中的一个单位更改会在Z中生成+133%更改。百分比变化的解释因预测变量的类型而异,您必须小心这一点。给定响应变量A和预测变量Y

  • 如果K是一个连续变量,那么KBk = ∂ln(Y) / ∂K中的一个单位更改会在K中产生100 * Bk%的变化。
  • 如果Y是连续变量的自然对数,则为K,因此Bk = ∂ln(Y) / ∂ln(K)中的100%更改会在K中产生100 * Bk%的变化{1}}。
  • 如果Y是虚拟变量(只有两个可能的值:K1 = true),那么0 = falseK转移到{{ 1}} 0发生了1%的变化。