簡體   English   中英

R中轉換數據的SLR

[英]SLR of transformed data in R

對於 Y = 收入低於貧困線的人口百分比和 X = 人口人均收入,我構建了一個 box-cox 圖,發現 lambda = 0.02020:

bc <- boxcox(lm(Percent_below_poverty_level ~ Per_capita_income, data=tidy.CDI), plotit=T)
bc$x[which.max(bc$y)] # gives lambda

現在我想使用轉換后的數據擬合一個簡單的線性回歸,所以我輸入了這個代碼

transform <- lm((Percent_below_poverty_level**0.02020) ~ (Per_capita_income**0.02020))
transform

但我得到的只是錯誤消息“terms.formula(formula, data = data) 中的錯誤:公式中的冪無效”。 我的錯誤是什么?

您可以使用car包中的bcPower()

## make sure you do install.packages("car") if you haven't already
library(car)
data(Prestige)
p <- powerTransform(prestige ~ income + education + type , 
                    data=Prestige, 
                    family="bcPower")

summary(p)
# bcPower Transformation to Normality 
# Est Power Rounded Pwr Wald Lwr Bnd Wald Upr Bnd
# Y1    1.3052           1       0.9408       1.6696
# 
# Likelihood ratio test that transformation parameter is equal to 0
# (log transformation)
# LRT df       pval
# LR test, lambda = (0) 41.67724  1 1.0765e-10
# 
# Likelihood ratio test that no transformation is needed
# LRT df    pval
# LR test, lambda = (1) 2.623915  1 0.10526

mod <- lm(bcPower(prestige, 1.3052) ~ income + education + type, data=Prestige)
summary(mod)
# 
# Call:
#   lm(formula = bcPower(prestige, 1.3052) ~ income + education + 
#        type, data = Prestige)
# 
# Residuals:
#   Min      1Q  Median      3Q     Max 
# -44.843 -13.102   0.287  15.073  62.889 
# 
# Coefficients:
#   Estimate Std. Error t value Pr(>|t|)    
# (Intercept) -3.736e+01  1.639e+01  -2.279   0.0250 *  
#   income       3.363e-03  6.928e-04   4.854 4.87e-06 ***
#   education    1.205e+01  2.009e+00   5.999 3.78e-08 ***
#   typeprof     2.027e+01  1.213e+01   1.672   0.0979 .  
# typewc      -1.078e+01  7.884e+00  -1.368   0.1746    
# ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 22.25 on 93 degrees of freedom
# (4 observations deleted due to missingness)
# Multiple R-squared:  0.8492,  Adjusted R-squared:  0.8427 
# F-statistic:   131 on 4 and 93 DF,  p-value: < 2.2e-16

冪(在 R、FWIW 中更常由^表示而不是** )在公式中具有特殊含義[它們表示變量之間的相互作用而不是數學運算]。 因此,如果您確實想對等式的兩邊進行冪變換,則可以使用I()或“原樣”運算符:

I(Percent_below_poverty_level^0.02020) ~ I(Per_capita_income^0.02020)

但是,我認為您應該按照@DaveArmstrong 的建議進行操作:

  • 它只是被轉換的預測變量
  • Box-Cox 變換實際上是(y^lambda-1)/lambda (盡管移位和比例可能對您的結果無關緊要)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM