WITH min_date AS (
SELECT
player_id
, MIN(event_date) AS min_date
FROM
activity
GROUP BY
player_id
)
SELECT
ROUND(COALESCE(COUNT(a2.player_id), 0) / COUNT(DISTINCT a1.player_id), 2) AS fraction
FROM
activity a1
LEFT JOIN activity a2
ON a1.player_id = a2.player_id
AND DATEDIFF(a2.event_date, a1.event_date) = 1
JOIN min_date m
ON a1.player_id = m.player_id
AND a1.event_date = m.min_date
;
WITH FirstLogin AS (
SELECT
player_id,
MIN(event_date) AS first_log
FROM Activity
GROUP BY player_id
)
SELECT ROUND(COUNT(a.player_id)/COUNT(f.player_id),2) AS fraction
FROM FirstLogin f
LEFT JOIN Activity a
ON f.player_id = a.player_id
AND DATE_ADD(f.first_log, INTERVAL 1 DAY) = a.event_date
WITH Min_Date_CTE AS
(
SELECT
player_id,
MIN(event_date) AS event_date
FROM activity
GROUP BY player_id
)
SELECT
ROUND(COUNT(*) / (SELECT COUNT(*) FROM Min_Date_CTE), 2) AS fraction
FROM
Min_Date_CTE a JOIN Activity b
ON a.player_id = b.player_id
WHERE DATEDIFF(b.event_date, a.event_date) = 1;
SELECT
ROUND(
SUM(CASE WHEN DATEDIFF(event_date, min_event_date) = 1 THEN 1 ELSE 0 END)
/ COUNT(DISTINCT player_id),
2
) AS fraction
FROM (
SELECT
player_id,
event_date,
MIN(event_date) OVER (PARTITION BY player_id) AS min_event_date
FROM activity
) AS activity_with_min_date
def solution(arr1, arr2):
for i in range(len(arr1)):
for j in range(len(arr1[0])):
arr1[i][j] += arr2[i][j]
return arr1
zip()# 1
def solution(A,B):
answer = [[c + d for c, d in zip(a,b)] for a, b in zip(A,B)]
return answer
# 2
def sumMatrix(A,B):
return [list(map(sum, zip(*x))) for x in zip(A, B)]
import numpy as np
def sumMatrix(A,B):
A_np = np.array(A)
B_np = np.array(B)
result = A_np + B_np
return result.tolist()
def sumMatrix(A,B):
answer = [[A[i][j] + B[i][j] for j in range(len(A[0]))] for i in range(len(A))]
return answer
→ [ i for i in range(len(A))] 하면 [0,1]. 앞 i 자리에 [A[i][j] + B[i][j] for j in range(len(A[0]))]가 대신 들어갔으니 i가 사용될수 있겠죠. [j for j in range(len(A[0]))]] 또한 출력하면 [0,1]. A[i][j] + B[i][j]이 계산되면 i가 0 j가 0과 1일때 결과를 리스트에 넣어 반환하고, 바깥 리스트 내부에서 i가 1일때 또한번 반복됩니다.
A/B 테스트 제대로 이해하기: ②A/B 테스트를 위한 기초 통계 이해하기
7시 반 튜터님 사무실에서
ANSWER
데이터 분포, 이항분포 -> 히스토그램, 0~10
처음 이항분포는 0과 1의 선택확률이라서 0의 몇 번 1의 몇 번
동전의 경우 앞면이 나오는 횟수가 x
강의에서는 0~10으로 나오는데 제 생각에는 연속이 안 될 것 같아요.
동전 던져 앞면이 나온 횟수가 x축으로 들어가기 때문에 이진이 아니라 분포가 됩니다.
ANSWER
다중회귀모형에서의 계수값 해석 → 보통 회귀는 범주형 변수x(회귀가 가능한지부터 따져봐야 함) 수치형 데이터만 보통 적용합니다
ANSWER
-> 다중공선성 문제: 변수가 여러 개 앴을 때 변수가 서로 영향을 주는 경우
e.g. 몸무게와 bmi
이런 문제를 해결하기 위해 가장 간단하게 살 수 있는 건
상관관계 계산해서 변수간의 상관성이 높은 걸 제거하는 거
질문자: 송동민
1. 6강 재현가능성 유의수준을 0.005, 데이터 수를 70% 늘려서 보완 → 수학적 기반에 의한 수치인가요?
ANSWER
-> 최근 통계학계 동향에 따르면 0.05도 잘못될 수 있다
-> 최근 0.005가 논의되고 이슈가 되고 있음
-> 데이터 개수를 70% 늘리는 걸로 오류 해결하는데 있어서 합리적
유의수준을 낮춘다고 모두 해결되는 건 아니여서 그래요
1종오류와 2종오류의 중간 지점을 고르기(1종 피하려다 2종 만날 수 있음)
ANSWER
-> 가설을 계속 유리한 쪽으로(논문 쓰기 좋은 쪽으로) 의도적으로 바꾸어나가면 안 된다는 의미입니다
ANSWER
-> 데이터를 수집할수록 더 결과 신뢰성이 높아짐
-> 하지만 고의적으로 '원하는 결과를 얻었네? 수집 끝내자!'는 안 됨
100개를 수집하겠다고 처음 결정했으면 100개 전부 모아야
-> 데이터 개수를 정하지 않고 일단 더 많이 수집하다가 100개쯤 되었을 때 내가 원하는 결과가 나왔으니 멈추는 행동이 안 된다는 것!