1주차 내용정리 입니다.
복습할라고 작성했습니다.
1주차부터 바로 RStudio를 이용해, 자료를 다루어 보았습니다.
Sys.which("make")
getwd() #현재환경 디렉터리의 경로를 찾아주는 함수
setwd("/Users/chojunhwan/Desktop/202310342") #작업 디렉터리를 변경하는 함수
getwd()
library(psych) #psych의 패키지를 불러오는 함수
str(sat.act) #데이터 객체의 구조를 출력하는 함수
ability <- sat.act[c("ACT", "SATV", "SATQ")] #원본 데이터 프레임에서 ACT, SATV, SATQ 열의 데이터 프레임을 선택 후 생성
str(ability) #생성된 ability 데이터프레임을 출력
head(ability) # ability 데이터의 원본일부를 출력
alpha(ability) #데이터의 일관성 및 신뢰도 계산 함수
alpha(ability[c(2,3)]) # SATV와 SATQ열만을 이용한 계산
library(MASS) #MASS의 패키지를 불러오는 함수
str(survey) #survey데이터 객체의 구조를 불러오는 함수
levels(survey$Smoke) #Smoke열의 범주를 반환하는 명령
table(survey$Smoke) #Smoke열의 범주에 속하는 관측치수 측정
frqtab <- table(survey$Smoke) # ...관측치수를 frqtab로 생성
frqtab #생성된 데이터 확인
class(frqtab) #객체의 클래스를 확인
frqtab[2] #변수에서 2번째 원소를 확인
frqtab[c(1, 4)] #변수에서 1, 4번째 원소 선택,확인
frqtab==max(frqtab) #frqtab 변수의 최대값 비교연산
frqtab[frqtab==max(frqtab)] #위의 비교연산을 통해 최대값만 출력
names(frqtab[which.max(frqtab)]) #최대값을 가지는 원소이름을 출력
frqtab.prop <- prop.table(frqtab) #상대빈도를 계산하는 코드
frqtab.prop # 계산결과
frqtab.prop["Never"] #Never 값을 출력
frqtab.prop * 100 #상대빈도 x 100
survey$Smoke == "Never" #Smoke열 각행이 Never 범주에 속하는지 확인하는 코드
mean(survey$Smoke =="Never", na.rm = TRUE) # Smoke열의 값이 Never인 경우의 평균을 계산하는 코드
1주차 수업에서 작성하고 실행해본 코드입니다.
getwd() 함수는 R 언어에서 현재 작업 디렉토리(current working directory)를 가져오는 함수입니다.
현재 작업 디렉토리는 R 스크립트 또는 콘솔 세션에서 작업하고 있는 파일이나 디렉토리의 위치를 나타냅니다.
current_directory <- getwd()
이렇게 얻은 경로는 파일을 읽거나 쓸 때,
작업 디렉터리를 명시적으로 지정하지 않고도 상대경로를 사용할 수 있도록 도움을 줍니다.
setwd() 함수를 이용하여 작업 디렉터리를 변경할 수 있습니다.
setwd("/Users/chojunhwan/Desktop/202310342")
제 학번파일을 만들어 경로를 지정해줬습니다.
실행했을 때 출력값은 없습니다.
변경한 상태에서 getwd()을 입력하고 실행해봅시다.
> getwd()
[1] "/Users/chojunhwan/Desktop/202310342"
이렇게 제가 변경한 경로를 출력해줍니다.
library(psych) 명령어는 R언어에서 psych 패키지를 로드하는 명령어입니다.
psych 패키지는 다양한 통계 및 데이터 분석 작업을 수행하는 데 도움을 주는 R패키지 중 하나입니다.
이 패키지는 데이터 탐색, 요인분석, 상관분석, 스케일 개발 등을 지원합니다.
패키지를 로드하여 패키지의 함수와 기능을 사용할 수 있습니다.
아래 코드는 함수의 예시입니다.
library(psych)
# 요인 분석 수행
factor_analysis_result <- fa(data)
# 상관 분석 수행
correlation_matrix <- cor(data)
# 히스토그램 그리기
hist(data)
# 스케일 개발
scaled_data <- alpha(data)
str(sat.act)는 R언어에서 데이터 프레임 또는 객체 sat.act의 구조를 출력하는 함수입니다.
이 함수를 이용하면 해당 데이터 프레임의 열 이름, 데이터 유형 및 처음 몇 개의 관측치를 볼 수 있습니다.
이를 통해 데이터의 전반적인 구조를 파악할 수 있습니다.
> str(sat.act) #데이터 객체의 구조를 출력하는 함수
'data.frame': 700 obs. of 6 variables:
$ gender : int 2 2 2 1 1 1 2 1 2 2 ...
$ education: int 3 3 3 4 2 5 5 3 4 5 ...
$ age : int 19 23 20 27 33 26 30 19 23 40 ...
$ ACT : int 24 35 21 26 31 28 36 22 22 35 ...
$ SATV : int 500 600 480 550 600 640 610 520 400 730 ...
$ SATQ : int 500 500 470 520 550 640 500 560 600 800 ...
ability <- sat.act[c("ACT", "SATV", "SATQ")]는 R언어에서 데이터 프레임 sat.act에서 열을 선택하여
새로운 데이터 프레임 'ability'를 만드는 명령어 입니다.
sat.act는 원본 데이터 프레임입니다. 이 데이터 프레임은 여러 열을 포함합니다.
[c("ACT", "SATV", "SATQ")]는 데이터 프레임에서 선택하려는 열의 이름을 나타냅니다.
"ACT", "SATV", "SATQ"는 선택하려는 열의 이름입니다.
이렇게 ability 라는 데이터가 생성됩니다.
str(ability)를 통해 생성된 데이터 프레임 ability의 구조를 확인할 수 있습니다.
이 함수를 사용하면 데이터 프레임의 열 이름, 데이터 유형 및 처음 몇 개의 관측치를 볼 수 있습니다.
> str(ability) #생성된 ability 데이터프레임을 출력
'data.frame': 700 obs. of 3 variables:
$ ACT : int 24 35 21 26 31 28 36 22 22 35 ...
$ SATV: int 500 600 480 550 600 640 610 520 400 730 ...
$ SATQ: int 500 500 470 520 550 640 500 560 600 800 ...
여기서 700개의 행 수와 3개의 열수를 확인할 수 있습니다.
각 열의 이름은 ACT, SATV, SATQ 이며 데이터 유형은 숫자입니다. 처음 몇 개의 행 데이터도 표시되어 있죠.
이를 통해 ability 데이터 프레임의 구조를 이해할 수 있습니다.
head(ability)를 통해 데이터 프레임의 처음 몇 개의 행을 출력할 수 있습니다.
이를 통해 데이터 프레임의 내용을 확인할 수 있습니다.
> head(ability) # ability 데이터의 원본일부를 출력
ACT SATV SATQ
29442 24 500 500
29457 35 600 500
29498 21 480 470
29503 26 550 520
29504 31 600 550
29518 28 640 640
alpha() 는 함수는 R의 psych 패키지에 속한 함수 중 하나로, 주어진 데이터 프레임의 내부 일관성 또는 신뢰도를 계산하는 데 사용됩니다. 일반적으로 이 함수는 설문 조사 항목 또는 테스트 항목의 상호 연관성을 측정하고, 이를 통해 신뢰성을 평가하는 데 사용됩니다.
예를 들어, alpha(ability)를 실행하면 ability 데이터 프레임의 열 간의 상관 관계를 기반으로
내부 일관성 (Cronbach's alpha)을 계산하고 결과를 출력합니다.
ability 데이터 프레임은 "ACT", "SATV", "SATQ" 열을 포함하며,
이 함수는 이 열들 간의 상호 연관성을 분석하여 신뢰도를 측정합니다.
계산 결과는 내부 일관성을 나타내는 값으로, 0과 1 사이의 값을 가집니다.
일반적으로 내부 일관성이 높을수록 값이 1에 가깝습니다.
이 결과를 해석하여 테스트나 설문 조사 항목의 신뢰도를 평가할 수 있습니다.
> alpha(ability) #데이터의 일관성 및 신뢰도 계산 함수
Number of categories should be increased in order to count frequencies.
Reliability analysis
Call: alpha(x = ability)
raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
0.61 0.82 0.75 0.6 4.5 0.012 415 71
median_r
0.59
95% confidence boundaries
lower alpha upper
Feldt 0.56 0.61 0.66
Duhachek 0.59 0.61 0.64
Reliability if an item is dropped:
raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r
ACT 0.785 0.79 0.65 0.65 3.7 0.0162 NA
SATV 0.093 0.74 0.59 0.59 2.9 0.0046 NA
SATQ 0.091 0.72 0.56 0.56 2.6 0.0049 NA
med.r
ACT 0.65
SATV 0.59
SATQ 0.56
Item statistics
n raw.r std.r r.cor r.drop mean sd
ACT 700 0.64 0.84 0.70 0.63 29 4.8
SATV 700 0.89 0.86 0.75 0.65 612 112.9
SATQ 687 0.91 0.87 0.78 0.66 610 115.6
`alpha(ability)`의 실행 결과는 내부 일관성 (Cronbach's alpha) 분석에 대한 정보를 제공합니다. 이 결과를 해석해보겠습니다.
1. Raw Alpha: `raw_alpha` 값은 데이터 프레임 `ability`의 열 간의 상호 연관성을 나타내는 내부 일관성 측정치입니다.
이 값은 0과 1 사이의 범위에서 나타나며, 일반적으로 높을수록 데이터 항목 간의 상호 연관성이 높다는 것을 나타냅니다.
여기서 `raw_alpha` 값은 약 0.61로, 중간 정도의 내부 일관성을 가진다고 볼 수 있습니다.
2. Standardized Alpha (std.alpha): `std.alpha`는 `raw_alpha`를 표준화한 값으로, 마찬가지로 내부 일관성을 나타냅니다.
여기서 `std.alpha` 값은 약 0.82로, 표준화된 내부 일관성이 상대적으로 더 높다고 볼 수 있습니다.
3. G6(smc): `G6(smc)`는 다른 내부 일관성 지표로, 약 0.75로 나타났습니다.
4. Average R (average_r): `average_r`은 항목 간의 평균 상관 관계를 나타내며, 약 0.6으로 나타났습니다.
5. Signal-to-Noise Ratio (S/N): `S/N`은 신호 대 잡음 비율을 나타내는 지표로, 높을수록 더 좋습니다. 여기서 `S/N` 값은 4.5입니다.
6. Item Statistics : "ACT", "SATV", "SATQ" 항목에 대한 통계 정보가 제공됩니다.
이 항목들의 평균, 표준 편차, 상관 관계 등이 나타나며, 각 항목의 상관 관계와 내부 일관성을 확인하는 데 도움이 됩니다.
7. 95% Confidence Boundaries : 신뢰도에 대한 95% 신뢰 구간이 제공됩니다.
예를 들어, "Feldt"의 경우 신뢰도(알파)의 하한과 상한 값이 나타납니다.
8. Reliability if an item is dropped : 각 항목("ACT", "SATV", "SATQ")이 제거되었을 때의 내부 일관성을 나타냅니다.
이 값들은 해당 항목을 제외한 상황에서의 신뢰도를 나타냅니다.
이 결과를 종합적으로 해석하면, "ACT", "SATV", "SATQ" 항목들을 함께 사용하는 경우,
약 0.61 정도의 내부 일관성을 가지며, 표준화된 내부 일관성은 약 0.82입니다.
이것은 중간 정도에서 높은 신뢰도를 나타냅니다.
또한, 각 항목의 개별적인 통계 정보도 확인할 수 있습니다.
`alpha(ability[c(2, 3)])`를 실행하면 `ability` 데이터 프레임에서 "SATV"와 "SATQ" 열만을 사용하여
내부 일관성 (Cronbach's alpha)을 다시 계산합니다.
이것은 선택한 열만을 고려하여 데이터의 내부 일관성을 평가하는 것입니다.
결과는 이전의 `alpha(ability)` 실행 결과와 비교하여 선택한 열만을 고려한 내부 일관성을 보여줄 것입니다.
선택한 열의 상호 관계를 기반으로 한 내부 일관성을 확인할 수 있습니다.
> alpha(ability[c(2,3)]) # SATV와 SATQ열만을 이용한 계산
Number of categories should be increased in order to count frequencies.
Reliability analysis
Call: alpha(x = ability[c(2, 3)])
raw_alpha std.alpha G6(smc) average_r S/N ase mean sd
0.79 0.79 0.65 0.65 3.7 0.016 611 104
median_r
0.65
95% confidence boundaries
lower alpha upper
Feldt 0.75 0.79 0.81
Duhachek 0.75 0.79 0.82
Reliability if an item is dropped:
raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r
SATV 0.63 0.65 0.42 0.65 1.8 NA 0
SATQ 0.66 0.65 0.42 0.65 1.8 NA 0
med.r
SATV 0.65
SATQ 0.65
Item statistics
n raw.r std.r r.cor r.drop mean sd
SATV 700 0.91 0.91 0.73 0.65 612 113
SATQ 687 0.91 0.91 0.73 0.65 610 116
`alpha(ability[c(2, 3)])`의 결과를 이전의 `alpha(ability)` 결과와 비교해보겠습니다
이전 결과 (`alpha(ability)`)
- `raw_alpha`: 약 0.61
- `std.alpha`: 약 0.82
- `average_r`: 약 0.6
- `S/N`: 4.5
새로운 결과 (`alpha(ability[c(2, 3)])`)
- `raw_alpha`: 약 0.79
- `std.alpha`: 약 0.79
- `average_r`: 약 0.65
- `S/N`: 3.7
"SATV"와 "SATQ" 열만을 고려한 새로운 결과는 이 두 항목 간의 상호 연관성을 나타내며,
이전 결과보다 더 높은 내부 일관성을 보입니다. `raw_alpha`와 `std.alpha` 값이 모두 약 0.79로 더 높게 나타납니다.
- "average_r" 값도 더 높게 나타나 약 0.65입니다.
하지만 "S/N" 값은 이전 결과에서 높은 값을 가지던 4.5에서 3.7로 낮아진 것을 볼 수 있습니다.
이러한 결과는 "SATV"와 "SATQ" 열만을 고려한 경우, 이 두 항목 간의 상호 연관성이 높아진다는 것을 나타냅니다.
이것은 두 항목이 서로 관련이 높고, 이러한 관련성이 내부 일관성을 높이는 데 기여한다고 볼 수 있습니다.
그러나 "S/N" 값이 낮아진 것은 두 항목의 상관성이 높아져서 일부 정보 중복이 발생하고 있는 것을 나타낼 수 있습니다.
결과를 해석할 때, 내부 일관성 측정치는 해당 데이터와 연구 목적에 따라 해석되어야 합니다.
두 항목을 함께 사용하면 일반적으로 더 높은 내부 일관성이 있지만,
항목 간의 관련성과 연구 목적에 따라 적절한 항목을 선택하는 것이 중요합니다.
`library(MASS)` 명령어는 R 언어에서 'MASS' 패키지를 로드하는 명령입니다.
'MASS' 패키지는 데이터 세트를 포함하고 있습니다.
이 패키지는 다양한 통계 분석 기법을 지원합니다.
`library(MASS)`를 실행하면 'MASS' 패키지가 로드되어 패키지에 포함된 함수와 데이터에 접근할 수 있게 됩니다.
이를 통해 통계 분석 및 데이터 분석 작업을 수행하는 데 도움을 받을 수 있습니다.
패키지의 함수를 호출하고 데이터를 활용하여 데이터 분석 및 통계적 모델링을 수행할 수 있습니다.
`str(survey)`는 'MASS' 패키지에 포함된 'survey' 데이터셋의 구조를 출력하는 명령입니다. 이를 통해 데이터셋의 열 이름, 데이터 유형 및 처음 몇 개의 관측치를 확인할 수 있습니다.
예를 들어, `str(survey)`를 실행하면 'survey' 데이터셋의 구조가 출력됩니다. 이 데이터셋은 통계적 예제 데이터로, 여러 특성을 포함하고 있으며 데이터 분석 및 통계 모델링 연습에 사용될 수 있습니다.
구조 출력은 다음과 유사한 정보를 제공할 것입니다
> str(survey) #survey데이터 객체의 구조를 불러오는 함수
'data.frame': 237 obs. of 12 variables:
$ Sex : Factor w/ 2 levels "Female","Male": 1 2 2 2 2 1 2 1 2 2 ...
$ Wr.Hnd: num 18.5 19.5 18 18.8 20 18 17.7 17 20 18.5 ...
$ NW.Hnd: num 18 20.5 13.3 18.9 20 17.7 17.7 17.3 19.5 18.5 ...
$ W.Hnd : Factor w/ 2 levels "Left","Right": 2 1 2 2 2 2 2 2 2 2 ...
$ Fold : Factor w/ 3 levels "L on R","Neither",..: 3 3 1 3 2 1 1 3 3 3 ...
$ Pulse : int 92 104 87 NA 35 64 83 74 72 90 ...
$ Clap : Factor w/ 3 levels "Left","Neither",..: 1 1 2 2 3 3 3 3 3 3 ...
$ Exer : Factor w/ 3 levels "Freq","None",..: 3 2 2 2 3 3 1 1 3 3 ...
$ Smoke : Factor w/ 4 levels "Heavy","Never",..: 2 4 3 2 2 2 2 2 2 2 ...
$ Height: num 173 178 NA 160 165 ...
$ M.I : Factor w/ 2 levels "Imperial","Metric": 2 1 NA 2 2 1 1 2 2 2 ...
$ Age : num 18.2 17.6 16.9 20.3 23.7 ...
이 출력에서는 'survey' 데이터셋이 12개의 열로 구성되어 있고 각 열의 이름과 데이터 유형을 보여줍니다.
"Sex", "Wr.Hnd", "NW.Hnd" 등 각 열은 해당 열에 저장된 데이터의 특성을 나타냅니다.
이 정보를 기반으로 데이터셋을 이해하고 분석 작업을 수행할 수 있습니다.
`levels(survey$Smoke)`는 'survey' 데이터셋에서 'Smoke' 열의 범주(카테고리)를 반환하는 명령입니다. 이 명령을 실행하면 'Smoke' 열에 있는 고유한 범주(흡연 여부)를 확인할 수 있습니다.
`levels(survey$Smoke)`를 실행하면 다음과 유사한 결과를 얻을 수 있습니다:
> levels(survey$Smoke) #Smoke열의 범주를 반환하는 명령
[1] "Heavy" "Never" "Occas" "Regul"
위의 결과에서는 'Smoke' 열의 범주로 "Heavy", "Never", "Occasional", "Regular"이라는 네 가지 범주가 나타납니다.
이것은 'survey' 데이터셋에서 각 행이 흡연 여부를 나타내는 범주 중 하나에 속한다는 것을 의미합니다.
이 정보를 통해 흡연과 관련된 데이터 분석 작업을 수행할 수 있습니다.
`frqtab <- table(survey$Smoke)`는 'survey' 데이터셋에서 'Smoke' 열의 범주를 세어서 `frqtab` 변수에 저장하는 명령입니다. 이렇게 하면 `frqtab` 변수에는 각 범주의 빈도수가 저장됩니다.
`frqtab` 변수에 저장된 결과를 출력하려면 `frqtab`을 호출하면 됩니다.
`frqtab`을 실행하면 다음과 유사한 결과를 얻을 수 있습니다.
> frqtab <- table(survey$Smoke) # ...관측치수를 frqtab로 생성
> frqtab #생성된 데이터 확인
Heavy Never Occas Regul
11 189 19 17
위의 결과에서는 'Smoke' 열의 범주인 "Heavy", "Never", "Occas", "Regular"에 대한 빈도수가 출력되었습니다.
이제 `frqtab` 변수를 사용하여 이 정보를 데이터 분석이나 시각화에 활용할 수 있습니다.
`class(frqtab)`는 R에서 변수 또는 객체의 클래스(데이터 유형)를 확인하는 명령입니다.
`frqtab` 변수는 `table` 함수에 의해 생성된 결과이며, 클래스는 "table"입니다.
따라서 `class(frqtab)`를 실행하면 다음과 같이 "table"이라는 결과가 출력될 것입니다
> class(frqtab) #객체의 클래스를 확인
[1] "table"
이것은 `frqtab` 변수가 "table" 클래스의 객체임을 나타냅니다.
이 클래스는 표 형태의 데이터 빈도수나 분포를 저장하는 데 사용되며,
주로 범주형 데이터에 대한 빈도수를 계산할 때 유용합니다.
frqtab[2]는 frqtab에서 두번 째 원소를 선택합니다.
> frqtab[2]
Never
189
frqtab[c(1, 4)]는 frqtab에서 1번째, 4번째 원소를 선택합니다.
> frqtab[c(1, 4)]
Heavy Regul
11 17
`frqtab == max(frqtab)`는 변수 내의 원소 중에서 최대값과 동일한 값을 가지는 원소를 찾는 논리적 비교 연산입니다.
즉, 각 원소가 최대값과 동일한지 여부를 판단하여 논리적인 결과를 반환합니다.
`frqtab` 변수가 다음과 같은 값을 가진다고 출력되었습니다.
> frqtab <- table(survey$Smoke) # ...관측치수를 frqtab로 생성
> frqtab #생성된 데이터 확인
Heavy Never Occas Regul
11 189 19 17
이 경우, `max(frqtab)`는 189이므로 `frqtab == max(frqtab)`는 다음과 같은 결과를 반환합니다:
> frqtab==max(frqtab)
Heavy Never Occas Regul
FALSE TRUE FALSE FALSE
즉, "Heavy", "Occas", "Regul" 범주는 최대값과 동일하지 않기 때문에 `FALSE`이고,
"Never" 범주는 최대값과 동일하기 때문에 `TRUE`입니다.
이렇게 논리적 비교를 사용하면 데이터에서 최댓값을 가지는 원소를 식별하는 데 도움이 될 수 있습니다.
`frqtab[frqtab == max(frqtab)]`는 `frqtab` 변수에서 최대값을 가지는 원소(범주)를 선택하는 R 코드입니다.
이 코드는 논리적 비교를 사용하여 최대값을 가지는 범주를 찾고, 그 결과에 해당하는 범주를 선택합니다.
`frqtab` 변수가 다음과 같은 값을 가진다고 출력되었습니다.
> frqtab <- table(survey$Smoke) # ...관측치수를 frqtab로 생성
> frqtab #생성된 데이터 확인
Heavy Never Occas Regul
11 189 19 17
이 경우, `max(frqtab)`는 189이므로 `frqtab == max(frqtab)`는 다음과 같은 논리적 벡터를 생성합니다:
> frqtab==max(frqtab)
Heavy Never Occas Regul
FALSE TRUE FALSE FALSE
그리고 `frqtab[frqtab == max(frqtab)]` 코드는 `TRUE`에 해당하는 범주인 "Never"을 선택하여 다음과 같은 결과를 반환합니다:
> frqtab[frqtab==max(frqtab)]
Never
189
따라서 이 코드를 실행하면 최대 빈도수를 가지는 범주 "Never"에 해당하는 빈도수 189가 반환됩니다.
`which.max(frqtab)`를 사용하여 `frqtab`에서 최대값을 가지는 원소(범주)의 위치를 찾은 다음,
`names()` 함수를 사용하여 해당 위치의 원소(범주)의 이름을 추출하는 코드입니다.
`which.max(frqtab)`는 `frqtab`에서 최대값을 가지는 원소의 인덱스(위치)를 반환합니다.
그런 다음 `names()` 함수를 사용하여 해당 인덱스에 해당하는 원소(범주)의 이름을 추출합니다.
`frqtab` 변수가 다음과 같은 값을 가진다고 출력되었습니다.
> frqtab <- table(survey$Smoke) # ...관측치수를 frqtab로 생성
> frqtab #생성된 데이터 확인
Heavy Never Occas Regul
11 189 19 17
이 경우, `which.max(frqtab)`는 2를 반환하며,
`names(frqtab[which.max(frqtab)])` 코드는 `frqtab`에서 2번째 위치에 있는 범주의 이름을 반환합니다.
따라서 위 코드를 실행하면 "Never"이라는 결과가 반환됩니다.
이것은 `frqtab`에서 최대 빈도수를 가지는 범주인 "Never"의 이름을 나타냅니다.
> names(frqtab[which.max(frqtab)])
[1] "Never"
`prop.table(frqtab)`은 `frqtab` 변수를 사용하여 상대 빈도를 계산하고, 그 결과를 `frqtab.prop` 변수에 저장하는 코드입니다. 상대 빈도는 각 범주의 빈도를 전체 빈도의 합으로 나눈 값으로, 각 범주가 전체에서 차지하는 비율을 나타냅니다.
`frqtab` 변수가 다음과 같은 값을 가진다고 출력되었습니다.
> frqtab <- table(survey$Smoke) # ...관측치수를 frqtab로 생성
> frqtab #생성된 데이터 확인
Heavy Never Occas Regul
11 189 19 17
이 경우, `prop.table(frqtab)` 코드를 실행하면 다음과 같은 결과가 생성됩니다:
> frqtab.prop <- prop.table(frqtab)
> frqtab.prop
Heavy Never Occas Regul
0.04661017 0.80084746 0.08050847 0.07203390
위 결과에서는 각 범주의 상대 빈도가 나타납니다. 예를 들어, "Never" 범주의 상대 빈도는 0.80084746으로,
전체 빈도 중에서 80%를 나타냅니다.
이러한 상대 빈도 정보를 사용하면 범주 간 비교나 시각화를 수행할 때 유용하며,
각 범주의 상대적 중요성을 파악하는 데 도움이 됩니다.
`frqtab.prop["Never"]`는 `frqtab.prop` 변수에서 "Never" 범주의 상대 빈도를 선택하는 코드입니다.
`frqtab.prop` 변수에는 각 범주의 이름과 해당 범주의 상대 빈도가 저장되어 있습니다.
> frqtab.prop <- prop.table(frqtab)
> frqtab.prop
Heavy Never Occas Regul
0.04661017 0.80084746 0.08050847 0.07203390
이 경우, `frqtab.prop["Never"]` 코드를 실행하면 "Never" 범주의 상대 빈도인 0.80084746이 선택됩니다.
따라서 위 코드를 실행하면 "Never" 범주의 상대 빈도를 반환합니다.
이것은 "Never" 범주가 전체 빈도 중에서 차지하는 비율을 나타내며, 이 경우에는 0.80084746 또는 80%입니다.
> frqtab.prop["Never"]
Never
0.8008475
frqtab.prop * 100 는 간단히 frqtab.prop의 데이터에 각각 100을 곱하는 코드입니다.
> frqtab.prop * 100
Heavy Never Occas Regul
4.661017 80.084746 8.050847 7.203390
`survey$Smoke == "Never"`는 'survey' 데이터셋에서 'Smoke' 열의 각 행이 "Never" 범주에 속하는지 여부를 나타내는
논리적 벡터를 생성하는 코드입니다.
이 코드를 실행하면 'Smoke' 열의 각 행에 대해 "Never" 범주와 일치하는지 여부를 확인한 결과가 생성됩니다.
결과는 논리적 값인 `TRUE` 또는 `FALSE`로 표시됩니다.
예를 들어, `survey$Smoke` 열에서 몇몇 행이 "Never" 범주에 속하는 경우에는 `TRUE`가 반환되고,
그렇지 않은 경우에는 `FALSE`가 반환됩니다.
이렇게 생성된 논리적 벡터는 데이터 필터링, 부분집합 선택 또는 조건부 연산 등의 다양한 데이터 분석 작업에 사용될 수 있습니다.
예를 들어, `subset(survey, survey$Smoke == "Never")`와 같은 코드를 사용하여
"Never" 범주에 해당하는 행만 선택할 수 있습니다.
> survey$Smoke == "Never"
[1] TRUE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
[10] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[19] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[28] TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALSE FALSE
[37] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
[46] TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
[55] FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
[64] TRUE TRUE TRUE TRUE TRUE TRUE NA TRUE FALSE
[73] TRUE TRUE TRUE FALSE TRUE FALSE TRUE TRUE TRUE
[82] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[91] TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE TRUE
[100] TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE
[109] TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[118] FALSE TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
[127] TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE TRUE
[136] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[145] TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE
[154] TRUE TRUE TRUE FALSE TRUE TRUE FALSE TRUE TRUE
[163] TRUE FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
[172] FALSE FALSE TRUE TRUE TRUE FALSE TRUE FALSE TRUE
[181] FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[190] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
[199] FALSE TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE
[208] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[217] TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE
[226] TRUE FALSE TRUE FALSE FALSE TRUE TRUE TRUE TRUE
[235] TRUE TRUE TRUE
`mean(survey$Smoke == "Never", na.rm = TRUE)`는
'survey' 데이터셋에서 'Smoke' 열의 값이 "Never"인 경우의 평균을 계산하는 코드입니다.
이 코드는 다음과 같이 작동합니다:
`survey$Smoke == "Never"`: 'Smoke' 열의 각 행에 대해 "Never" 범주와 일치하는지 여부를 확인한 논리적 벡터를 생성합니다. `TRUE`는 "Never" 범주에 속하는 경우를 나타내고, `FALSE`는 그렇지 않은 경우를 나타냅니다.
`mean(...)`: 논리적 벡터에서 `TRUE` 값의 평균을 계산합니다. 즉, "Never" 범주에 속하는 경우의 평균을 계산합니다.
`na.rm = TRUE` 인수를 사용하면 결측값 (NA)을 무시하고 평균을 계산합니다.
이렇게 하면 결측값이 포함된 행이 평균 계산에서 제외됩니다.
따라서 이 코드를 실행하면 'survey' 데이터셋에서 'Smoke' 열의 값이 "Never"인 경우의 평균을 얻을 수 있습니다.
결과는 0 또는 1 사이의 값이며, "Never" 범주에 속하는 경우의 평균을 나타냅니다.
> mean(survey$Smoke =="Never", na.rm = TRUE)
[1] 0.8008475
긴 글 읽어주셔서 감사합니다.
'🌐 R language' 카테고리의 다른 글
R - 3주차 내용정리 (2) | 2023.10.16 |
---|---|
R - 2주차 내용정리 (0) | 2023.10.01 |
R 언어 - RTOOLS43 설치하기 (0) | 2023.09.14 |
R 스튜디오 인터페이스 설명 (0) | 2023.09.08 |
R STUDIO 설치하기 (0) | 2023.09.08 |