해설 전에 설명 변수와 반응 변수를 독립적으로 정렬하면 어떻게됩니까?


302

우리가 설정 한 데이터가 있다고 가정 과 점을. 선형 회귀를 수행하려고하지만 먼저 값과 값을 서로 독립적으로 정렬하여 데이터 세트 형성합니다 . 새로운 데이터 세트에 대한 회귀에 대한 의미있는 해석이 있습니까? 이름이 있습니까?(Xi,Yi)X Y I ( X I , Y의 J )nXiYi(Xi,Yj)

나는 이것이 어리석은 질문이라고 생각한다. 그래서 나는 공식적으로 통계에 대해 훈련받지 않았다. 내 생각에 이것은 우리의 데이터를 완전히 파괴하고 회귀는 의미가 없습니다. 그러나 내 매니저는 그가 이것을 할 때 "대부분 더 나은 회귀를 얻습니다"라고 말합니다 (여기서 "더 나은"은 더 예측적임을 의미합니다). 나는 그가 자신을 속이는 느낌이 있습니다.

편집 : 당신의 모든 좋은 예제와 환자 주셔서 감사합니다. 나는 그에게 @ RUser4512와 @gung의 예제를 보여 주었고 그는 여전히 우습다. 그는 짜증이 나고 지치고 있습니다. 나는 crestfallen을 느낀다. 아마 곧 다른 직업을 찾기 시작할 것입니다.


120
그러나 내 관리자는 이렇게하면 "대부분 더 나은 회귀를 얻습니다"라고 말합니다. 오 신 ...
Jake Westfall

56
에 대한 이유를 확실히 없다 당신이 당황하기는!
Jake Westfall

36
"과학은 우리가 원하는 것입니다." -레오 우주인 박사.
Sycorax

52
이 아이디어는 내가 만난 다른 아이디어와 경쟁해야합니다. 샘플이 작 으면 동일한 데이터의 여러 사본으로 대량으로 샘플을 만드십시오.
Nick Cox

47
상사에게 더 나은 아이디어가 있다고 말해야합니다. 실제 데이터를 사용하는 대신 모델링하기가 더 쉬워서 직접 데이터를 생성 할 수 있습니다.
dsaxton

답변:


147

당신의 상사가 "더 예측 적"이라고 생각하는 것이 확실하지 않습니다. 많은 사람들 은 이 낮을 수록 더 나은 / 예측 모델을 의미 한다고 잘못 믿고 있습니다. 반드시 그런 것은 아닙니다 (이것이 적절한 예입니다). 그러나 두 변수를 독립적으로 사전에 정렬하면 값 이 낮아집니다 . 반면, 동일한 프로세스에서 생성 된 새로운 데이터와 예측을 비교하여 모델의 예측 정확도를 평가할 수 있습니다. 아래의 간단한 예에서 (로 코딩 된 ) 작업을 수행합니다. pppR

options(digits=3)                       # for cleaner output
set.seed(9149)                          # this makes the example exactly reproducible

B1 = .3
N  = 50                                 # 50 data
x  = rnorm(N, mean=0, sd=1)             # standard normal X
y  = 0 + B1*x + rnorm(N, mean=0, sd=1)  # cor(x, y) = .31
sx = sort(x)                            # sorted independently
sy = sort(y)
cor(x,y)    # [1] 0.309
cor(sx,sy)  # [1] 0.993

model.u = lm(y~x)
model.s = lm(sy~sx)
summary(model.u)$coefficients
#             Estimate Std. Error t value Pr(>|t|)
# (Intercept)    0.021      0.139   0.151    0.881
# x              0.340      0.151   2.251    0.029  # significant
summary(model.s)$coefficients
#             Estimate Std. Error t value Pr(>|t|)
# (Intercept)    0.162     0.0168    9.68 7.37e-13
# sx             1.094     0.0183   59.86 9.31e-47  # wildly significant

u.error = vector(length=N)              # these will hold the output
s.error = vector(length=N)
for(i in 1:N){
  new.x      = rnorm(1, mean=0, sd=1)   # data generated in exactly the same way
  new.y      = 0 + B1*x + rnorm(N, mean=0, sd=1)
  pred.u     = predict(model.u, newdata=data.frame(x=new.x))
  pred.s     = predict(model.s, newdata=data.frame(x=new.x))
  u.error[i] = abs(pred.u-new.y)        # these are the absolute values of
  s.error[i] = abs(pred.s-new.y)        #  the predictive errors
};  rm(i, new.x, new.y, pred.u, pred.s)
u.s = u.error-s.error                   # negative values means the original
                                        # yielded more accurate predictions
mean(u.error)  # [1] 1.1
mean(s.error)  # [1] 1.98
mean(u.s<0)    # [1] 0.68


windows()
  layout(matrix(1:4, nrow=2, byrow=TRUE))
  plot(x, y,   main="Original data")
  abline(model.u, col="blue")
  plot(sx, sy, main="Sorted data")
  abline(model.s, col="red")
  h.u = hist(u.error, breaks=10, plot=FALSE)
  h.s = hist(s.error, breaks=9,  plot=FALSE)
  plot(h.u, xlim=c(0,5), ylim=c(0,11), main="Histogram of prediction errors",
       xlab="Magnitude of prediction error", col=rgb(0,0,1,1/2))
  plot(h.s, col=rgb(1,0,0,1/4), add=TRUE)
  legend("topright", legend=c("original","sorted"), pch=15, 
         col=c(rgb(0,0,1,1/2),rgb(1,0,0,1/4)))
  dotchart(u.s, color=ifelse(u.s<0, "blue", "red"), lcolor="white",
           main="Difference between predictive errors")
  abline(v=0, col="gray")
  legend("topright", legend=c("u better", "s better"), pch=1, col=c("blue","red"))

여기에 이미지 설명을 입력하십시오

왼쪽 상단에 원본 데이터가 표시됩니다. 와 사이에는 약간의 관계가 있습니다 (즉, 상관 관계는 약 입니다). 오른쪽 위 그림은 두 변수를 독립적으로 정렬 한 후의 데이터 모양을 보여줍니다. 상관 관계의 강도가 상당히 증가했음을 쉽게 알 수 있습니다 (현재 약 ). 그러나 더 낮은 도표에서, 예측 오차의 분포 는 원래 (정렬되지 않은) 데이터에 대해 훈련 된 모델에 대해 에 훨씬 가깝다는 것을 알 수 있습니다. 원래 데이터를 사용한 모델의 평균 절대 예측 오차는 이고 정렬 된 데이터를 한 모델의 평균 절대 예측 오차는, Y 0.31 0.99 0 1.1 1.98 68 %xy.31.9901.11.98— 거의 두 배나 큽니다. 이는 정렬 된 데이터 모델의 예측이 올바른 값에서 훨씬 더 멀다는 것을 의미합니다. 오른쪽 아래 사분면의 플롯은 도트 플롯입니다. 원래 데이터와 정렬 된 데이터의 예측 오류 간의 차이를 표시합니다. 이를 통해 시뮬레이션 된 각각의 새로운 관측치에 대한 두 개의 해당 예측을 비교할 수 있습니다. 왼쪽의 파란색 점은 원래 데이터가 새로운 값에 가까워진 시간 이고 오른쪽의 빨간색 점은 정렬 된 데이터가 더 나은 예측을 생성 한 시간입니다. 의 시간에 원본 데이터에 대해 훈련 된 모델로부터 더 정확한 예측이 이루어졌습니다 . y68%


정렬로 인해 이러한 문제가 발생하는 정도는 데이터에 존재하는 선형 관계의 함수입니다. 상관 관계 경우 및 있었다 이미 따라서 영향을 미치지 않는다 정렬 및 것은 해로울 수 없다. 한편, 상관 관계가1.0 - 1.0xy1.01.0정렬은 관계를 완전히 역전시켜 모델을 가능한 한 부정확하게 만듭니다. 데이터가 원래 완전히 상관되지 않은 경우 정렬은 결과 모델의 예측 정확도에 중간이지만 여전히 매우 큰 해로운 영향을 미칩니다. 데이터가 일반적으로 상관되어 있다고 언급 했으므로이 절차에 내재 된 피해에 대해 일부 보호 기능을 제공 한 것으로 보입니다. 그럼에도 불구하고 먼저 정렬하는 것은 확실히 해 롭습니다. 이러한 가능성을 탐색하기 위해 위의 코드를 다른 값으로 재실행하고 B1(재현성을 위해 동일한 시드 사용) 출력을 검사 할 수 있습니다.

  1. B1 = -5:

    cor(x,y)                            # [1] -0.978
    summary(model.u)$coefficients[2,4]  # [1]  1.6e-34  # (i.e., the p-value)
    summary(model.s)$coefficients[2,4]  # [1]  1.82e-42
    mean(u.error)                       # [1]  7.27
    mean(s.error)                       # [1] 15.4
    mean(u.s<0)                         # [1]  0.98
  2. B1 = 0:

    cor(x,y)                            # [1] 0.0385
    summary(model.u)$coefficients[2,4]  # [1] 0.791
    summary(model.s)$coefficients[2,4]  # [1] 4.42e-36
    mean(u.error)                       # [1] 0.908
    mean(s.error)                       # [1] 2.12
    mean(u.s<0)                         # [1] 0.82
  3. B1 = 5:

    cor(x,y)                            # [1] 0.979
    summary(model.u)$coefficients[2,4]  # [1] 7.62e-35
    summary(model.s)$coefficients[2,4]  # [1] 3e-49
    mean(u.error)                       # [1] 7.55
    mean(s.error)                       # [1] 6.33
    mean(u.s<0)                         # [1] 0.44

12
당신의 대답은 아주 좋은 지적이지만, 아마도 명확하고 명확하지 않을 수도 있습니다. 일반인 (예 : OP의 관리자)에게 마지막에있는 모든 플롯 (R 코드는 중요하지 않음)이 실제로 표시하고 암시하는 것이 반드시 분명하지는 않습니다. IMO, 귀하의 답변은 실제로 설명 단락을 사용할 수 있습니다.
Ilmari Karonen

3
귀하의 의견에 감사드립니다, @IlmariKaronen. 추가 할 것을 제안 할 수 있습니까? 가능한 한 코드를 자명하게 만들려고 노력했으며 광범위하게 주석을 달았습니다. 그러나 나는 더 이상 이러한 주제에 익숙하지 않은 사람의 눈으로는 이러한 것들을 볼 수 없을 수도 있습니다. 하단에 줄거리를 설명하는 텍스트를 추가하겠습니다. 다른 것을 생각할 수 있으면 알려주세요.
gung

13
+1 이것은 여전히 ​​제안 된 상황을 해결하는 유일한 해답입니다. 두 변수가 이미 긍정적 인 연관성 을 보이면 독립적으로 정렬 된 값을 회귀하는 것은 오류입니다. 다른 모든 답변은 연관성이 없거나 실제로 부정적이라고 가정합니다. 그것들은 좋은 예이지만 적용하지 않기 때문에 설득력이 없습니다. 그럼에도 불구하고 우리가 여전히 부족한 것은 실수의 본질이 매우 명백한 여기서 시뮬레이션 된 것과 같은 직감적 인 직관적 인 실제 데이터 입니다.
whuber

8
정통파에 좌우되지 않고 R에서 과제로 "="를 사용하여 +1
dsaxton

@ dsaxton, <-때로는 사용 하지만 CV에 대한 나의 목표는 R 코드를 의사 코드에 최대한 가깝게 작성하여 R에 익숙하지 않은 사람들이 더 읽기 쉽 =도록 할당 연산자로서 프로그래밍 언어 중에서 꽤 보편적입니다. .
gung

103

상사를 설득하려면 시뮬레이션 된 랜덤 랜덤 데이터로 무슨 일이 일어나고 있는지 보여줄 수 있습니다 . R로 :x,y여기에 이미지 설명을 입력하십시오

n <- 1000

y<- runif(n)
x <- runif(n)

linearModel <- lm(y ~ x)


x_sorted <- sort(x)
y_sorted <- sort(y)

linearModel_sorted <- lm(y_sorted ~ x_sorted)

par(mfrow = c(2,1))
plot(x,y, main = "Random data")
abline(linearModel,col = "red")


plot(x_sorted,y_sorted, main = "Random, sorted data")
abline(linearModel_sorted,col = "red")

분명히, 정렬 된 결과는 훨씬 더 좋은 회귀를 제공합니다. 그러나 데이터를 생성하는 데 사용 된 프로세스 (두 개의 독립적 인 샘플)를 사용하면 하나를 사용하여 다른 하나를 예측할 수있는 가능성이 전혀 없습니다.


8
그것은 모든 인터넷 "전후"광고와 거의 같습니다 :)
Tim

이것은 좋은 예이지만 데이터가 정렬하기 전에 양의 상관 관계를 가지고 있기 때문에 그를 납득시킬 것이라고 생각하지 않습니다. 정렬은 관계를 "강화"합니다 (잘못된 관계 임).
임의 사용자

17
@arbitraryuser : 정렬 된 데이터는 원본 데이터와 상관 관계가있는 경우 상관없이 항상 양 ( 음, 음이 아닌) 상관 관계를 나타냅니다. 어쨌든 원본 데이터가 항상 양의 상관 관계를 가지고 있다는 것을 알고 있다면 "실수로 수정 ​​된 것"입니다.하지만 이미 존재하고 긍정적 인 것을 알고 있다면 상관 관계 검사를 방해하는 이유는 무엇입니까? 관리자가 실행하는 테스트는 항상 "통기성 공기 감지"라고 말하는 "공기 품질 감지기"와 비슷합니다. 통기성 공기가없는 곳에서는 절대 사용하지 않는 한 완벽하게 작동합니다.
Ilmari Karonen

2
@arbitraryuser 더 설득력있는 또 다른 예는 x = 0 : 50, y = 0 : -50, 기울기가 -1 인 완벽한 선을 취하는 것입니다. 당신이 그것들을 분류하면, 관계는 기울기가 1 인 완벽한 선으로 변합니다. 진실은 당신의 변수가 완전히 반대되는 것이 다르고, 당신이 그들이 완전히 일치하는 것으로 변한다는 잘못된 인식에 근거하여 정책 처방을하면, 당신은 정확히 잘못된 일을합니다.
John Rauser

99

직관이 정확합니다. 독립적으로 정렬 된 데이터는 입력과 출력이 관찰 된 관계가 아닌 무작위로 서로 매핑되므로 신뢰할 수있는 의미가 없습니다.

정렬 된 데이터에 대한 회귀가 좋아 보일 가능성은 높지만 상황에서는 의미가 없습니다.

(X=age,Y=height)

x,y


25
+ 1--하지만 "필수"를 삭제하고 "의미없는"것을 다시 강조합니다.
whuber

12
OP는 데이터를 섞는 대신 데이터 를 독립적으로 정렬 하는 것을 말합니다 . 이는 주어진 작업을 적용한 후 관찰 된 "관계"와 관련이 있기 때문에 미묘하지만 중요한 차이점입니다.
추기경

3
xy

12
@amoeba 사소한 데이터 세트 : 평균 십대, 30 대 중반 NBA 센터, 노인 평균 여성. 예측 알고리즘을 정렬 한 후 가장 오래된 것이 가장 크다는 것입니다.
d0rmLife

1
@amoeba 나는 그것이 어떻게 그렇게 해석 될 수 있는지 보았습니다. 나는 분명히 할 것입니다.
d0rmLife

40

Viti

(ti,Vi)

(0,1.0),(1,0.9),(2,0.8),(3,0.7),(4,0.6),(5,0.5).
(0,0.5),(1,0.6),(2,0.7),(3,0.8),(4,0.9),(5,1.0).
그리고이 정렬 된 데이터 세트에서 결론은 그 또한 시간이 증가, 물의 양이 증가, 등, 1 리터의 물에서 시작, 당신은 대기 5 시간 후에 얻을 것이라는 점 이상 1리터 물. 놀랍지 않습니까? 원래 데이터가 말한 것과 반대되는 결론 일뿐만 아니라 새로운 물리학을 발견했다고 제안합니다!

5
좋은 직관적 인 예! 마지막 줄을 제외하고. 원래 데이터를 사용하면 시간이 지나면 마이너스 볼륨을 얻게되며 이는 새로운 물리학도 마찬가지입니다. 실제로 회귀를 추정 할 수는 없습니다.
Jongsma

22

그것은 실제 예술이며 일부 사람들에게 자신의 길의 오류를 확신시킬 수 있도록 심리학을 이해합니다. 위의 모든 훌륭한 예 외에도 유용한 전략은 때로는 사람의 신념이 자신과 일치하지 않는다는 것을 보여주는 것입니다. 또는이 접근법을 시도하십시오. 작업 Y에서 사람이 수행하는 방법과 같이 자신의 상사가 굳게 믿고있는 것을 찾으십시오. 상사 자신의 접근 방식이 어떻게 X와 Y 사이의 강력한 연관성을 맺게되는지 보여줍니다. 정치 / 인종 / 종교적 신념을 활용하십시오.

안면 무효가 충분했을 것입니다. 완고한 보스. 그 동안 더 나은 직업을 찾으십시오. 행운을 빕니다.


12

하나 더 예. 두 가지 변수가 있는데, 하나는 초콜릿을 먹는 것과 관련이 있고 다른 하나는 전반적인 웰빙과 관련이 있다고 상상해보십시오. 샘플 2 개가 있고 데이터는 다음과 같습니다.

chocolateno happinessno chocolatehappiness

샘플을 기반으로 한 초콜릿과 행복의 관계는 무엇입니까? 이제 열 중 하나의 순서를 변경하십시오.이 작업 후 관계는 무엇입니까?

tNt

iXiY

경우에 따라 사례 순서 변경에 관심이있는 경우도 있지만 리샘플링 방법 도 마찬가지입니다 . 예를 들어 의도적으로 여러 번 관측 값을 섞어서 데이터의 null 분포에 대해 알아볼 수 있습니다 (페어 와이즈 관계가없는 경우 데이터가 어떻게 보이는지). 그런 다음 실제 데이터가 무작위보다 더 나은지 비교할 수 있습니다. 뒤섞였다. 관리자가하는 일은 정확히 반대입니다. 그는 의도적으로 관찰이 구조가없는 곳에 인공 구조를 갖도록 강요하여 가짜 상관 관계를 유발합니다.


8

관리자가 이해할 수있는 간단한 예 :

Coin Y와 Coin X가 있고 각각을 100 번 뒤집습니다. 그런 다음 코인 X (IV)로 헤드를 얻는 것이 코인 Y (DV)로 헤드를 얻는 기회를 증가시킬 수 있는지 예측하려고합니다.

Coin X의 결과가 Coin Y의 결과에 영향을 미치지 않아야하기 때문에 정렬하지 않으면 관계가 없습니다. 정렬하면 관계가 거의 완벽합니다.

다른 동전으로 머리를 뒤집었을 때 동전 뒤집기에 머리를 댈 가능성이 높다고 결론을내는 것이 합리적입니까?


1
가정하고있는 통화를 제외한 모든 통화에 대한 번역이 필요합니다. (나는 이것이 사소한 이의 제기라는 것을 알고 있으며 문제를 해결하기는 쉽지만, 이것이 국제 포럼이라는 점을 강조 할 가치가 있습니다.)
Nick Cox

8

이 기술은 실제로 놀랍습니다. 나는 결코 의심하지 않은 모든 종류의 관계를 찾고 있습니다. 예를 들어, 나는 CLAIMED 인 Powerball 복권에 표시되는 숫자가 무작위이며 실제로 같은 날 Apple 주식의 개장 가격과 높은 상관 관계가 있다고 의심하지 않았을 것입니다! 여러분, 저는 우리가 큰 시간에 현금으로 바꾸려고한다고 생각합니다. :)

> powerball_last_number = scan()
1: 69 66 64 53 65 68 63 64 57 69 40 68
13: 
Read 12 items
> #Nov. 18, 14, 11, 7, 4
> #Oct. 31, 28, 24, 21, 17, 14, 10
> #These are powerball dates.  Stock opening prices 
> #are on same or preceding day.
> 
> appl_stock_open = scan()
1: 115.76  115.20 116.26  121.11  123.13 
6: 120.99  116.93  116.70  114.00  111.78
11: 111.29  110.00
13: 
Read 12 items
> hold = lm(appl_stock_open ~ powerball_last_number)
> summary(hold)


Coefficients:
                       Estimate Std. Error t value Pr(>|t|)    
(Intercept)           112.08555    9.45628  11.853 3.28e-07 ***
powerball_last_number   0.06451    0.15083   0.428    0.678    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.249 on 10 degrees of freedom
Multiple R-squared:  0.01796,   Adjusted R-squared:  -0.08024 
F-statistic: 0.1829 on 1 and 10 DF,  p-value: 0.6779

흠, 중요한 관계가없는 것 같습니다. 그러나 새롭고 향상된 기술을 사용합니다.

> 
> vastly_improved_regression = lm(sort(appl_stock_open)~sort(powerball_last_number))
> summary(vastly_improved_regression)

Coefficients:
                            Estimate Std. Error t value Pr(>|t|)    
(Intercept)                 91.34418    5.36136  17.038 1.02e-08 ***
sort(powerball_last_number)  0.39815    0.08551   4.656    9e-04 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.409 on 10 degrees of freedom
Multiple R-squared:  0.6843,    Adjusted R-squared:  0.6528 
F-statistic: 21.68 on 1 and 10 DF,  p-value: 0.0008998

참고 : 이것은 심각한 분석이 아닙니다. 관리자에게 두 변수를 모두 정렬하면 두 변수를 크게 관련시킬 수 있음을 보여주십시오.


6

여기에 좋은 반대 사례가 많이 있습니다. 문제의 핵심에 대한 단락을 추가하겠습니다.

XiYiXYiiX1Y1X2Y2XYX1Y1X1Y1

실제로 왜 "작동"하는지에 대한 단락을 추가하겠습니다.

XaXbXaXYaXzXYzYXaYaXzYzX1Y1


6

실제로, (X, Y)가 이변 량 분포로부터 독립된 쌍으로 샘플링된다고 가정 할 때, 설명 된 테스트 (즉, X 값과 Y 값을 독립적으로 정렬하고 다른 값에 대해 하나를 회귀)는 무언가를 테스트합니다. 단지 관리자가 테스트하고자하는 내용에 대한 테스트가 아닙니다. 본질적으로 QQ 플롯의 선형성을 검사하고 X의 한계 분포와 Y의 한계 분포를 비교합니다. 특히 X의 밀도 (f (x))가 Y의 밀도 (g (y))와 관련이있는 경우 '데이터'는 직선에 가깝습니다.

f(x)=g((ya)/b)ab>0


4

가장 명백한 반례가 여전히 가장 간단한 형태의 답변들 사이에 존재하지 않는 것이 이상합니다.

Y=X

Y^X

이것은 당신이 여기서 찾을 수있는 일종의 "직접적인 역"입니다.


이것이 반대의 예인 주장을 설명해 주시겠습니까?
whuber

입력과 출력을 독립적으로 정렬하여 "항상 더 나은 회귀를 얻을 수있다"는 관리자의 주장.
KT.

R2=1

R2

1
R2Y=X

3

네 말이 맞아 당신의 매니저는 "좋은"결과를 찾을 것입니다! 그러나 그들은 의미가 없습니다. 독립적으로 정렬 할 때 얻을 수있는 것은 두 가지가 비슷하게 증가하거나 감소하며 이는 좋은 모델과 비슷하다는 것입니다. 그러나 두 변수가 실제 관계에서 제거되었으며 모델이 올바르지 않습니다.


3

xx2xx2x

선형 회귀는 일반적으로 덜 합리적입니다 (예외가 있으며 다른 답변 참조). 그러나 꼬리와 오차 분포의 기하학은 분포가 얼마나 멀리 떨어져 있는지 알려줍니다.


2

함수가 모노톤 인 경우 이것이 실제로 좋은 아이디어 인 간단한 직관이 있습니다 .

입력 값 x 1 , x 2 를 알고 있다고 상상해보십시오x1,x2,,xnxi<xi+1f:yi=f(xi)+εiεi

εi=f(xi+δ)f(xi)
δ{Δ,Δ+1,Δ1,Δ}ΔNΔ=0Δ=n

f

εi

추신 : 분명히 간단한 질문이 표준 모델을 다시 생각하는 흥미로운 새로운 방법으로 이어질 수 있다는 것이 놀랍습니다. 보스 감사합니다!


1
xi+δi+δ<1i+δ>n

2

반경 5의 원에이 점들이 있다고 가정합니다. 상관 관계를 계산합니다.

import pandas as pd
s1 = [(-5, 0), (-4, -3), (-4, 3), (-3, -4), (-3, 4), (0, 5), (0, -5), (3, -4), (3, 4), (4, -3), (4, 3), (5, 0)]
df1 = pd.DataFrame(s1, columns=["x", "y"])
print(df1.corr())

   x  y
x  1  0
y  0  1

그런 다음 x 값과 y 값을 정렬하고 상관 관계를 다시 수행하십시오.

s2 = [(-5, -5), (-4, -4), (-4, -4), (-3, -3), (-3, -3), (0, 0), (0, 0), (3, 3), (3, 3), (4, 4), (4, 4), (5, 5)]
df2 = pd.DataFrame(s2, columns=["x", "y"])
print(df2.corr())

   x  y
x  1  1
y  1  1

이 조작으로 0.0 상관 관계가있는 데이터 세트를 1.0 상관 관계가있는 데이터 세트로 변경합니다. 문제입니다.


1

여기서 Devil 's Advocate를 플레이하겠습니다. 보스의 절차가 근본적으로 잘못되었다는 많은 설득력있는 사례가 있다고 생각합니다. 동시에, 나는 상사가이 잘못된 변환으로 결과가 실제로 개선되었음을 볼 수있는 반례를 제시합니다.

나는이 절차가 상사를 위해 "일했다"는 것을 인정하는 것이보다 설득력있는 주장을 시작할 수 있다고 생각한다. 물론, 그것은 효과가 있었지만, 일반적으로 유지되지 않는 운이 좋은 상황에서만 가능하다. 그렇다면 우리는 훌륭한 대답 에서처럼 운이 좋지 않을 때 얼마나 나쁜지를 보여줄 수 있습니다. 대부분의 시간입니다. 격리, 그것은 얼마나 나쁜 보스 보여주는 그가이 경우 본 수도 있기 때문에 그를 설득하지 않을 수 있습니다 될 않는 우리의 공상 인수가 어딘가 결함이 있어야 일을 개선하고, 그림.

나는이 데이터를 온라인에서 찾았으며 X와 Y의 독립적 인 정렬에 의해 회귀가 개선 된 것으로 보입니다 .a) 데이터가 매우 양의 상관 관계가 있으며 b) OLS는 실제로 극단적 인 (높은 -레버리지) 특이 치. 높이와 무게는 특이 치가 포함 된 0.19, 특이 치가 제외 된 0.77, X와 Y가 독립적으로 정렬 된 0.78의 상관 관계를 갖습니다.

x <- read.csv ("https://vincentarelbundock.github.io/Rdatasets/csv/car/Davis.csv", header=TRUE)

plot (weight ~ height, data=x)

lm1 <- lm (weight ~ height, data=x)

xx <- x
xx$weight <- sort (xx$weight)
xx$height <- sort (xx$height)

plot (weight ~ height, data=xx)

lm2 <- lm (weight ~ height, data=xx)

plot (weight ~ height, data=x)
abline (lm1)
abline (lm2, col="red")

여기에 이미지 설명을 입력하십시오

plot (x$height, x$weight)
points (xx$height, xx$weight, col="red")

여기에 이미지 설명을 입력하십시오

따라서이 데이터 세트의 회귀 모델은 독립적 인 정렬 (첫 ​​번째 그래프의 검은 색 대 빨간색 선)에 의해 개선되고 특정 데이터 세트로 인해 가시적 인 관계 (두 번째 그래프의 검은 색 대 빨간색)가있는 것으로 보입니다. x와 y를 독립적으로 정렬 할 때 발생하는 셔플 링보다 회귀에 해를 끼치는 적절한 종류의 특이 값을 갖는 (긍정적으로) 상관 관계가 있습니다.

다시 말하지만, 독립적으로 정렬한다고 말하지 않으면 일반적으로 합리적 인 것이거나 올바른 대답이 아닙니다. 상사가 올바른 상황에서 작동하는 것과 같은 것을 보았을 수도 있습니다.


1
비슷한 상관 계수에 도달 한 것은 우연의 일치 인 것 같습니다. 이 예제는 원본 데이터와 독립적으로 정렬 된 데이터 사이의 관계에 대해서는 설명하지 않습니다.
whuber

2
@ whuber : 두 번째 그래프는 어떻습니까? 원래 데이터가 서로 밀접하게 관련되어 있으면 정렬하면 기본적으로 원래 관계 +/-를 유지하면서 값을 약간 섞을 ​​수 있습니다. 몇 가지 특이점을 사용하면 상황이 더 재정렬되지만 ... 그보다 더 멀리 갈 수학 have이 없습니다.
Wayne

1
당신이 표현하는 직감이 맞다고 생각합니다, 웨인 내가 해석 할 때 문제의 논리 는 정렬 된 변수의 산점도를 기반으로 원래 데이터에 대해 말할 수있는 것을 이해합니다 . 답은 별도의 (단 변량) 분포에서 유추 할 수있는 것 이상의 것이 아닙니다. 요점은 두 번째 그래프의 빨간색 점은 표시하는 데이터뿐만 아니라 천문학적으로 많은 수의 다른 데이터 순열 과도 일치하며 이러한 순열 중 어느 것이 맞습니다.
whuber

2
@ whuber 나는 여기서 중요한 차이점은 OP가 데이터를 "완전히 파괴해야"한다고 말했다. 수락 된 답변은 일반적으로 이러한 상황을 자세하게 보여줍니다. 이러한 방식으로 데이터를 처리 할 수 ​​없으며 결과가 의미가 있는지 전혀 알 수 없습니다. 그러나 관리자가 이전에 내 (카운터) 예제와 같은 예제를 다룰 수 있었고이 잘못된 변환이 실제로 결과를 개선한다는 것을 알았습니다. 따라서 우리는 관리자가 근본적으로 착각했지만 상당히 운이 좋았을 수도 있습니다. 운이 좋은 경우에는 효과가 있습니다.
Wayne

@ whuber : 토론과 관련이 있다고 생각되는 방식으로 답변에 대한 소개를 편집했습니다. 상사의 절차가 어떻게 그에게 효과적 이었는지를 인정하는 것이 상사의 경험에 얽매이지 않는보다 설득력있는 논쟁의 첫 단계가 될 수 있다고 생각합니다. 당신의 고려를 위해.
Wayne

-7

그가 변수를 모노톤으로 미리 선택했다면 실제로 상당히 강력합니다. Google "부적절한 선형 모델"및 "Robin Dawes"또는 "Howard Wainer" Dawes와 Wainer는 계수를 선택하는 다른 방법에 대해 이야기합니다. John Cook에는 짧은 열 ( http://www.johndcook.com/blog/2013/03/05/robustness-of-equal-weights/ )이 있습니다.


4
Cook이 블로그 게시물에서 논의한 내용은 x와 y를 서로 독립적으로 정렬 한 다음 회귀 모델을 정렬 된 변수에 맞추는 것과 다릅니다.
gung

4
OP의 사장님이하고있는 것은 "FInverse (G (x))에 의한 예측 (여기서 F와 G는 Y와 X의 전자 문서)"가 아닙니다. 내 답변의 코드에서 절차를 볼 수 있습니다.
gung

4
당신은 1. Dawes 및 / 또는 Wainer의 특정 논문에 대한 참조를 추가하고, 2. 그것이 상사의 분류 절차와 어떻게 관련되어 있는지 명확히합니까? 또는 부호가 정확하고 부호가 가정에 의해 정확하다면 계수의 값이 중요하지 않다면, 보스의 절차가 계수에 대해 이상한 값을주는 것이 중요하지 않다는 것이 요점입니까?
유호 코 칼라

2
1. 참고 문헌 :-Dawes, RM "의사 결정에있어 부적절한 선형 모델의 강력한 아름다움." 아 메르. Psychol. 34 번 7 (1979) : 571.-Wainer, H. "선형 모형의 추정 계수 : 신경 쓰지 않습니다." 정신병자 황소. 83 번 2 (1976) : 213.-Dawes, RM, & Corrigan, B. "의사 결정에서의 선형 모델." 정신병자 Bull., 81 95-106 (1974) 2. Dawes와 Wainer는 실제 데이터와 실제 예측 문제를 통해 평균으로부터의 편차 또는 순위와의 일치로 X에서 미래 Y를 예측하는 것이 매우 효과적이며 오히려 기울기에 민감하지 않습니다.
Bill Raynor

2
이러한 참조 및 설명은 의견에 묻히기보다는 답변에서 더 좋을 것입니다.
Scortchi

-8

나는 그것에 대해 생각했고 여기에 주문 통계를 기반으로 한 구조가 있다고 생각했습니다. 확인했는데, 관리자의 MO가 들리는 것처럼 견과류가 아닌 것 같습니다.

생체 신호 분석에 응용할 수있는 새로운 협회 측정으로서의 주문 통계 상관 계수

http://www.researchgate.net/profile/Weichao_Xu/publication/3320558_Order_Statistics_Correlation_Coefficient_as_a_Novel_Association_Measurement_With_Applications_to_Biosignal_Analysis/links/0912f507ed6f94a3c6000000.pdf

우리는 순서 통계와 재정렬 불평등에 기초한 새로운 상관 계수를 제안한다. 제안 된 계수는 Pearson의 선형 계수와 두 개의 순위 기반 계수, 즉 Spearman 's rho와 Kendall 's tau 사이의 절충을 나타냅니다. 이론적 도출은 우리의 계수가 세 가지 고전 계수와 동일한 기본 특성을 가지고 있음을 보여줍니다. 4 가지 모델과 6 가지 생체 신호를 기반으로 한 실험적 연구에 따르면 선형 연관성을 측정 할 때 계수가 두 순위 기반 계수보다 우수합니다. 반면 두 순위 기반 계수와 같은 단조 비선형 연관을 잘 감지 할 수 있습니다. 광범위한 통계 분석은 또한 새로운 계수가 우수한 노이즈 방지 견고성, 작은 바이어스,


14
이것은 질문이 설명하는 것이 아닙니다. 데이터가 주문 통계로 대체 될 때 데이터 은 항상 그대로 연결되어 있습니다. 이 질문은 이러한 연결을 파괴하고 공동 배포에 대한 모든 정보를 없애는 작업을 설명합니다.
whuber

반드시 그런 것은 아닙니다. 독립적 인 정렬이 결합 확률에 대한 모든 정보를 파괴하지 않는 데이터 세트를 구성 (또는 발생) 할 수 있습니다.
Daniel

5
그러한 것들이 수학적으로 가능한지, 실제로는 훨씬 덜 가능한지 알기 어렵 기 때문에 귀하의 주장에 대한 명백한 예를 알려주십시오.
whuber

@ whuber : 귀하의 질문을 충족시키는 실제 데이터 세트가있는 새로운 답변을 참조하십시오 ...
Wayne
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.