如何使用因子分析计算百分比变化? [关闭]

问题描述 投票:1回答:1

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

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

在这方面请帮助我。

谢谢。

r matlab factorial anova minitab
1个回答
0
投票

我认为简单的回归可以为您提供所需的信息。既然你问如何为RMatlab执行这个计算,我将为你提供一个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 * BkY百分比变化。
  • 如果K是连续变量的自然对数,那么Bk = ∂ln(Y) / ∂ln(K),因此100%中的K变化会在100 * Bk中产生Y百分比变化。
  • 如果K是一个虚拟变量(只有两个可能的值:1 = true0 = false),那么K01的转移产生了100 * BkY百分比变化。
© www.soinside.com 2019 - 2024. All rights reserved.