首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用阶乘分析法计算百分比变化?

如何用阶乘分析法计算百分比变化?
EN

Stack Overflow用户
提问于 2018-01-27 11:51:47
回答 1查看 363关注 0票数 1

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

例如,当x和y增加时,A在增加;当z减小时,A在减少。那么,A的变化百分比是多少呢?我还有其他软件可以做这个分析吗?

请在这方面帮助我。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-27 14:37:12

我认为一个简单的回归会给你提供你想要的东西。既然您在问如何为RMatlab执行此计算,我将为您提供一个Matlab解决方案,因为我可以更好地使用它。

在继续进行一个数值示例之前,让我们回顾一下一点点理论

当模型中的其他预测变量“固定”时,拟合线性回归模型可以识别单个预测变量xj与响应变量y之间的关系。具体来说,βj的解释是,当其他协变量固定时,y中的一个单位变化对y的预期变化,即y的偏导数相对于xj的期望值。

基本上,这告诉我们,xj中的一个单元更改在y中生成一个βj单元更改。为了获得百分比更改,响应变量y必须转换为对数刻度(ln(y))。

现在,让我们看看如何使用Matlab中的回归函数来执行线性回归。这很简单,就像:

代码语言:javascript
复制
% 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的beta系数乘以100):

代码语言:javascript
复制
% 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;

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

代码语言:javascript
复制
b =

    0.25
   -0.06
    1.33

这意味着:X中的一个单元更改在A中生成一个+25%变化,Y中的一个单元更改在A中生成一个-6%变化,而Z中的一个单元变化在A中生成一个+133%变化。百分比变化的解释随预测变量的类型而变化,您必须小心。给定响应变量Y和预测变量K

  • 如果K是一个连续变量,那么Bk = ∂ln(Y) / ∂K,因此K中的一个单位变化会在Y中产生100 * Bk %的变化。
  • 如果K是连续变量的自然日志,那么Bk = ∂ln(Y) / ∂ln(K),因此K中的100%更改将在Y中生成100 * Bk百分比变化。
  • 如果K是一个虚拟变量(只有两个可能的值:1 = true0 = false),那么K01的转换会在Y中产生100 * Bk %的变化。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48475502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档