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

时间:2013-12-18 09:51:25

标签: loops linear-regression spss

对于我的硕士论文,我必须使用 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行多重线性回归,我是对的吗?

正如我所说,我根本没有经验,所以每一个提示都对我有价值。

提前谢谢你,

雅尼纳。

2 个答案:

答案 0 :(得分:2)

请记住,每个公司只有六个观察值,而三个(或者如果你还有一个常数项则为4个)系数要估算,系数估计值可能非常不精确。您可能想要考虑是否可以至少部分合并公司。

答案 1 :(得分:1)

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

该示例声明了一个新的数据集,用于管理回归估计(参见OUTFILE上的REGRESSION子命令)并抑制其他表(大部分时间内有900多个表用于渲染输出)。如果您需要其他统计信息,请省略用于抑制表格的OMS,或者将其调整为仅显示您想要的表格。 (您也可以使用OMS将其他结果传输到其他数据集。)

************************************************************.
*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.
************************************************************.