Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops SPSS为多个变量的多元回归创建循环_Loops_Linear Regression_Spss - Fatal编程技术网

Loops SPSS为多个变量的多元回归创建循环

Loops SPSS为多个变量的多元回归创建循环,loops,linear-regression,spss,Loops,Linear Regression,Spss,对于我的硕士论文,我必须使用SPSS来分析我的数据。事实上,我认为我不必处理非常困难的统计问题,就我的分析概念而言,这仍然是正确的。但是现在的问题是,为了创建我的因变量,我通常需要使用语法编辑器/编程,而我在这方面没有任何经验。我希望您能在创建语法的过程中帮助我 我总共有大约900家公司,进行了6年的观察。对于所有这些公司,我需要以下公司特定回归的预测值: Y= ß1*X1+ß2*X2+ß3*X3 + error (我知道,ß不太可能很重要,但这在我的论文中没有什么可担心的,但它将在限制中提到

对于我的硕士论文,我必须使用SPSS来分析我的数据。事实上,我认为我不必处理非常困难的统计问题,就我的分析概念而言,这仍然是正确的。但是现在的问题是,为了创建我的因变量,我通常需要使用语法编辑器/编程,而我在这方面没有任何经验。我希望您能在创建语法的过程中帮助我

我总共有大约900家公司,进行了6年的观察。对于所有这些公司,我需要以下公司特定回归的预测值:

Y= ß1*X1+ß2*X2+ß3*X3 + error
(我知道,ß不太可能很重要,但这在我的论文中没有什么可担心的,但它将在限制中提到)。 到目前为止,我的数据按以下方式排序

COMPANY  YEAR X1 X2 X3

1       2002

2       2002

1       2003

2       2003
但是我可以很容易地改变顺序,例如在

1

1

2

2 etc.
好吧,假设我已经重新整理了数据:我现在需要的是SPSS为每个公司计算特定的ß,并在一列中返回输出(预测值乘以每行中特定的X)。所以我想我需要的是一个循环,对939家公司中的每一家进行6行的多元线性回归,对吗

正如我所说,我没有任何经验,所以每一个提示对我来说都是有价值的

提前谢谢大家,


Janina.

您可以使用
分割文件
来估计每个公司的特定回归,如下例。注意,人们可能想要考虑其他面板数据模型,并评估残差中是否存在自相关。(这对于探索性分析多层模型来说是一种有用的方法。)

该示例声明了一个新的数据集,以将回归估计传递到(请参见
OUTFILE
子命令
regression
),并抑制其他表(900多个表的大部分时间用于呈现输出)。如果需要其他统计信息,请忽略禁止显示表的
OMS
,或者调整它以仅显示所需的表。(您也可以使用
OMS
将其他结果传输到其他数据集。)


请记住,每个公司只有六个观测值和三个(如果你还有一个常数项,则为4个)系数需要估计,系数估计可能非常不精确。你可能想考虑公司是否可以至少部分地被合并。< /P>但是没有900家公司。@ RoLANO2,上面的代码对900家公司来说是很好的(只需改变指定代码< >代码COMP < /代码> 900 +的任何循环)。旧版本对组的数量有限制(我相信V15是100个)。现在,我想查看1000个模型的系数,不。使用OMS将是更好的选择。(并不是说我会在所有面板回归模型中推荐这种方法——但在我看来,这种方法对于多层次模型的探索性分析很有用。)实际上,我对
分割文件
限制的回忆是不正确的——我只是在V15上运行了一个
分割文件
,有1000组没有问题。大多数情况下,使用这种方法时,输出都是令人讨厌的部分—渲染需要花费大量时间和内存。我更新了示例,以显示如何使用
回归
上的
OUTFILE
子命令将回归系数输送到新数据集,并使用
OMS
抑制其他表。这个有1000家公司的例子在我的机器上大约需要20秒。
************************************************************.
*Making Fake data.
SET SEED 10.
INPUT PROGRAM.
LOOP #Comp = 1 to 1000.
COMPUTE #R1 = RV.NORMAL(10,2).
COMPUTE #R2 = RV.NORMAL(-3,1).
COMPUTE #R3 = RV.NORMAL(0,5).
  LOOP Year = 2003 to 2008.
    COMPUTE Company = #Comp.
    COMPUTE Rand1 = #R1.
    COMPUTE Rand2 = #R2.
    COMPUTE Rand3 = #R3.
    END CASE.
  END LOOP.
END LOOP.
END FILE.
END INPUT PROGRAM.
DATASET NAME Companies.
COMPUTE x1 = RV.NORMAL(0,1).
COMPUTE x2 = RV.NORMAL(0,1).
COMPUTE x3 = RV.NORMAL(0,1).
COMPUTE y = Rand1*x1 + Rand2*x2 + Rand3*x3 + RV.NORMAL(0,1).
FORMATS Company Year (F4.0).

*Now sorting cases by Company and Year, then using SPLIT file to estimate 
*the regression.
SORT CASES BY Company Year.

*Declare new set and have OMS suppress the other results.
DATASET DECLARE CoeffTable.
OMS 
  /SELECT TABLES
  /IF COMMANDS = 'Regression'
  /DESTINATION VIEWER = NO.
*Now split file to get the coefficients.
SPLIT FILE BY Company.
REGRESSION
  /DEPENDENT y
  /METHOD=ENTER x1 x2 x3
  /SAVE PRED (CompSpePred)
  /OUTFILE = COVB  ('CoeffTable').
SPLIT FILE OFF.
OMSEND.
************************************************************.