Stata和R中的不同结果,带有;“相同”;方差分析代码

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

我有一些Stata代码,我想在R中复制结果。然而,即使使用相同的数据集,我认为,相同的代码,我在R中得到的结果与在Stata中得到的结果不同。我认为这可能是因为Stata使回归的顺序不同于键入的顺序

我是否需要与Stata完全相同的顺序才能获得相同的结果?我如何才能做到这一点

我将所有变量都改为因子,并再次尝试,但问题仍然存在

我注意到,当我改变解释变量的顺序时,我会得到不同的结果,但我没有找到复制Stata结果的“正确顺序”

Stata代码:

. 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