Stata和R中的不同结果,带有;“相同”;方差分析代码
我有一些Stata代码,我想在R中复制结果。然而,即使使用相同的数据集,我认为,相同的代码,我在R中得到的结果与在Stata中得到的结果不同。我认为这可能是因为Stata使回归的顺序不同于键入的顺序 我是否需要与Stata完全相同的顺序才能获得相同的结果?我如何才能做到这一点 我将所有变量都改为因子,并再次尝试,但问题仍然存在 我注意到,当我改变解释变量的顺序时,我会得到不同的结果,但我没有找到复制Stata结果的“正确顺序” Stata代码:Stata和R中的不同结果,带有;“相同”;方差分析代码,r,output,stata,anova,varying,R,Output,Stata,Anova,Varying,我有一些Stata代码,我想在R中复制结果。然而,即使使用相同的数据集,我认为,相同的代码,我在R中得到的结果与在Stata中得到的结果不同。我认为这可能是因为Stata使回归的顺序不同于键入的顺序 我是否需要与Stata完全相同的顺序才能获得相同的结果?我如何才能做到这一点 我将所有变量都改为因子,并再次尝试,但问题仍然存在 我注意到,当我改变解释变量的顺序时,我会得到不同的结果,但我没有找到复制Stata结果的“正确顺序” Stata代码: . anova testm2 c.testm1 i
. anova testm2 c.testm1 i.hptreat c.cortm1 c.cortm2 i.female if inelig == 0 & anyoutv1 == 0
Number of obs =39 R-squared =0.7048
Root MSE= 16.0144 Adj R-squared =0.6601
Source | Partial SS df MS F Prob>F
---------------------------------------------------------------
Model | 20209.281 5 4041.8563 15.76 0.0000
testm1 | 3516.6527 1 3516.6527 13.71 0.0008
hptreat| 1183.5007 1 1183.5007 4.61 0.0391
cortm1 | 8.5753841 1 8.5753841 0.03 0.8560
cortm2 | 2810.9353 1 2810.9353 10.96 0.0023
female | 2557.3444 1 2557.3444 9.97 0.0034
Residual| 8463.2532 33 256.46222
----------------------------------------------------------------
Total | 28672.535 38 754.54038
R代码:
FosseTest<-aov(testm2~testm1+hptreat+cortm1+cortm2+female,data=X2data)
summary(FosseTest)
Df Sum Sq Mean Sq F value Pr(>F)
testm1 1 15121 15121 58.962 7.68e-09 ***
hptreat 1 524 524 2.043 0.16228
cortm1 1 23 23 0.089 0.76715
cortm2 1 1984 1984 7.735 0.00888 **
female 1 2557 2557 9.972 0.00339 **
Residuals 33 8463 256
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
使用
drop1(FosseTest,test=“F”)
可以在R
中获得相同的结果。这将测试关闭aov
的一个变量的效果
drop1(FosseTest, test = "F")
#
# Single term deletions
#
# Model:
# testm2 ~ testm1 + hptreat + cortm1 + cortm2 + female
# Df Sum of Sq RSS AIC F value Pr(>F)
# <none> 8463.3 221.82
# testm1 1 3516.7 11979.9 233.37 13.7122 0.0007751 ***
# hptreat 1 1183.5 9646.8 224.92 4.6147 0.0391333 *
# cortm1 1 8.6 8471.8 219.86 0.0334 0.8560279
# cortm2 1 2810.9 11274.2 231.00 10.9604 0.0022605 **
# female 1 2557.3 11020.6 230.11 9.9716 0.0033895 **
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
drop1(FosseTest,test=“F”)
#
#单项删除
#
#型号:
#testm2~testm1+hptreat+cortm1+cortm2+雌性
#平方RSS AIC F值Pr(>F)的Df和
# 8463.3 221.82
#测试M1 1 3516.7 11979.9 233.37 13.7122 0.0007751***
#hptreat 1 1183.5 9646.8 224.92 4.6147 0.0391333*
#cortm1 1 8.6 8471.8 219.86 0.0334 0.8560279
#cortm2 1 2810.9 11274.2 231.00 10.9604 0.0022605**
#母1 2557.3 11020.6 230.11 9.9716 0.0033895**
# ---
#签名。代码:0'***'0.001'***'0.01'*'0.05'.'0.1''1
summary(FosseTest)
显示依次添加变量的顺序效果
有一种不同的方式来访问此文件,但目前我记不起来了……您能分享您正在使用的数据吗?例如,使用
dput()
我希望这是正确的方法,您现在可以使用数据:)数据显示对R用户友好,但对不经常使用R的Stata用户不友好。Stata中的等效值是您正在使用的观察结果的dataex testm2 testm1 hptreat cortm1 cortm2 female
。表面上看,这里的区别可能在于哪些变量被视为因子,哪些变量被视为连续变量。非常感谢你的回答。您介意告诉我如何构造r代码以获得与stata中的输出一致的结果吗?因为目前,变量hptreat和FEME是因子变量(因为stata代码中的i),而其他值(testm1、testm2、cortm1、cortm2)是数字的,因为c。在stata代码中。我还可以改变什么来获得正确的值?如果你是在对我讲话,那么很抱歉,但我不能建议如何使用R。幸运的是,你的问题现在似乎得到了回答。
drop1(FosseTest, test = "F")
#
# Single term deletions
#
# Model:
# testm2 ~ testm1 + hptreat + cortm1 + cortm2 + female
# Df Sum of Sq RSS AIC F value Pr(>F)
# <none> 8463.3 221.82
# testm1 1 3516.7 11979.9 233.37 13.7122 0.0007751 ***
# hptreat 1 1183.5 9646.8 224.92 4.6147 0.0391333 *
# cortm1 1 8.6 8471.8 219.86 0.0334 0.8560279
# cortm2 1 2810.9 11274.2 231.00 10.9604 0.0022605 **
# female 1 2557.3 11020.6 230.11 9.9716 0.0033895 **
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1