这个问题我感觉很难啊:怎样得到Excel回归公式的系数?

lyr311 2005-01-26 02:26:50
用Excel回归公式是非常方便的,可以选择不同的类型:线性关系y=a+bx;指数关系y=a*exp(b*x);对数关系y=a*lnx等等。但是怎样动态地返回这些系数a,b呢,也就是要将系数放入单元格中,数据源改变的时候这些系数自动改变,而不是每次都要手敲入这些系数?希望高手解答!!多谢!!
...全文
912 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
osman003 2005-02-01
  • 打赏
  • 举报
回复
1)我用的office2000,不过我觉得这和版本没有什么关系,office的缺省安装是不带VBA帮助的
你在安装时,要选择自定义安装,然后手工选择word/excel/access等的VBA帮助文件安装

2)关于"数组计算"我用的也很少,下面这个摘自excel的帮助文件:

数组公式可以同时进行多重计算并返回一种或多种结果。数组公式对两组或多组被称为数组参数的数值进行运算。每个数组参数必须有相同数量的行和列。除了不能用 CTRL+SHIFT+ENTER 组合键生成公式外,创建数组公式的方法与创建其它公式的方法相同。

数组公式中的常量
一个基本的单值公式可以根据一个或多个参数或数值产生出一个单一结果;在此既可以输入对包含数值的单元格的引用,也可以输入数值本身。在数组公式中,通常都使用单元格区域引用,但也可以直接键入数值数组。这样键入的数值数组被称为数组常量。当您不想在工作表中按单元格逐个输入数值时,可以使用这种方法。如果要生成数组常量,必须按如下操作:

直接在公式中输入数值,并用大括号( { } )括起来
不同列的数值用逗号(,)分开
不同行的数值用分号(;)分开
例如,可以在数组公式中输入 {10,20,30,40} 来替换在一行的四个单元格中输入 10,20,30,40。这个数组常量是一个 1 行 4 列数组,相当于一个 1 行 4 列的引用。如果要表示一行中的 10,20,30,40 和下一行中的 50,60,70,80,应该输入一个 2 行 4 列的数组常量:{10,20,30,40,50,60,70,80}。请查阅数组常量可以使用的数值类型。


在输入数组公式时,Microsoft Excel 自动在大括号 { } 之间插入公式。
a)如果数组公式将返回一个结果,请单击需要输入数组公式的单元格。
如果数组公式将返回多个结果,请选定需要输入数组公式的单元格区域。
b)键入数组公式。
c)按 CRTL+SHIFT+ENTER 组合键。
lyr311 2005-01-31
  • 打赏
  • 举报
回复
多谢回复啊,实在是感谢,另外,我装的帮助怎么查不到这些函数的相关帮助呢,只有很简单很简单的描述。你是哪个版本的Office哦,请指点俺一下什么是"数组计算",谢了谢了!!◎◎◎◎◎◎◎◎◎◎◎◎
lyr311 2005-01-31
  • 打赏
  • 举报
回复
"Const 为一逻辑值,指明是否强制使常数 b 为 0。"

老兄,那这样只能指定截距为0或者不指定了,我如果指定截距为1怎么办呢》?

osman003 2005-01-31
  • 打赏
  • 举报
回复
to: lyr311(老刘:别总在CSDN上逛!!!)

1)我装有OFFICE的全套帮助(尤其是要选择VBA的帮助),所以选择函数时,可以查到它的相关用法,包括LINEST函数的参数使用说明

语法

LINEST(known_y's,known_x's,const,stats)

Known_y's 是关系表达式 y = mx + b 中已知的 y 值集合。

如果数组 known_y's 在一列中,则 known_x's 的每一列都被当作单独的变量。


如果数组 known_y's 在一行中,则 known_x's 的每一行都被当作单独的变量。
Known_x's 是关系表达式 y = mx + b 中已知的可选 x 值集合。

数组 known_x's 中包括一个或多个变量集合。如果只用到一个变量,只要 known-y's 和 known-x's 维数相同,它们可以是任何形状的选定区域。如果用到不只一个变量,known_y's 必须是向量(就是说,必须是一行或一列的区域)。


如果省略 known_x's,则假设该数组是 {1,2,3...},其大小与 known_y's 相同。
Const 为一逻辑值,指明是否强制使常数 b 为 0。

如果 const 为 TRUE 或省略,b 将被正常计算。


如果 const 为 FALSE,b 将被设为 0,并同时调整 m 值使 y = mx。
Stats 为一逻辑值,指明是否返回附加回归统计值。

如果 stats 为 TRUE,函数 LINEST 返回附加回归统计值,这时返回的数组为 {mn,mn-1,...,m1,b;sen,sen-1,...,se1,seb;r2,sey;F,df;ssreg,ssresid}。


如果 stats 为 FALSE 或省略,函数 LINEST 只返回系数 m 和常数项 b。


2)使用这个函数时,用"数组计算",才能同时得到截距和斜率,关于"数组计算",你查查相关的书籍吧,三言两语我说不清楚


3)我录制宏计算斜率得到的是:
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=SLOPE(R[-22]C:R[-13]C,R[-22]C[-1]:R[-13]C[-1])"
你最好自己安装帮助看看吧,很多数学方面的东东我忘记得七七八八了
osman003 2005-01-28
  • 打赏
  • 举报
回复
我只试了一个最简单的线性关系,当你改变数据源时,系数相应的会改变的啊
我的DEMO:y=ax+b
A1:A10输入自变量x,B1:B10输入因变量y,
B20:B21用于计算a,b,输入=LINEST(B1:B10,A1:A10,TRUE,FALSE)的数组计算公式
改变x和y,ab值相应改变,不需再手工修改
lyr311 2005-01-28
  • 打赏
  • 举报
回复
咦耶,怎么这么奇怪,viena(维也纳nn-实心木头人) 的信誉怎么是1啊??
lyr311 2005-01-28
  • 打赏
  • 举报
回复
盼高手出现啊!!
:—(
lyr311 2005-01-28
  • 打赏
  • 举报
回复
指定截距情况下的斜率函数和相关系数平方函数改怎么使用呢?
lyr311 2005-01-28
  • 打赏
  • 举报
回复
哦,多谢 osman003(寻找快乐) 的提示,顺着你的提示,我找到了:Intercept,Slope,RSQ这些函数可以达到我的要求,但是还有一个问题,对于指定截距的,该怎么办呢,另外,LINEST这个函数能同时返回截距合斜率吗?我怎么得到的只是斜率呢??
括号里面的参数True,False代表什么意思啊,怎么没有相关的帮助和提示啊。

还有,为什么截距在宏里面可以用以下方式得到:
ActiveChart.SeriesCollection(1).Trendlines.Intercept
而斜率却不能通过
ActiveChart.SeriesCollection(1).Trendlines.Slope的方式得到呢。
问题是不是有点多啊?! ^_^
viena 2005-01-27
  • 打赏
  • 举报
回复
没用过~
lyr311 2005-01-27
  • 打赏
  • 举报
回复
又是太难了吗?大侠们帮帮俺啊?!!

2,463

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧